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

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

本文针对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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。