Selenium 接管已启动浏览器以绕过反爬检测策略
问题分析
在使用 Selenium 自动化测试爬取拼多多(PDD)时,通过携带 Cookie 登录或控制 Selenium 输入账号密码登录,均出现错误代码 10001:请求异常请升级客户端后重新尝试。
该错误是由于 PDD 能够检测 Selenium 自动化测试脚本,从而阻止其继续访问。目前主流大厂网站基本都能检测到 Selenium 脚本。
解决方案
直接使用 Selenium 自动启动浏览器容易被检测到。测试表明,使用 Selenium 接管已经启动的浏览器则不会触发检测(原因:接管已启动的浏览器所携带的浏览器指纹更接近正常访问的浏览器指纹)。
自动启动与接管的区别
1. Selenium 自动启动浏览器
- 默认行为:Selenium 自动启动浏览器时,通常使用默认配置和设置,生成一个新的用户数据目录,创建全新的浏览器环境。
- 指纹特征:由于是新启动的实例,许多浏览器指纹特征(如 User-Agent、插件列表、屏幕分辨率等)可能与常规用户不同。Selenium 可能在浏览器对象中留下特定标记,如
window.navigator.webdriver属性,易被网站识别。 - 检测风险:网站可通过检测这些指纹特征识别出 Selenium 自动启动的浏览器,采取反爬措施。
2. Selenium 接管已启动的浏览器
- 现有环境:Selenium 接管已启动的浏览器时,使用现有的浏览器实例和用户数据目录,保留之前的会话信息、登录状态、用户设置等。
- 指纹特征:由于使用现有环境,接管后的浏览器指纹特征与常规用户的使用环境更为接近,插件、扩展、User-Agent 等设置保持一致。
- 检测难度:网站在检测接管后的浏览器时,发现其指纹特征与常规用户相似,难以准确识别自动化工具的使用。
3. 区别总结
- 指纹特征一致性:接管已启动的浏览器在指纹特征上与常规用户更为一致。
- 检测风险:接管已启动的浏览器在降低检测风险方面更具优势。
- 使用场景:自动启动适用于需要全新环境的场景;接管已启动的浏览器适用于需要保留现有会话信息的场景。
代码示例
方法一:手动启动浏览器并接管
第一步:找到 Chrome 浏览器的启动路径
默认路径为 C:\Program Files\Google\Chrome\Application,复制进入路径,确认有 chrome.exe 程序。

第二步:在当前路径下打开 CMD
在当前路径下输入 cmd,点击回车。

第三步:利用 Chrome DevTools 协议启动浏览器




