Python爬虫无法逆向另辟蹊径mitmproxy拦击代理+自动化参考

发布于:2023-05-22 ⋅ 阅读:(650) ⋅ 点赞:(0)

mitmproxy介绍

具体介绍看官方,这里简单介绍,能够以类似抓包工具原理,以代理方式拦截指定数据包实现爬虫效果。
安装:

pip install mitmproxy

启动命令三个分别 mitmproxy、mitmdump、mitmweb ,功能大致一样只是启动方式不一样。

mitmproxy 命令不支持在 windows 系统中运行

演示:mitmweb
控制台执行:mitmweb命令,其中http://127.0.0.1:8081互交界面没有自动打开手动浏览器打开
下面http://*:8080代表代理端口为8080,端口也是可以自定义的:mitmweb -p 8081
在这里插入图片描述
设置代理抓包其实和Fiddler没啥区别,个人习惯还是Fiddler抓包然后,拦截脚本用mitmdump爬取数据。
在这里插入图片描述
手机设置代理抓包:
查看本地代理做所在ip 命令行:ipconfig
在这里插入图片描述
抓包结果如下:
在这里插入图片描述

不要急如果你抓不到包或者提示证书错误之类可以试试安装下证书。

证书下载地址:http://mitm.it/
还是很齐全的。
在这里插入图片描述

现在开始编写拦截脚本

先分析需要的数据URL,我这里随便抓个抖音评论玩玩。
在这里插入图片描述
可以看到https://aweme.snssdk.com/aweme/v2/comment/list/?aweme_id=6992164359518670120省略号一堆参数。
代码如下:

import mitmproxy.http
from mitmproxy import ctx


def response(flow:mitmproxy.http.HTTPFlow):
    url = 'aweme/v2/comment/list/'  #需要链接url包含字符串
    if url in flow.request.url: 
        #print(flow.response.text)
        with open('res.txt','w',encoding='utf-8') as f:
            f.write(flow.response.text) #注意这里是response服务器返回不是request请求。
        print('拦截到指定url')

抓到的json数据结果如下:
在这里插入图片描述
配合UIAutomator2自动化就可以实现,拦截+自动化爬虫了。

本文只是简单介绍下工具,更多高级用法可以自行百度或者看官方文档。

QQ交流群:23440618

微信公众号:Python硕博联盟

在这里插入图片描述
Python:Android手机自动化UIAutomator2高效简单,免去Appium繁琐配置步骤一学就会

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到