Python Selenium如何避免chromedriver被识别为自动化测试软件实现扩展自动登录
Selenium Chrome驱动反检测解决方案
以下是可直接落地的绕过方案,可按优先级选择:
1. 原生Chromedriver添加反检测启动参数
该方案无需额外依赖,直接修改Chrome启动配置即可屏蔽绝大多数基础自动化检测标记:
- 核心配置作用:
- 移除
enable-automation开关,关闭浏览器顶部的「Chrome正受到自动测试软件控制」提示条 - 禁用自动化扩展
- 移除
navigator.webdriver等自动化特征字段
- 移除
- Python代码示例:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 核心反检测参数 chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) chrome_options.add_experimental_option("useAutomationExtension", False) chrome_options.add_argument("--disable-blink-features=AutomationControlled") # 如果需要加载本地已安装的扩展,可新增该参数,替换为你的扩展目录路径 # chrome_options.add_argument("--load-extension=C:\\Users\\xxx\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Extensions\\扩展ID\\版本号") driver = webdriver.Chrome(options=chrome_options)
2. 使用Undetected Chromedriver
该驱动是基于原生Chromedriver二次修改的版本,默认屏蔽了几乎所有Selenium的特征指纹,适配绝大多数反爬场景:
- 安装命令:
pip install undetected-chromedriver - 代码示例:
import undetected_chromedriver as uc driver = uc.Chrome() # 直接操作即可,默认已加载所有反检测配置,也可手动添加扩展加载参数
3. 接管本地正在运行的Chrome实例(最高优先级,适配扩展登录场景)
该方案完全规避了驱动新开浏览器的特征,直接操作你本地日常使用的Chrome,所有已安装的扩展都会保留,不会被任何平台识别为自动化环境:
- 第一步:启动本地Chrome的远程调试模式
Windows系统下,找到Chrome的桌面快捷方式,右键属性,在「目标」栏的最后添加--remote-debugging-port=9222(注意前面有空格),保存后双击启动Chrome。也可以直接在cmd中执行Chrome安装路径下的exe文件,带上该参数启动。 - 第二步:Selenium直接连接已启动的Chrome
代码示例:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222") driver = webdriver.Chrome(options=chrome_options) # 此时driver直接控制你本地启动的Chrome,可直接操作已安装的扩展完成登录
4. 真人行为模拟补充配置
就算驱动特征被屏蔽,过于规整的自动化操作也可能被识别,可添加以下优化:
- 操作之间添加随机延迟,使用
time.sleep(random.uniform(0.5, 2))替代固定时长的等待 - 输入内容时逐字符输入,每个字符间隔随机时长
- 点击元素时随机偏移坐标,不要固定点击元素正中心
- 尽量避免直接调用JS执行点击、输入等操作,优先使用Selenium原生方法
内容的提问来源于stack exchange,提问作者Bob Dylan
相关产品推荐
相关产品推荐

