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

如何避免Selenium webdriver被识别为机器人,解决触发验证码问题

Selenium Chrome驱动访问网站触发验证码的解决方法

目标网站通过检测浏览器自动化特征识别Selenium,你当前配置的启动参数只覆盖了部分特征,还有其他指纹信息被反爬系统识别,修改$cdc_变量的方法只对旧版本Chrome有效,新版本Chrome已经新增了更多检测维度,可按以下方案调整:

  • 注入JS覆盖自动化特征
    在调用driver.get之前添加如下代码,在页面加载前修改浏览器指纹属性:
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
    "source": """
        Object.defineProperty(navigator, 'webdriver', {
            get: () => undefined
        })
        window.chrome = { runtime: {} }
        Object.defineProperty(navigator, 'plugins', {
            get: () => [1, 2, 3]
        })
        Object.defineProperty(navigator, 'languages', {
            get: () => ['zh-CN', 'zh', 'en']
        })
        delete navigator.__proto__.webdriver
    """
})
  • 优化启动参数
    你当前配置的参数存在冗余和冲突项,建议调整:删掉--single-process(易导致浏览器不稳定暴露特征)、重复的--disable-blink-features=AutomationControlled和--start-fullscreen参数,调整后配置如下:
from selenium.webdriver.chrome.options import Options
import time
from selenium import webdriver

options = Options()
options.add_argument('--no-sandbox')
options.add_argument('--start-maximized')
options.add_argument('--disable-dev-shm-usage')
options.add_argument("--incognito")
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option('useAutomationExtension', False)
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_argument("disable-infobars")
driver = webdriver.Chrome(executable_path="chromedriver.exe", options=options)

# 此处添加上面的注入JS代码

driver.get("https://muckrack.com/media-outlets")
time.sleep(20)
  • 加载本地Chrome用户配置
    直接调用你日常使用的Chrome的用户数据,让Selenium启动的浏览器指纹和你手动打开的浏览器完全一致,规避特征检测:
# 替换路径为你本地Chrome的用户数据目录,默认路径为C:\Users\你的系统用户名\AppData\Local\Google\Chrome\User Data
options.add_argument(r"--user-data-dir=C:\Users\XXX\AppData\Local\Google\Chrome\User Data")
options.add_argument(r"--profile-directory=Default")

注意使用该参数前需要关闭所有已经打开的Chrome窗口,否则会启动失败。

  • 使用undetected-chromedriver
    该库专门修改了chromedriver的底层特征,能绕过绝大多数自动化检测,安装后直接替换原生Selenium的驱动即可:
    安装命令:pip install undetected-chromedriver
    使用示例:
import undetected_chromedriver as uc
import time

driver = uc.Chrome()
driver.get("https://muckrack.com/media-outlets")
time.sleep(20)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:45:01