diff --git a/main.py b/main.py index 86effaa..cdd8186 100644 --- a/main.py +++ b/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__":