mitmproxy 使用笔记

mitmproxy 使用笔记,第1张

mitmproxy 使用笔记 零、背景

我之前写过关于 charles 的使用笔记,为什么现在又要来写同类型的 mitmproxy 工具呢?下面我会娓娓道来他比 charles 多出的强大功能。



一、介绍

mitmproxy 是一个支持 HTTP 和 HTTPS 的抓包程序, 类似 Fiddle、Charles , 只不过它通过 CMD 的形式 *** 作。


mitmproxy 还有两个关联组件:

一个是 mitmdump ,它是 mitmproxy 的命令行接口,利用它可以对接 Python 脚本,实现监听后的处理;

另一个是 mitmweb ,它是一个Web 程序,通过它以清楚地观察到 mitmproxy 捕获的请求


(跟 charles 差不多)


二、安装与配置 1、安装 (1)方法一:通过 pip 安装

pip3 install mitmproxy

会自动附带安装 mitmdump 和mitmweb。


(2)方法二:通过 brew 安装

brew install mitmproxy

2、配置

抓 HTTPS 需要配置 CA 证书


(1) 电脑端(以 mac 为例)

运行起 mitmdump命令。


然后找到 ~/.mitmproxy/mitmprox-ca-cert.pem 文件,双击,d出 Keychain Access窗口,找到名为 mitmproxy 的 CA 证书,选择 Always Trust。


(2) 手机端(以 Android 为例)

同样将 ~/.mitmproxy/mitmprox-ca-cert.pem 文件发送给手机,在手机端打开后,填入证书名和点击确认按钮,如下图:


三、使用

下面的例子都以爬手机端为例,记得让手机和 PC 处于同一个局域网。


1、mitmproxy

1、命令行运行 mitmproxy命令,会启动一个代理,默认监听 8080 端口。


2、手机设置里修改网络的代理设置:

3、现在就可以在命令行里查看经过的网络请求了

4、也可查看请求的具体详情:

5、还有编辑、重发功能

2、mitmweb

可以理解成界面版的 mitmproxy。


略。


3、mitmdump

上面介绍的功能其实 Fiddle、 Charles 也有,那么mitmproxy 的优势何在哪?

这就要提到 mitmdump 了,有了它我们可以直接对接 Python 脚本对请求进行处理。


比如对数据的解析、存储、修改等。


示例 demo:


from mitmproxy import ctx def request(flow):
# 获取
request = flow.request
# 修改
request.headers['User-Agent'] = 'MitmProxy' # 日志输出
print(request.host)
ctx.log.info(request.host) # 颜色同上
ctx.log.warn(request.host) # 颜色:黄
ctx.log.error(request.host) # 颜色:红 def response(flow):
response = flow.response
ctx.log.info(str(response.status_code))

详细文档:https://mitmproxy.readthedocs.io/en/v2.0.2/mitmdump.html

4、拓展 —— httpbin.org

通过 mitmdump 对 request 做了修改,想要看修改后达成的效果,推荐客户端去访问这个网址:http://httpbin.org/get 即可知晓。



四、坑 1、爬的成功率不高,失败的会报错 :Cannot establish TLS with client……

会是 https 抓不到的问题?但我的电脑和手机端的 CA 证书都装了呀,费解。


解决方案:待解决

参考资料

《python 3 网络爬虫开发实践》

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/586697.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存