Python mitmproxy用法
时间: 2024-01-17 17:04:25 浏览: 120
mitmproxy是一款强大的HTTP代理服务器,可以拦截和修改HTTP请求和响应,可以用于调试和测试HTTP应用程序,也可以用于抓取和分析HTTP流量。以下是mitmproxy的一些常用用法:
1. 启动mitmproxy代理服务器
在命令行中输入以下命令即可启动mitmproxy代理服务器:
```
mitmproxy
```
默认情况下,mitmproxy会监听本地的8080端口,可以通过设置参数修改监听端口、代理模式和Addon脚本等。
2. 使用Addon拦截和处理HTTP请求和响应
可以使用Addon机制实现对HTTP请求和响应的拦截和处理。可以继承mitmproxy.Addon类,重写其中的方法实现自定义功能,例如对请求和响应进行分析、记录和修改等。
以下是一个自定义的Addon,实现了对HTTP请求和响应的记录和修改:
```python
from mitmproxy import http, ctx
class MyAddon(http.HTTPAddon):
def request(self, flow: http.HTTPFlow) -> None:
# 记录HTTP请求
ctx.log.info(f"Request {flow.request.url}")
def response(self, flow: http.HTTPFlow) -> None:
# 修改HTTP响应
flow.response.content = b"Hello, world!"
flow.response.headers["content-type"] = "text/plain"
# 记录HTTP响应
ctx.log.info(f"Response {flow.request.url}: {flow.response.status_code}")
addons = [
MyAddon()
]
# 启动mitmproxy代理服务器
from mitmproxy.tools.main import mitmdump
mitmdump(['-p', '8080', '-s', __file__] + sys.argv[1:])
```
在这个Addon中,重写了request()和response()方法,对HTTP请求进行记录,在HTTP响应中修改内容和头信息,并对HTTP响应进行记录。可以根据需要对请求和响应进行分析、记录和修改等操作。
3. 使用过滤器筛选HTTP请求和响应
可以使用过滤器对HTTP请求和响应进行筛选,例如根据URL、请求方法、请求头、请求体、响应状态码等条件进行筛选。
以下是一个使用过滤器筛选HTTP请求和响应的例子:
```python
def request(flow: http.HTTPFlow) -> None:
# 只拦截GET请求和URL以"http://example.com"开头的请求
if flow.request.method == "GET" and flow.request.url.startswith("http://example.com"):
# 记录HTTP请求
ctx.log.info(f"Request {flow.request.url}")
def response(flow: http.HTTPFlow) -> None:
# 只拦截响应状态码为200的响应
if flow.response.status_code == 200:
# 记录HTTP响应
ctx.log.info(f"Response {flow.request.url}: {flow.response.status_code}")
```
在这个例子中,使用了过滤器对HTTP请求和响应进行筛选,只拦截GET请求和URL以"http://example.com"开头的请求,只拦截响应状态码为200的响应。可以根据需要对请求和响应进行筛选和处理。
4. 使用mitmdump命令行工具进行HTTP流量分析
mitmdump是mitmproxy的命令行工具,可以用于HTTP流量分析和交互式修改。以下是一些常用的mitmdump命令:
- 显示HTTP请求和响应的信息:
```
mitmdump -p 8080
```
- 显示HTTP请求和响应的详细信息:
```
mitmdump -p 8080 -v
```
- 显示HTTP请求和响应的简要信息:
```
mitmdump -p 8080 -q
```
- 保存HTTP请求和响应的信息到文件:
```
mitmdump -p 8080 -w output.txt
```
- 将HTTP请求和响应的信息转发到另一个HTTP服务器:
```
mitmdump -p 8080 -U http://example.com
```
- 使用Addon拦截和处理HTTP请求和响应:
```
mitmdump -p 8080 -s myaddon.py
```
可以根据需要使用mitmdump命令进行HTTP流量分析和交互式修改,也可以结合Addon实现自定义的HTTP流量分析和处理。
阅读全文