python使用 mitmproxy实现署理

[复制链接]
发表于 2025-12-17 10:31:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
使用 mitmproxy 来实现署理是一个非常强盛的方法,由于它不光支持 HTTP/HTTPS 流量的署理,还支持实时修改哀求和相应内容。下面是怎样使用 Python 和 mitmproxy 实现一个根本的署理服务器,并拦截和修改 HTTP 哀求和相应的一个示例。
1. 安装 mitmproxy

起首,你必要安装 mitmproxy,可以通过以下下令安装:
  1. pip install mitmproxy
复制代码
2. 编写 mitmproxy 脚本

mitmproxy 答应你使用 Python 脚原来自界说署理活动,比方修改哀求、相应或实行其他使用。以下是一个简单的示例,展示怎样创建一个署理服务器,并拦截和修改哀求或相应:
示例:修改哀求 URL 和相应内容


  • 创建 Python 脚本,比方 proxy_script.py:
  1. from mitmproxy import http
  2. # 请求拦截和修改
  3. def request(flow: http.HTTPFlow) -> None:
  4.     """
  5.     在请求到达目标服务器前,修改请求
  6.     """
  7.     # 示例:如果请求的 URL 包含 "example.com",则将其修改为 "new-example.com"
  8.     if "example.com" in flow.request.pretty_url:
  9.         flow.request.host = "new-example.com"
  10.         print(f"Modified request URL: {flow.request.pretty_url}")
  11. # 响应拦截和修改
  12. def response(flow: http.HTTPFlow) -> None:
  13.     """
  14.     在响应返回给客户端前,修改响应
  15.     """
  16.     if flow.response.status_code == 200:
  17.         # 示例:如果响应的状态码是 200,修改响应的内容
  18.         flow.response.content = flow.response.content.replace(b"Hello", b"Hi")
  19.         print(f"Modified response content: {flow.response.content[:50]}...")
复制代码
分析:


  • request(flow):这是哀求拦截函数,它在哀求发送到目的服务器之前被调用。在这个函数里,你可以修改哀求的 URL、头部、参数等。
  • response(flow):这是相应拦截函数,它在服务器相应返回给客户端之前被调用。你可以修改相应的内容、状态码、头部等。
3. 运行 mitmproxy 署理

运行以下下令来启动 mitmproxy,并使用你创建的 Python 脚本:
  1. mitmdump -s proxy_script.py
复制代码

  • mitmdump 是 mitmproxy 的下令行工具,它比 mitmproxy 提供了更轻便的文本输出。
  • -s 用于指定你编写的脚本(比方 proxy_script.py)。
此时,mitmproxy 会启动一个署理服务,监听默认的端口 8080,并拦截全部颠末它的 HTTP/HTTPS 流量。
4. 设置客户端使用署理

为了使客户端的流量颠末 mitmproxy,你必要将客户端的 HTTP/HTTPS 哀求设置为使用 mitmproxy 署理。

  • 设置 HTTP/HTTPS 署理:将欣赏器或应用步伐的署理设置为 127.0.0.1:8080(默认的 mitmproxy 监听端口)。
5. 调试与查抄

你可以在下令行中看到 mitmproxy 输出的具体信息,比方每个哀求和相应的内容。

  • 当某个哀求符合条件时,脚本会修改其 URL。
  • 如果相应状态码为 200,脚本会修改相应内容中的部门笔墨。
6. HTTPS 署理

如果你必要处理处罚 HTTPS 流量,你必要为 mitmproxy 安装并信托其根证书。mitmproxy 会为 HTTPS 流量创建一个自署名证书,并使用该证书举行解密。你可以通过以下方式安装证书:

  • 启动 mitmproxy 后,打开欣赏器访问 http://mitm.it。
  • 根据页面提示下载并安装证书。
  • 之后,mitmproxy 就可以解密并署理 HTTPS 流量了。
7. 自界说和扩展

mitmproxy 提供了很多扩展功能,答应你根据必要定制署理活动。你可以使用 Python 编写更多复杂的逻辑,比方:

  • 基于哀求内容实行条件判断(比方,仅修改特定范例的哀求)。
  • 存储和回放哀求相应(举行流量重放或模拟)。
  • 记载哀求和相应并导出为文件或日志日志,举行进一步分析。
总结

通过 mitmproxy,你可以轻松地创建一个功能强盛的署理服务器,拦截和修改 HTTP/HTTPS 流量,实用于多种应用场景,如网络调试、流量分析、网络安全测试等。Python 脚本使得署理活动高度可定制,险些可以处理处罚任何你必要的使用。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表