头条(https://www.toutiao.com/c/user/50083450127/#mid=50083839790)引入了反爬虫机制,下面通过代理,注入JS代码,修改相关环境变量,越过爬虫检测。
一、下载mitmproxy
下载mitmproxy windows版: https://www.mitmproxy.org/downloads/#5.1.1/
二、安装mitmproxy
下载后双击直接安装即可,安装完后在安装目录的bin目录下有两个exe文件,mitmdump.exe和mitmweb.exe,这里我们主要使用mitmdump.exe
三、编写注入JS的Python脚本
我们需要写一个隐藏webdriver字段的脚本,脚本文件用python编写,脚本如下:
indject_js_proxy.py
import mitmproxy.http
from mitmproxy import ctx, http
injected_javascript = '''
// Pass the Webdriver test
Object.defineProperty(navigator, 'webdriver', {
value: undefined
});
'''
def response(flow):
# Only process 200 responses of HTML content.
if not flow.response.status_code == 200:
return
# Inject a script tag containing the JavaScript.
html = flow.response.text
html = html.replace('<head>', '<head><script>%s</script>' % injected_javascript)
flow.response.text = str(html)
ctx.log.info('>>>> js代码插入成功 <<<<')
把脚本文件放在mitmproxy的bin目录下:
四、启动mitmproxy代理
在当前目录起一个cmd,启动mitmdump并注入脚本:
启动成功mitmproxy会监听8080端口。
指定端口80启动
mitmdump -p [端口号] -s python脚本
五、配置HTTPS
由于头条使用了HTTPS协议,所以需要安装ca证书。
提示:要先设置代理才能下载证书。
1.设置chrome代理
1).点击chrome的设置,找到如下选项:
2).点击局域网设置,如下图所示:
3).勾选为LAN使用代理服务器,并点击高级,如下图所示:
4).设置http和https的代理地址为127.0.0.1,端口为8080,如下图所示:
2.安装证书
1).打开chrome浏览器,访问如下网址http://mitm.it/,应看到如下界面:
下载windows版。下载完后双击一直点击下一步即可完成安装。
提示:安装完证书后可以取消Chrome代理设置,这样可以避免正常使用浏览器访问网页走代理,不会影响后面的程序执行。
六:在webDriver中加入代理
ChromeOptions options = new ChromeOptions();
options.addArguments("--proxy-server=127.0.0.1:8080");
ChromeDriver driver = new ChromeDriver(options);
提示:此处不能开启无头模式。
启动webDriver,即可看到捕获的网络数据流了,如下图所示:
参考资料: