python mitmproxy 简单使用

安装python库

pip install mitmproxy6.0.2 -i https:…pypi.douban.com/simple
pip uninstall MarkupSafe
pip install MarkupSafe
2.1.1 -i https:…pypi.douban.com/simple

安装证书

启动mitmproxy 代理

from mitmproxy import options
from mitmproxy import proxy
from mitmproxy.tools.dump import DumpMaster

class Counter:
    def __init__(self):
        pass


def run(port):
    myaddon = Counter()
    opts = options.Options(listen_port=port)
    pconf = proxy.config.ProxyConfig(opts)
    m = DumpMaster(opts, with_termlog=False, with_dumper=False)
    m.server = proxy.server.ProxyServer(pconf)
    m.addons.add(myaddon)

    print(f'启动监听 {port} 端口')
    try:
        m.run()
    except KeyboardInterrupt:
        m.shutdown()


if __name__ == "__main__":
    run(5670)

设置浏览器代理,访问 mitm.it
在这里插入图片描述
安装证书

简单操作

class Counter:
    def __init__(self):
        pass

    def request(self, flow: mitmproxy.http.HTTPFlow):
        if "test_url" in flow.request.url:
            # 根据请求链接做处理
            pass
    def response(self, flow: mitmproxy.http.HTTPFlow):
        if "test_url" in flow.request.url:
            # 根据请求链接确定需要的请求 对响应做修改
            resp = flow.response.text
            result = json.loads(resp)
            # ... 修改操作
            flow.response.set_text(json.dumps(result))
            print("已修改响应内容")

简单的拦截修改响应内容就已经完成了
mitmproxy + selenium web注入js代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
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流量分析和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值