通过mitmproxy代理抓取头条用户文章列表(selenium(Chrome浏览器) Java版)

头条(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,即可看到捕获的网络数据流了,如下图所示:

参考资料:

https://blog.csdn.net/javaer_lee/article/details/85160659

https://www.jianshu.com/p/8a9c4b298a1f

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值