mitmproxy是一个支持HTTP和HTTPS的抓包程序,有类似Fiddler、Charles的功能,只不过它是一个控制台的形式操作。
mitmproxy还有两个关联组件。一个是mitmdump,它是mitmproxy的命令行接口,利用它我们可以对接Python脚本,用Python实现监听后的处理。另一个是mitmweb,它是一个Web程序,通过它我们可以清楚观察mitmproxy捕获的请求。
我爬虫是用Python所以就不考虑其他两种。
和Charles一样,mitmproxy运行于自己的PC上,mitmproxy会在PC的8080端口运行,然后开启一个代理服务,这个服务实际上是一个HTTP/HTTPS的代理。
手机和PC在同一个局域网内,设置代理为mitmproxy的代理地址,这样手机在访问互联网的时候流量数据包就会流经mitmproxy,mitmproxy再去转发这些数据包到真实的服务器,服务器返回数据包时再由mitmproxy转发回手机,这样mitmproxy就相当于起了中间人的作用,抓取到所有Request和Response,另外这个过程还可以对接mitmdump,抓取到的Request和Response的具体内容都可以直接用Python来处理,比如得到Response之后我们可以直接进行解析,然后存入数据库,这样就完成了数据的解析和存储过程。
安装mitmproxy(pip换国内源)
pip3 install mitmproxy
这个最简单,其他方式参考:https://cuiqingcai.com/5391.html
对于mitmproxy来说,如果想要截获HTTPS请求,就需要设置证书。mitmproxy在安装后会提供一套CA证书,只要客户端信任了mitmproxy提供的证书,就可以通过mitmproxy获取HTTPS请求的具体内容,否则mitmproxy是无法解析HTTPS请求的。
首先,运行以下命令产生CA证书,并启动mitmdump:
mitmdump
然后在用户目录下找到CA证书
证书一共5个,表1-1简要说明了这5个证书。
表1-1 5个证书及其说明
名称 | 描述 |
---|---|
mitmproxy-ca.pem | PEM格式的证书私钥 |
mitmproxy-ca-cert.pem | PEM格式证书,适用于大多数非Windows平台 |
mitmproxy-ca-cert.p12 | PKCS12格式的证书,适用于Windows平台 |
mitmproxy-ca-cert.cer | 与mitmproxy-ca-cert.pem相同,只是改变了后缀,适用于部分Android平台 |
mitmproxy-dhparam.pem | PEM格式的秘钥文件,用于增强SSL安全性 |
下面我们介绍一下Windows、Mac、iOS和Android平台下的证书配置过程。
Windows
双击mitmproxy-ca.p12,就会出现导入证书的引导页,如图1-61所示。
图1-61 证书导入向导
直接点击“下一步”按钮即可,会出现密码设置提示,如图1-62所示。
图1-62 密码设置提示
这里不需要设置密码,直接点击“下一步”按钮即可。
接下来需要选择证书的存储区域,如图1-63所示。这里点击第二个选项“将所有的证书都放入下列存储”,然后点击“浏览”按钮,选择证书存储位置为“受信任的根证书颁发机构”,接着点击“确定”按钮,然后点击“下一步”按钮。
图1-63 选择证书存储区域
最后,如果有安全警告弹出,如图1-64所示,直接点击“是”按钮即可。
图1-64 安全警告
这样就在Windows下配置完CA证书了。
Android
在Android手机上,同样需要将证书mitmproxy-ca-cert.pem文件发送到手机上,例如直接复制文件。
接下来,点击证书,便会出现一个提示窗口,如图1-70所示。
图1-70 证书安装页面
这时输入证书的名称,然后点击“确定”按钮即可完成安装。完成之后运行
cmd运行着段代码 mitmdump -s decode_douyin_fans.py -p 8889 说明:mitmdump -s py文件 -p 模拟器代理端口
它会去默认监听8889端口 ,然后再去手机连接同一个无线网后配置代理。不会的各位自行百度,我就不说了,太啰嗦了
----划重点
我的手机用pem是失败的,所以可以试试.cer文件
有问题可以留言,有什么不对的地方请指出来,我改正,谢谢!
更多内容请关注公众号
参考文章: