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

Selenium遭Cloudflare拦截无法访问页面,寻求技术解决方案

解决Cloudflare拦截自动化工具的实操方案

针对Selenium系列工具失效的调整

  • 放弃无头模式,改用带界面的浏览器运行,Cloudflare对无头浏览器的特征检测极严,带界面能大幅降低拦截概率
  • 复用本地真实浏览器的用户数据:导入常用浏览器的User Data目录,让驱动直接使用你日常上网的Cookie、缓存和指纹,比如Chrome的用户数据路径在Windows是C:\Users\<你的用户名>\AppData\Local\Google\Chrome\User Data,Linux是~/.config/google-chrome/
  • 模拟真实操作节奏:点击人机验证按钮前,先移动鼠标到按钮上停留1-3秒再点击,不要瞬间完成操作,避免触发行为检测

Playwright的针对性配置

  • 关闭自动化特征+启用隐身模式,同时注入真实用户指纹:
    from playwright.sync_api import sync_playwright
    
    with sync_playwright() as p:
        # 关闭自动化控制特征,用带界面模式启动
        browser = p.chromium.launch(headless=False, args=["--disable-blink-features=AutomationControlled"])
        # 配置真实用户环境参数
        context = browser.new_context(
            user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
            locale="zh-CN",
            timezone_id="Asia/Shanghai",
            viewport={"width": 1920, "height": 1080}
        )
        page = context.new_page()
        page.goto("目标站点")
        # 模拟真实点击流程
        verify_btn = page.locator("xpath=//*[contains(text(),'我是人类')]")
        verify_btn.hover()
        page.wait_for_timeout(1500)
        verify_btn.click()
        page.wait_for_load_state("networkidle")
    
  • 优先使用住宅代理IP:数据中心IP几乎会被Cloudflare直接拦截,换成住宅IP能提升通过率
  • 若仍触发循环验证,尝试在上下文添加geolocation、permissions等真实用户权限,进一步模拟正常上网环境

极端情况下的绕过方案

  • 用远程调试模式连接手动浏览器:先手动打开浏览器并添加启动参数--remote-debugging-port=9222,再用自动化工具连接这个已启动的浏览器,完全复用手动操作的环境
  • 直接调用API接口:如果能抓包到目标站点的后端API,跳过前端页面直接请求接口,避免触发Cloudflare的前端验证

内容的提问来源于stack exchange,提问作者Daniel Bailo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:15:28