1、问题描述
使用 Selenium 自动化测试爬取拼多多(PDD)时,通过携带 Cookie 登录或控制 Selenium 输入账号密码登录,均出现错误代码 10001:请求异常请升级客户端后重新尝试。
2、问题推测
该错误是由于 PDD 能够检测 Selenium 自动化测试脚本,从而阻止其继续访问。目前主流大厂网站大多具备此类检测能力。
3、解决方法
直接使用 Selenium 自动启动浏览器容易被检测到。测试表明,Selenium 接管已经启动的浏览器则不易被检测,原因在于接管已启动浏览器所携带的浏览器指纹更接近正常访问的指纹。
3.1 Selenium 自动启动浏览器
- 默认行为:
- Selenium 在自动启动浏览器时,通常使用默认配置和设置。
- 浏览器会生成一个新的用户数据目录,创建全新的浏览器环境,与之前的会话或用户数据无关。
- 指纹特征:
- 由于是新启动的浏览器实例,许多浏览器指纹特征(如用户代理、插件列表、屏幕分辨率等)可能与常规用户有所不同。
- Selenium 可能会在浏览器对象中留下特定标记,如
window.navigator.webdriver属性,这可能会被网站用来检测自动化工具的使用。
- 检测风险:
- 网站可能通过检测这些指纹特征识别出 Selenium 自动启动的浏览器,从而采取反爬措施,如限制访问、封禁账号等。
3.2 Selenium 接管已启动的浏览器
- 现有环境:
- Selenium 接管已启动的浏览器时,会使用现有的浏览器实例和用户数据目录。
- 这意味着浏览器会保留之前的会话信息、登录状态、用户设置等。
- 指纹特征:
- 由于是使用现有的浏览器环境,接管后的浏览器指纹特征与常规用户的使用环境更为接近。
- 浏览器中的插件、扩展、用户代理等设置都会与常规用户保持一致,有助于降低被检测的风险。
- 检测难度:
- 网站在检测接管后的浏览器时,可能会发现其指纹特征与常规用户更为相似,从而难以准确识别出自动化工具的使用。
- 然而,如果 Selenium 在接管过程中留下了特定的标记或行为模式,仍然有可能被网站检测到。
3.3 区别总结
- 指纹特征一致性:接管已启动的浏览器在指纹特征上与常规用户更为一致,而自动启动的浏览器则可能因默认配置和设置而与常规用户有所不同。
- 检测风险:由于指纹特征的一致性差异,接管已启动的浏览器在降低检测风险方面更具优势。
- 使用场景:自动启动浏览器适用于需要全新浏览器环境的场景,而接管已启动的浏览器则适用于需要保留现有会话信息或用户设置的场景。
4、代码实战
4.1 手动方法(手动打开浏览器输入账号密码)
第一步:找到谷歌浏览器的启动路径
默认路径为:C:\Program Files\Google\Chrome\Application。复制路径进入文件夹,确认有 chrome.exe 程序。
第二步:在当前路径下输入 cmd,点击回车
进入命令行控制台。
第三步:利用 Chrome DevTools 协议启动浏览器
在命令行中输入命令,回车:
chrome.exe --remote-debugging-port=9222 --user-data-dir="E:\selenium_data"


