This commit is contained in:
2025-11-21 12:41:26 +08:00
parent 6512076ad8
commit fab175ca5f

View File

@@ -152,7 +152,7 @@ class Auto:
# 刷新网页 # 刷新网页
self.tab.refresh() self.tab.refresh()
self.tab.wait(1.5) self.tab.wait(1.5)
bol = self.tab.ele( bol = self.tab.ele(
't:h2@text()=You are being rate limited', timeout=1) 't:h2@text()=You are being rate limited', timeout=1)
if bol: if bol:
@@ -484,14 +484,31 @@ def get_random_proxy() -> list[str] | None:
list[str] | None: 代理参数列表 `[host, port, user, pwd]`;无可用代理返回 None list[str] | None: 代理参数列表 `[host, port, user, pwd]`;无可用代理返回 None
""" """
proxy_list = [ proxy_list = [
"us.novproxy.io:1000:ozua8623-region-CA:6wdcv4gq", "us.novproxy.io:1000:zhiyu111-region-CA:zhiyu111",
"us.novproxy.io:1000:ozua8623-region-US:6wdcv4gq", "us.novproxy.io:1000:zhiyu111-region-US:zhiyu111",
"us.novproxy.io:1000:zhiyu222-region-CA:zhiyu222",
"us.novproxy.io:1000:zhiyu222-region-US:zhiyu222",
] ]
try: try:
return random.choice(proxy_list).split(':') return random.choice(proxy_list).split(':')
except Exception: except Exception:
return None return None
def get_all_proxies() -> list[list[str]]:
"""
返回固定代理列表(与提供的代理一一对应)
返回值:
list[list[str]]: 每个元素为 `[host, port, user, pwd]`
"""
proxy_list = [
"us.novproxy.io:1000:zhiyu111-region-CA:zhiyu111",
"us.novproxy.io:1000:zhiyu111-region-US:zhiyu111",
"us.novproxy.io:1000:zhiyu222-region-CA:zhiyu222",
"us.novproxy.io:1000:zhiyu222-region-US:zhiyu222",
]
return [p.split(":") for p in proxy_list]
"""指纹浏览器操作""" """指纹浏览器操作"""
# 创建指纹浏览器 # 创建指纹浏览器
@@ -631,7 +648,87 @@ def run_random_ips_concurrently(num: int):
logger.info("随机 IP 并发流程执行完成") logger.info("随机 IP 并发流程执行完成")
def create_fingerprint_browser_with_proxy(proxy: list[str]):
"""
使用指定代理创建指纹浏览器并执行一次流程(一一对应)
参数:
proxy (list[str]): `[host, port, user, pwd]`
"""
browser_id = None
try:
if not proxy or len(proxy) < 4:
logger.error("代理参数不完整,结束该线程")
return
browser_id = bit_browser.bit_browser_create(
remark=f"{proxy[2]}",
host=proxy[0],
port=proxy[1],
proxy_user=proxy[2],
proxy_pwd=proxy[3],
proxy_type='socks5'
)
http = bit_browser.bit_browser_open(browser_id)
auto = Auto(http)
auto.open_url(
"https://veritaconnect.ca/canadianbreadsettlement/en-us/Claimant/UnknownClaimForm")
bol = auto.wait_home()
if not bol:
logger.error("进入首页失败,结束该线程")
return
bol = auto.click_continue()
if not bol:
logger.error("点击 Continue 失败,结束该线程")
return
auto.fill_questionnaire()
finally:
if browser_id:
try:
bit_browser.bit_browser_close(browser_id)
except Exception as e:
logger.error(f"关闭浏览器异常: {e}")
try:
bit_browser.bit_browser_delete(browser_id)
except Exception as e:
logger.error(f"删除浏览器异常: {e}")
def run_proxies_forever(proxy: list[str]):
"""
持续使用指定代理执行流程:完成后关闭并删除浏览器再重建
参数:
proxy (list[str]): `[host, port, user, pwd]`
"""
while True:
try:
create_fingerprint_browser_with_proxy(proxy)
except Exception as e:
logger.error(f"固定代理流程异常: {e}")
time.sleep(2)
def run_all_proxies_concurrently():
"""
按固定代理列表一一创建并发浏览器
"""
import threading
proxies = get_all_proxies()
if not proxies:
logger.warning("未找到可用代理,结束执行")
return
threads = []
for i, proxy in enumerate(proxies):
t = threading.Thread(target=run_proxies_forever, args=(proxy,), name=f"proxy-thread-{i}")
t.start()
threads.append(t)
logger.info(f"固定代理线程 {i} 已启动: {proxy[0]}:{proxy[1]} @ {proxy[2]}")
for t in threads:
t.join()
logger.info("固定代理并发流程执行完成")
if __name__ == "__main__": if __name__ == "__main__":
# auto = Auto() # auto = Auto()
# auto.get_random_food('a') # auto.get_random_food('a')
run_all_cities_concurrently(1) run_all_proxies_concurrently()