目录
一、安装mitmproxy库
pip install mitmproxy -i https://pypi.tuna.tsinghua.edu.cn/simple
二、mitmproxy证书配置
mitmproxy和其他抓包软件一样,需要进行证书配置,由于我们要抓取的大部分页面都采用了HTTPS,也就是经过加密,若没有证书,就无法识别抓取的数据。另外,需要注意的是,mitmproxy一样需要在PC和手机端安装证书。
1、首先cmd运行
mitmdump
命令,以便在windows系统中产生CA证书
2、然后再.mitmproxy目录找到CA证书
3、双击mitmproxy-ca.p12进入导入证书的页面,点击“下一步”
4、不用更改地址,直接下一步
5、不用输入密码,直接点击下一步
6、选择“将所有的证书都放入下列存储”,接着选择“受信任的根证书颁发机构”
7、点击完成
8、点击是
8、接着在手机上配置证书,先将mitmproxy-ca-cert.pem文件发送至手机,推荐用邮箱方式,接着在手机上可以把直接点击附件并安装。最后在手机“设置”、“通用”、“描述文件与设备管理”,找到“证书信任设置”,信任即可。
三、设置代理
1、可以在pc(windows)中用cmd命令行,输入命令ipconfig,查看电脑ip。
2、接着在手机上设置代理,其实就是将pc电脑的ip,设置成代理即可。
3、配置代理,改为手动
4、电脑设置:
端口:8080
其他:127.0.0.1;*.local
不要勾选请勿将代理服务器用于本地(Intranet)地址
四、常用命令
1、mitmdump的启动
mitmdump
2、mitmdump指定端口的启动
mitmdump -p 8080
3、指定python脚本
mitmdump -p 8080 -s test.py
4、保存截获数据
mitmdump -w test.txt
五、常用代码
import mitmproxy.http
class CaptureInfoWriteFile:
def __init__(self):
self.records = []
def request(self, flow: mitmproxy.http.HTTPFlow):
self.url = flow.request.url # 接口url
self.host = flow.request.host # 域名
self.path = flow.request.path # 接口地址
self.method = flow.request.method # 请求方式
self.params = dict(flow.request.query or {})
self.content = flow.request.content
self.timestamp_start = flow.request.timestamp_start # 请求开始时间戳
self.timestamp_end = flow.request.timestamp_end # 请求结束时间戳
self.headers = flow.request.headers # 请求头
self.body = flow.request.text # 请求体
def response(self, flow: mitmproxy.http.HTTPFlow):
response_status_code = flow.response.status_code # 响应状态码
response_text = flow.response.text # 响应体
response_content = flow.response.content
response_timestamp_start = flow.response.timestamp_start # 响应开始时间
response_timestamp_end = flow.response.timestamp_end # 响应结束时间
response_header = flow.response.headers # 响应头
self.records.append({
"URL": self.url,
"Method": self.method,
"Headers": self.headers,
"Params": self.params,
"Body": self.body,
"Response Text": response_text,
"Status Code": response_status_code
})