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

如何解决SeleniumBase下Cloudflare的I'm not a robot复选框验证问题

解决SeleniumBase中Cloudflare reCAPTCHA验证问题的思路

问题核心

目标站点有两层Cloudflare防护:

  • 入口防护已通过SeleniumBase成功绕过(stealth/纯uc-chromedriver无效)
  • 功能触发的“I'm not a robot”复选框验证无法通过
  • 关键异常:SeleniumBase实例中手动开新标签页可过验证,但只要执行过标签页打开/关闭/列表获取操作,哪怕手动访问也会触发reCAPTCHA错误

可行解决方案

1. 规避标签页操作特征

Cloudflare会追踪浏览器行为指纹,标签页操作属于典型自动化特征:

  • 全程复用单个标签页完成所有操作,避免切换、打开或关闭标签页
  • 若需切换内容,优先使用driver.switch_to.frame()处理内嵌框架,或直接在当前标签页导航

2. 优化SeleniumBase初始化配置

强化浏览器指纹的伪装程度:

from seleniumbase import SB

with SB(uc=True, incognito=True, disable_extensions=True, user_data_dir=None) as sb:
    sb.open("目标站点URL")
    # 后续操作全程避免标签页相关动作
  • uc=True启用undetected-chromedriver模式
  • 无痕模式+禁用扩展+清空用户数据目录,减少可被检测的特征

3. 手动接管验证(临时应急方案)

触发验证时暂停自动化,等待手动完成:

from seleniumbase import SB

with SB(uc=True) as sb:
    sb.open("目标站点URL")
    # 触发需要验证的功能
    sb.click("触发验证的元素选择器")
    # 等待手动完成reCAPTCHA
    input("完成页面reCAPTCHA验证后按回车继续...")
    # 恢复自动化流程

4. 模拟真实用户行为时序

通过随机延迟和交互动作降低自动化判定概率:

from seleniumbase import SB
import random

with SB(uc=True) as sb:
    sb.open("目标站点URL")
    # 模拟随机鼠标移动
    sb.move_to_element("页面任意元素选择器", offset_x=random.randint(0,50), offset_y=random.randint(0,50))
    sb.sleep(random.uniform(1,3))
    # 触发操作前滚动页面
    sb.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    sb.sleep(random.uniform(0.5,1.5))
    # 执行目标操作
    sb.click("触发验证的元素选择器")

重要提示

不要在同一浏览器实例中混合自动化操作与手动标签页操作,标签页动作会污染浏览器指纹,导致Cloudflare持续判定为自动化工具;若必须使用多标签页,每次操作都重新初始化全新的SeleniumBase实例。

内容的提问来源于stack exchange,提问作者Artik gnom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 00:06:04