解决Selenium+ChromeDriver被反爬检测的Mitmproxy方案

山海之间
山海之间
发布时间:2026-10-14 | 4人浏览过
原创

本文针对Selenium配合ChromeDriver爬取某电商平台时遭遇强制跳转登录页面的反爬问题,通过对比正常浏览器与自动化请求头,排除IP及标头限制,定位到服务端对webdriver特征的检测。解决方案利用Mitmproxy拦截响应流量,将JS中敏感的“webdriver”关键字替换为其他字符串,从而绕过检测实现正常数据抓取。

反爬问题背景与现象

问题背景:在爬取某电商平台时遇到了反爬机制。此前采用Selenium结合ChromeDriver与Mitmproxy进行数据采集,运行数日后发现无法继续抓取,页面直接跳转至登录界面,这表明系统已识别出自动化行为并实施了反爬策略。

这是首次在使用Selenium时遭遇此类反爬限制,因此进行了广泛的测试与对比分析以定位原因。

原因排查与定位

在同一台机器上使用普通Chrome浏览器访问目标网站时,无需登录即可正常浏览,说明并非IP被封禁所致。随后使用Fiddler抓取并对比了两个请求的请求头,发现两者完全一致,因此可以排除通过请求头进行反爬的可能性。

经过深入分析,推测问题出在Selenium被平台检测到了。查阅相关资料后确认,服务端能够识别webdriver相关特征。通过Fiddler抓包并在响应内容中全局搜索“webdriver”,发现在前端JS代码中存在相关判断逻辑,正是这一机制导致Selenium发起的请求被重定向至登录页面。

基于Mitmproxy的解决方案

解决方法:利用Mitmproxy进行流量干预。

由于Mitmproxy具备拦截HTTP请求与响应的能力,可以在响应阶段处理包含“webdriver”关键字的JS代码,将其替换为其他无害字符,从而消除检测特征。

核心代码实现


  if "/_next/static/js/common_pdd" in flow.request.url:
    flow.response.text = flow.response.text.replace("webdriver", "userAgent")

效果验证与其他方案对比

具体的替换逻辑如下:当请求URL包含特定资源路径时,修改响应文本中的“webdriver”为“userAgent”。经过此处理,JS解析的参数发生变化,检测逻辑失效,问题得以解决,数据抓取恢复正常。

此外,国外社区还提及通过修改ChromeDriver内部特定参数名称来规避检测的方法,但经尝试,该方案在此场景下并未生效。

至此,关于Selenium与ChromeDriver被反爬检测的解决方案介绍完毕。如需了解更多相关技术细节,请查阅本站历史文章或继续浏览后续内容,感谢支持。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表