From 23c1ee2e9651311a66fb5da33dfcd872e44842a2 Mon Sep 17 00:00:00 2001 From: theluyuan <1162963624@qq.com> Date: Sat, 21 Feb 2026 19:57:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=89=20search=5Fbtn=20=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E9=9C=80=E9=AA=8C=E8=AF=81=EF=BC=8C=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E5=90=8E=E7=AD=8910=E7=A7=92=E5=86=8D=E5=88=A4?= =?UTF-8?q?=E6=96=AD=EF=BC=8C=E6=9C=AA=E9=80=9A=E8=BF=87=E5=88=99=E5=88=B7?= =?UTF-8?q?=E6=96=B0=E9=87=8D=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- main.py | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) 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__":