按 search_btn 判断是否需验证,验证后等10秒再判断,未通过则刷新重试

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-02-21 19:57:41 +08:00
parent 47ba116ba1
commit 23c1ee2e96

43
main.py
View File

@@ -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__":