mitmproxy使用指南
作者:互联网
前言
这是一款抓包软件比起其他的抓包软件(如:fiddler、burpsuite),它的优点在于做二次开发加脚本处理文件。
一、python环境安装
本人用的是Python3.7.3去官网下载安装即可。
二、安装mitmproxy
- 使用
pip install mitmproxy
或pip install pipx
和pipx install mitmproxy
。 - 如果你需要抓https的包你还需要再运行后访问http://mitm.it/来安装安装证书。
三、使用命令
mitmproxy 工具有以下三部分组成:
- mitmproxy -> 命令行工具(win不支持)
- mitmdump -> 加载 python 脚本
- mitmweb -> web 界面工具
常用参数
-h 帮助信息
-p 修改监听端口
-s 加载 python 脚本(例如:-s "script.py --bar" # 执行脚本,通过双引号来添加参数)
默认监听端口8080
四、脚本样例
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from mitmproxy import http
def request(flow: http.HTTPFlow):
# 增加请求的头信息
flow.request.headers["myheader"] = "shifeng"
print(flow.request.headers)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from mitmproxy import http
def request(flow: http.HTTPFlow):
# 修改判断条件
if "quote.json" in flow.request.pretty_url and "x=" in flow.request.pretty_url:
# 打开保存在本地的数据文件
with open("/Users/chenshifeng/MyCode/PythonCode/SFDSZL/interface/quote.json") as f:
# 创造一个 response
flow.response = http.HTTPResponse.make(
200, # (optional) status code
# 读取文件中数据作为返回内容
f.read(),
# 指定返回数据的类型
{"Content-Type": "application/json"} # (optional) headers
)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import json
from mitmproxy import http
def response(flow: http.HTTPFlow):
# 加上过滤条件
if "quote.json" in flow.request.pretty_url and "x=" in flow.request.pretty_url:
# 把响应数据转化成python对象,保存到data中
data = json.loads(flow.response.content)
# 对第一个股票保持原样
data['data']['items'][0] = data['data']['items'][0]
# 对第二个股票名字加长一倍
data['data']['items'][1]['quote']['name'] = data['data']['items'][1]['quote']['name'] * 2
# 对第三个股票名字变成空
data['data']['items'][2]['quote']['name'] = None
# 把修改后的内容赋值给 response 原始数据格式
flow.response.text = json.dumps(data)
参考:https://www.lmlphp.com/user/23204/article/item/573492/
五、一些报错
现象:安装以后无法使用报错显示 ImportError: cannot import name ‘soft_unicode‘ from ‘markupsafe‘
解决:命令行运行 python -m pip install markupsafe==2.0.1
现象:正常启动比且代理服务器已开启无反应或没有想要的数据
解决:可以是端口被占用了,换个端口试试
现象:抓不到心怡的数据
解决:这里发现window上的设置也有影响关闭如下图设置就出现数据了
标签:http,python,request,flow,mitmproxy,使用指南,data 来源: https://www.cnblogs.com/yisicanmeng/p/16351824.html