python中一个库mitmproxy,可以实现抓包;实现的就是代理的功能;相对于其他软件,优势在于可以编码;
mitmproxy是一个抓包工具,类似于WireShark、Filddler,并且它支持抓取HTTP和HTTPS协议的数据包,只不过它是一个控制台的形式操作。另外,它还有两个非常有用的组件,一个mitmdump,它是mitmproxy的命令行接口,利用它可以对接python脚本;另一个是mitmweb,它是一个web程序,通过它可以清楚的观察mitmproxy捕获的数据情况,优点类似于Chrome浏览器。
安装库:
pip install mitmproxy
完成后,系统将拥有 mitmproxy、mitmdump、mitmweb 三个命令,
测试一下安装是否成功,执行:
mitmproxy --version
官方文档:在这里
安装证书:
执行mitmproxy命令后,会在用户目录下生成证书;
C:\Users\Administrator.mitmproxy
点击证书,直接安装;
设置网络代理:
若要抓包,必须设置网络代理;
以下已win10系统为例:
首先进入电脑系统后,点击“开始-设置”。进入开始-设置后,点击“网络Internet”。进入网络Internet后,点击“代理”。
进入代理后,找到手动设置代理,开启“使用代理服务器”。开启代理服务器后,填写相应“参数”,点击“保存”。
mitmproxy的默认地址是http://127.0.0.1:8080;
开始抓包
- mitmproxy
- mitmweb
输入命令,打开web页面: - 编码方式mitmdump
from mitmproxy import http
#将请求新增了一个查询参数
def request(flow: http.HTTPFlow):
flow.request.query["mitmproxy"] = '8.0'
#将响应头中新增了一个自定义头字段
def response(flow: http.HTTPFlow):
flow.response.headers["mitm"] = 'foo'
#print(flow.response.text)
保存以上文件为demo.py
然后执行命令:
mitmdump -s demo.py
接口实现接口拦截修改;当然也可以实现抓包了