按 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"
|
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):
|
async def try_click_cf_turnstile(page):
|
||||||
"""
|
"""
|
||||||
通过截图+模板匹配定位 CF Turnstile 复选框并点击(与语言无关)。
|
通过截图+模板匹配定位 CF Turnstile 复选框并点击(与语言无关)。
|
||||||
@@ -76,17 +88,30 @@ async def main():
|
|||||||
else:
|
else:
|
||||||
page = await browser.get(TARGET_URL)
|
page = await browser.get(TARGET_URL)
|
||||||
|
|
||||||
# 等待 CF 自动通过(约 3~8 秒)
|
while True:
|
||||||
await page.sleep(15)
|
# 进入页面后等待一下再判断
|
||||||
# 若仍为挑战页,尝试点击 Turnstile
|
await page.sleep(2)
|
||||||
await try_click_cf_turnstile(page)
|
val = await get_search_btn_value(page)
|
||||||
await page.sleep(3)
|
if val == "给我搜":
|
||||||
|
# 不需要验证,直接结束
|
||||||
|
await browser.stop()
|
||||||
|
return
|
||||||
|
|
||||||
# 后续可在此对 page 做操作,或保存截图等
|
# 需要验证:等待 CF 自动通过后尝试点击 Turnstile
|
||||||
# await page.save_screenshot("bypass_result.png")
|
await page.sleep(15)
|
||||||
# content = await page.get_content()
|
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__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
Reference in New Issue
Block a user