按 search_btn 判断是否需验证,验证后等10秒再判断,未通过则刷新重试
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
43
main.py
43
main.py
@@ -15,6 +15,18 @@ from cookies_loader import (
|
||||
TARGET_URL = "https://dash.cloudflare.com/sign-up"
|
||||
|
||||
|
||||
async def get_search_btn_value(page):
|
||||
"""获取 #search_btn 的 value,用于判断是否需要验证。"""
|
||||
try:
|
||||
el = await page.query_selector("#search_btn")
|
||||
if el is None:
|
||||
return None
|
||||
raw = await el.get_attribute("value")
|
||||
return (raw or "").strip()
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
|
||||
async def try_click_cf_turnstile(page):
|
||||
"""
|
||||
通过截图+模板匹配定位 CF Turnstile 复选框并点击(与语言无关)。
|
||||
@@ -76,17 +88,30 @@ async def main():
|
||||
else:
|
||||
page = await browser.get(TARGET_URL)
|
||||
|
||||
# 等待 CF 自动通过(约 3~8 秒)
|
||||
await page.sleep(15)
|
||||
# 若仍为挑战页,尝试点击 Turnstile
|
||||
await try_click_cf_turnstile(page)
|
||||
await page.sleep(3)
|
||||
while True:
|
||||
# 进入页面后等待一下再判断
|
||||
await page.sleep(2)
|
||||
val = await get_search_btn_value(page)
|
||||
if val == "给我搜":
|
||||
# 不需要验证,直接结束
|
||||
await browser.stop()
|
||||
return
|
||||
|
||||
# 后续可在此对 page 做操作,或保存截图等
|
||||
# await page.save_screenshot("bypass_result.png")
|
||||
# content = await page.get_content()
|
||||
# 需要验证:等待 CF 自动通过后尝试点击 Turnstile
|
||||
await page.sleep(15)
|
||||
await try_click_cf_turnstile(page)
|
||||
await page.sleep(3)
|
||||
|
||||
return page
|
||||
# 验证后等 10 秒看是否变为「给我搜」
|
||||
await page.sleep(10)
|
||||
val_after = await get_search_btn_value(page)
|
||||
if val_after == "给我搜":
|
||||
# 已通过,关闭程序
|
||||
await browser.stop()
|
||||
return
|
||||
|
||||
# 仍未通过,刷新页面重新走验证
|
||||
page = await browser.get(TARGET_URL)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user