一、目的
前后端分离的项目,后端接口出现bug时单独调用接口测试不方便,而且可能会影响其他接口。因此利用前端可视化页面通过代理将接口url重定向到开发机进行测试
二、mitmproxy
mitmproxy 是 man-in-the-middle proxy 的简称,译为中间人代理工具,可以用来拦截、修改、保存 HTTP/HTTPS 请求。以命令行终端形式呈现,操作上类似于Vim,同时提供了 mitmweb 插件,是类似于 Chrome 浏览器开发者模式的可视化工具。
它是基于Python开发的开源工具,最重要的是它提供了Python API,可以通过Python代码来控制请求和响应。
1. 安装
sudo pip3 install mitmproxy
2. 脚本
"""设置简单的http代理,并将https://api-report.aft1v1.com开头的请求重定向到127.0.0.1:9000"""
from mitmproxy import http
def request(flow: http.HTTPFlow) -> None:
try:
if flow.request.pretty_url.startswith('https://要进行代理的url'):
flow.request.http_version = 'HTTP/1.1'
flow.request.host = '127.0.0.1'
flow.request.scheme = 'http'
flow.request.port = 9000
except Exception as e:
print(e)
3. 脚本启动
mitmproxy -s 脚本名.py
4. mitmproxy快捷键
- ? 帮助文档
- q 返回/退出程序
- b 保存response body
- f 输入过滤条件
- k 上
- j 下
- h 左
- l 右
- space 翻页
- enter 进入接口详情
- z 清屏
- e 编辑
- r 重新请求
三、手机设置代理
- 与pc端链接同一个局域网,设置WiFi代理端口为pc端ip,端口为mitmproxy端口(默认8080)。
- 手机浏览器访问mitm.it,下载安装mitmproxy证书,完成验证
- 安装成功后可能有些APP无法上网,这时还需要添加证书的信任
四、chrome设置代理
使用SwitchyOmega插件,下载安装证书