VPS安装mitmproxy用脚本实现Charles的Map Local功能

mitmproxy是基于python的抓包代理工具,支持https等协议。同时,依托python平台,可以外挂处理脚本(python编写),是非常合适的抓包、解包、改包工具。

一般来说,在桌面系统,有比较完善的、界面友好的抓包工具,比如Charles。一些测试都可以在本地完成,但如果需要长时间的外网访问,这些工具就显得不足了。

不过,我们可以通过VPS+mitmproxy+脚本(script)的方式实现Charles的功能。本次将会介绍VPS如何安装mitmproxy和用脚本(script)实现Charles的Map Local功能。

VPS安装mitmproxy

以ubuntu为例,安装python3和pip。

$ sudo apt-get update
$ sudo apt-get install python3
$ sudo apt install python3-pip

使用pip命令,安装mitmproxy。

sudo pip3 install mitmproxy

完成后,你就成功安装了mitmproxy。现在有三个命令可以使用:mitmproxymitmdumpmitmweb

简单来说,mitmproxy是命令行版本,mitmdump是信息简化版,mitmweb则是提供了一个网页版的后台。

对于我们来说可以直接使用如下命令启动代理监听:

# -p 监听端口
# --set block_global=false 允许外网连接到代理服务器
mitmdump -p 8888 --set block_global=false

用脚本实现Charles的Map Local功能

首先需要在本地对修改进行测试好,生成好需要map的本地文件(例如Test.json),并上传到服务器。

创建代理脚本文件 scrip.py,内容如下

from mitmproxy import http

def request(flow: http.HTTPFlow) -> None:

    if flow.request.pretty_url == "https://example.com/test/Test_online.json": # 需要map的请求
        with open('/www/mitm/Test.json', 'r') as f: # 输入本地map文件的绝对路径
        	content = f.read()
        flow.response = http.HTTPResponse.make(
            200,  # (optional) status code
            content,  # (optional) content
            {"Content-Type": "text/plain"}  # (optional) headers
        )

更多说明请参阅官方文档

将启动命令中加入刚才创建好的脚本

# -p 监听端口
# --set block_global=false 允许外网连接到代理服务器
# -s 脚本的绝对地址
mitmdump -p 8888 --set block_global=false -s /root/mitm/script.py

至此,我们就完成了VPS安装mitmproxy,并用脚本(script)实现了Charles的Map Local功能。

发表评论

电子邮件地址不会被公开。 必填项已用*标注