本文最后更新于4 天前
开发环境
(.venv) PS D:\work\project\20250913-mitmproxy> mitmproxy --version
Mitmproxy: 11.0.2
Python: 3.10.3
OpenSSL: OpenSSL 3.4.1 11 Feb 2025
Platform: Windows-10-10.0.26100-SP0
说明
写好了抓包的脚本proxy.py
,内容如下:
# -*- coding:utf-8 -*-
import json
import requests
from typing import Dict, List
import urllib.parse
filter_host = []
request_debug = True
response_debug = True
def request(url):
host = url.request.host
path = url.request.path
full_path = url.request.url
method = url.request.method
try:
if method == "GET":
params = url.request.query
else:
params = url.request.get_text()
except Exception:
return
if len(filter_host) != 0 and host not in filter_host:
return
if request_debug:
print("==================请求=====================")
print("发送请求到主机:" + host)
print("请求路径:" + path)
print("请求全路径:" + full_path)
print("请求方式:" + method)
print("请求参数:")
print(params)
print("==================结束=====================")
def response(flow):
response = flow.response
request = flow.request
host = request.host
url = request.url
method = request.method
try:
if method == "GET":
params = request.query
else:
params = request.get_text()
except Exception:
return
if len(filter_host) != 0 and host not in filter_host:
return
print("==================响应=====================")
if response_debug:
print("响应域名:" + host)
print("请求完整路径:" + url)
print(params)
print("响应参数:")
print(response.text)
print("==================响应结束=====================")
执行方式
mitmdump -p 6666 -s ./proxy.py --set body-size-limit=10k
打包exe
创建 start.py
代码如下:
import argparse
from mitmproxy.tools.main import mitmdump
import sys
def main():
# 创建 ArgumentParser 对象
parser = argparse.ArgumentParser(description='Run mitmdump with dynamic parameters.')
parser.add_argument('-p', '--port', type=str, default='6666', help='Proxy Port (default: "6666")')
parser.add_argument('-s', '--script', type=str, help='Path to the mitmproxy script.', default='./proxy.py')
# 解析命令行参数
args = parser.parse_args()
print(args)
# 构建 mitmdump 命令参数
command = [
"-p", args.port,
"-s", args.script,
"--set", "body-size-limit=10k"
] # 默认端口或者指定端口
# 运行 mitmdump
try:
mitmdump(command)
except KeyboardInterrupt:
print("\nmitmdump stopped by user")
sys.exit(0)
if __name__ == '__main__':
main()
安装 pyinstaller
pip install pyinstaller
打包成exe
pyinstaller -F -c .\start.py