0.1.2
This commit is contained in:
105
spider/main.py
105
spider/main.py
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user