一、安装

1.1 安装mitmproxy

直接使用pip安装即可

pip install mitmproxy

pip本质上会一是安装mitmproxy库的相关代码,二是安装mitmproxy.exe/mitmdump.exe/mitmdump.exe三个可执行程序。

可执行程序被安装在$PYTHON_HOME/Scripts文件夹下,如果是conda版本的python那可以用以下命令来查看当前使用的是哪个环境。

conda env list

1.2 安装证书

和burpsuite类似mitmproxy默认只能拦截http,想要拦截https那就需要安装证书。

首先到$PYTHON_HOME/Scripts目录下运行一下mitmdump,完成之后在用户家目录下的.mitmproxy文件夹下即会生成证书,传到手机点击安装即可。

mitmproxy-ca.p12----PKCS12格式证书私钥

mitmproxy-ca.pem----PEM格式证书私钥

mitmproxy-ca-cert.cer----PEM格式证书,与mitmproxy-ca-cert.pem相同只是改变了后辍,适用于部分Android

mitmproxy-ca-cert.p12----PKCS12格式证书,适用于Windows

mitmproxy-ca-cert.pem----PEM格式证书,适用于大多数非Windows平台

mitmproxy-dhparam.pem----PEM格式秘钥文件,用于增强SSL安全性

Windows安装证书:双击mitmproxy-ca-cert.p12----全部默认直接点“下一步”直到安装完成。

Android安装证书:把mitmproxy-ca-cert.cer通过usb复制到手机上----点击使用证书安装器安装证书(通过qq发送到手机上时提示无法读取证书不懂什么原因)

二、网络代理配置

2.1 确保手机和电脑处于同一局域网

运行mitmproxy的电脑和运行目标app的手机要同处一个局域网才能进行代理。

如果是有笔记本那么笔记本和手机同连到一个路由器上,或者在笔记本上开启一个wifi然后用手机连上去,或者用Genymotion等模拟器运行app在模拟器设置代理,这三个方法都可以。

但如果是没有无线网卡的台式机那似乎只能使用模拟器,要用其他两种方法那得外接一个usb式无线网卡。

我这里用的方法是台式机外接无线网卡使用360开启一个wifi手机连上去,台式机ip为172.30.195.1手机ip为172.30.195.2。

2.2 电脑启动代理

我这里是windows,mitmproxy.exe并不支持windows,但这并没有很大关系,mitmproxy.exe本质就是一个窗口式的burpsuite的proxy+repeater。

如果要拦包改包我们用burpsuite更加好,用mitmproxy的意义在于代码能获取数据包,而这个功能是由mitmdump实现只要mitmdump.exe可运行即可。

和1.2一样启动mitmdump.exe

mitmdump.exe

2.3 手机配置代理

手机配置代理大同小异都在设置之中进行配置。比如我这里的路径是:

设置----无线和网络WLAN----长按wifi名----修改网络----显示高级选项----代理----手动—服务器主机名输入172.30.195.1(根据自己电脑ip修改)服务器端口输入8080----保存

2.4 代理效果查看

完成后在启动mitmdump.exe的代理窗口上即可看到手机发送的所有数据包。

三、Python3使用mitmproxy

我们前边2.2也提到使用mitmproxy的根本目的是想要python能修改发送的数据包,及截获服务端返回的数据包。只是像2.4那样打印出所有发送的请求对我们的目的而言是没有什么用的。

python接触发送数据包的途径是在启动mitmdump启动时使用-s选项指定处理脚本,其中通过重写request方法处理请求数据包,通过重写response方法处理响应数据包。示例如下。

启动命令:

mitmdump.exe -s example_script.py

exampl_script.py内容:

复制代码

from mitmproxy import ctx

# 所有发出的请求数据包都会被这个方法所处理
# 所谓的处理,我们这里只是打印一下一些项;当然可以修改这些项的值直接给这些项赋值即可
def request(flow):
    # 获取请求对象
    request = flow.request
    # 实例化输出类
    info = ctx.log.info
    # 打印请求的url
    info(request.url)
    # 打印请求方法
    info(request.method)
    # 打印host头
    info(request.host)
    # 打印请求端口
    info(str(request.port))
    # 打印所有请求头部
    info(str(request.headers))
    # 打印cookie头
    info(str(request.cookies))

# 所有服务器响应的数据包都会被这个方法处理
# 所谓的处理,我们这里只是打印一下一些项
def response(flow):
    # 获取响应对象
    response = flow.response
    # 实例化输出类
    info = ctx.log.info
    # 打印响应码
    info(str(response.status_code))
    # 打印所有头部
    info(str(response.headers))
    # 打印cookie头部
    info(str(response.cookies))
    # 打印响应报文内容
    info(str(response.text))

复制代码

如图箭头所指处正是经request方法处理,依次输出请求url、请求方法、host头、请求端口、所有头部及cookies

四、评述

我们在电脑上写爬虫,关键操作是找到请求url、制定请求数据包、解析返回结果。

从这个角度出发对app我们根本需要的似乎其实只是拦截请求数据包和响应数据包、分析他们的格式,没必要从app发出和接收数据包。

题外话

在此疾速成长的科技元年,编程就像是许多人通往无限可能世界的门票。而在编程语言的明星阵容中,Python就像是那位独领风 骚的超级巨星, 以其简洁易懂的语法和强大的功能,脱颖而出,成为全球最炙手可热的编程语言之一。

如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐