You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SeleniumBase绕过Ingatlan网站Cloudflare Turnstile时陷入循环的问题

解决Ingatlan网站Cloudflare Turnstile验证循环问题

问题代码

from seleniumbase import Driver
import time
driver = Driver(uc=True)
url = "https://ingatlan.com/35386626"
driver.uc_open_with_reconnect(url, 4)
time.sleep(15)
driver.uc_gui_click_captcha()
time.sleep(60)

问题描述

使用上述代码绕过Ingatlan网站的Cloudflare Turnstile验证时,脚本陷入循环:点击复选框后验证会重新加载,但同一会话中手动操作可正常完成验证。


解决方案

1. 替换固定等待为显式等待,精准控制操作时机

固定time.sleep()无法适配Cloudflare验证的动态加载节奏,过早或过晚操作都会触发二次验证。改用SeleniumBase的显式等待,确保元素就绪后再执行操作:

from seleniumbase import Driver
from seleniumbase.common.exceptions import NoSuchElementException

driver = Driver(uc=True)
url = "https://ingatlan.com/35386626"
driver.uc_open_with_reconnect(url, 4)

try:
    # 等待Turnstile验证iframe加载完成
    driver.wait_for_element_present('iframe[title="Widget containing a Cloudflare security challenge"]', timeout=20)
    # 切换到验证iframe
    driver.switch_to.frame(driver.find_element('iframe[title="Widget containing a Cloudflare security challenge"]'))
    # 等待复选框可点击后再点击
    driver.wait_for_element_clickable('input[type="checkbox"]', timeout=10)
    driver.click('input[type="checkbox"]')
    # 切回主文档,等待验证完成(验证iframe消失)
    driver.switch_to.default_content()
    driver.wait_for_element_not_present('iframe[title="Widget containing a Cloudflare security challenge"]', timeout=30)
except NoSuchElementException:
    print("验证元素未找到,可能已自动通过验证")

driver.quit()

2. 优化浏览器启动参数,贴近真实用户环境

自动化浏览器的指纹特征容易被Cloudflare识别,添加更贴近真实浏览器的配置:

driver = Driver(
    uc=True,
    incognito=False,  # 和手动操作保持一致的会话模式
    headless=False,  # 手动操作是可视化模式,避免无头模式触发检测
    agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
)

3. 调整页面加载逻辑,避免重复触发验证

uc_open_with_reconnect的多次重连可能导致验证反复触发,尝试改用普通加载配合专用iframe切换方法:

driver.get(url)
# 等待Turnstile验证iframe出现
driver.wait_for_element_present('iframe[src*="challenges.cloudflare.com/turnstile"]', timeout=15)
# 用SeleniumBase专用方法切换到验证iframe
driver.uc_switch_to_frame('iframe[src*="challenges.cloudflare.com/turnstile"]')
driver.uc_gui_click_captcha()
# 切回主文档,等待页面加载完成
driver.switch_to.default_content()
driver.wait_for_page_to_load(timeout=30)

核心原因

脚本的固定等待时间与验证实际加载节奏不匹配,或自动化浏览器的指纹特征与手动操作差异过大,导致Cloudflare判定为自动化行为,重新触发验证。

内容的提问来源于stack exchange,提问作者Aman Emmanuel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.07 14:03:15