转载:mitmproxy 5种代理模式

5种代理模式

mitmproxy操作模式有5种:

  • 正向代理( Regular Proxy)(常规模式)
  • 透明代理(Transparent Proxy)
  • 反向代理(Reverse Proxy)
  • 上游代理(Upstream Proxy)
  • socks代理(SOCKS Proxy)
    如何选择使用?
    在这里插入图片描述
  • 一般在服务端会使用反向代理
  • 当你不需要将客户端配置为显式使用HTTP代理。可以使用透明代理
  • 当你不许需要使用mitmproxy作为第二层代理,使用常规代理
  • 需要使用mitproxy作为第二层代理,使用上游代理(Upstream Proxy Mode)

1. 正向代理( Regular Proxy)

Mitmproxy的常规模式是最简单和最容易设置的。
开始使用mitmproxy。
通过显式设置HTTP代理,将客户端配置为使用mitmproxy。
快速检查:您应该已经能够通过代理访问未加密的HTTP站点。
打开magic domain mitm.it并为您的设备安装证书。
不幸的是,一些应用程序绕过系统HTTP代理设置 - Android应用程序是一个常见的例子。在这些情况下,您需要使用mitmproxy的透明模式。
如果您要代理外部设备,您的网络可能如下所示:
在这里插入图片描述
方括号表示源和目标IP地址。您的客户端显式连接到mitmproxy,mitmproxy显式连接到目标服务器。

2. 透明代理(Transparent Proxy)

在透明模式下,流量被定向到网络层的代理,无需任何客户端配置。这使得透明代理非常适合无法更改客户端行为的情况。在下图中,在路由器和互联网之间插入了运行mitmproxy的机器:
在这里插入图片描述
方括号表示源和目标IP地址。圆括号标记以太网/数据链路层上的下一跳。这种区别很重要:当数据包到达mitmproxy机器时,它仍然必须发送到目标服务器。这意味着在流量到达mitmproxy之前不应该应用网络地址转换,因为这会删除目标信息,使得mitmproxy无法确定真实目的地。
在这里插入图片描述
模式透明错误

通用配置
有许多方法可以配置网络以进行透明代理。我们将看两个常见的场景:
配置客户端以使用自定义网关/路由器/“下一跳”
在路由器上实现自定义路由
在大多数情况下,建议使用第一种选择,因为它易于使用。

(a)自定义网关
在目标IP完好无损的情况下获得到mitmproxy机器的流量的一种简单方法是简单地使用mitmproxy框配置客户端作为默认网关。
在这里插入图片描述
在这种情况下,我们会:
将代理计算机配置为透明模式。您可以在透明部分找到说明。
配置客户端以使用代理计算机的IP作为默认网关。
快速检查:此时,您应该已经能够通过代理访问未加密的HTTP站点。
打开magic domain mitm.it并为您的设备安装证书。
通过DHCP向客户端提供设置,可以自动在客户端上设置自定义网关。这样可以设置一个拦截网络,其中所有客户端都自动代理,这可以节省时间和精力。
透明模式故障排除
不正确的透明模式配置是常见的错误来源。如果它不适合您,请尝试以下方法:
打开mitmproxy的事件日志 - 你看到clientconnect消息吗?如果不是,则数据包不会到达代理。一个常见原因是ICMP重定向的发生,这意味着您的计算机通过直接联系您的路由器告诉客户端有更快的方式访问互联网(请参阅有关如何禁用它们的透明部分)。如果有疑问, Wireshark可以帮助您查看是否有东西到达您的机器。
确保您没有在客户端上显式配置HTTP代理。在透明模式下不需要这样做。
重新检查透明部分中的说明。你错过了什么?
如果您遇到此处应列出的任何其他陷阱,请告知我们!

(b)自定义路由
在某些情况下,您可能需要更精细地控制哪些流量到达mitmproxy实例,哪些流量不到达。例如,您可以选择仅将流量转移到透明代理中的某些主机。有很多方法可以实现这一点,而且很大程度上取决于您正在使用的路由器或数据包过滤器。在大多数情况下,配置将如下所示:
在这里插入图片描述

3. 反向代理(Reverse Proxy)

mitmproxy通常与使用代理访问Internet的客户端一起使用。使用反向代理模式,您可以使用mitmproxy像普通的HTTP服务器一样:
在这里插入图片描述
有各种用例:
假设您有一个在http://example.local/上运行的内部API 。您现在可以在http: //debug.example.local/上以反向代理模式设置mitmproxy,并动态地将客户端指向这个新的API端点,该端点为他们提供相同的数据,并为您提供调试信息。同样,您可以将您的真实服务器移动到不同的IP /端口,并在原始位置设置mitmproxy以调试和/或重定向所有会话。
假设您是一名在http://example.com/上工作的Web开发人员(开发版本在http:// localhost:8000 /上运行)。您可以修改hosts文件,以便example.com指向127.0.0.1,然后在端口80上以反向代理模式运行mitmproxy。您可以在example.com域上测试您的应用程序,并获取所有请求记录在mitmproxy中。
假设您有一些应该获得SSL支持的玩具项目。只需将mitmproxy设置为端口443上的反向代理,您就完成了(mitmdump -p 443 --mode reverse:http://localhost:80/)。Mitmproxy自动检测TLS流量并动态拦截它。有针对此特定任务的更好工具,但是mitmproxy是设置SSL语音服务器的非常快速和简单的方法。
想要在服务器前添加不支持SSL的压缩代理吗?您甚至可以生成终止SSL(–mode reverse:http://…)的mitmproxy实例,将其指向压缩代理并让压缩代理指向启动SSL的mitmproxy(–mode reverse:https://…),然后指向真实服务器。如你所见,这是一个相当灵活的事情。

主机头
在反向代理模式下,mitmproxy会自动重写Host标头以匹配上游服务器。这允许mitmproxy容易地连接到开放web上的现有端点(例如mitmproxy --mode reverse:https://example.com)。您可以使用该keep_host_header选项禁用此行为。
但是,请记住,返回的文档中的绝对URL或HTTP重定向不会被mitmproxy重写。这意味着如果您在返回的网页中单击“ http://example.com ” 的链接,您将直接转到该URL,绕过mitmproxy。
解决此问题的一种可能方法是修改操作系统的hosts文件,以便“example.com”解析为您的代理的IP,然后直接访问example.com来访问代理。确保您的代理仍然可以解析原始IP,或在mitmproxy中指定IP。

注意:互动使用
反向代理模式通常不足以在不同的URL创建交互式网站的副本。提供给客户端的HTML保持不变 - 只要用户单击非相对URL(或下载非相对图像资源),流量就不再通过mitmproxy。

4. 上游代理(Upstream Proxy)

如果要通过在不同的代理设备前添加mitmproxy来链接代理,可以使用mitmproxy的上游模式。在上游模式下,所有请求都无条件地传输到您选择的上游代理。
在这里插入图片描述
mitmproxy在上游代理模式下支持显式HTTP和显式HTTPS。理论上你可以在一行中链接多个mitmproxy实例,但这在实践中没有任何意义(即在我们的测试之外)。

5. socks代理(SOCKS Proxy)

在此模式下,mitmproxy充当SOCKS5代理。

本文转载地址:http://www.chenxm.cc/article/817.html

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mitmproxy 是一强大的用于网络代理和拦截的工具,可以用于网络流量的拦截、修改和篡改,同时也能够实时展示网络流量的信息。对于想要深入了解 mitmproxy 工具背后实现原理的开发者来说,进行源码分析是必不可少的一步。 mitmproxy 的源码分析可以从以下几个方面展开: 1. 代理服务器的搭建:mitmproxy 的核心功能就是作为一个代理服务器,接收来自客户端的请求,并将其转发至服务器,同时还可以拦截和修改请求和响应数据。源码分析时,可以关注 mitmproxy 如何建立起与客户端和服务器之间的连接,以及如何实现请求和响应数据的转发和拦截。 2. 数据的拦截和修改:mitmproxy 对于请求和响应数据的拦截和修改非常灵活,可以通过编写自定义的脚本来实现各功能。源码分析时,可以研究 mitmproxy 是如何根据用户配置的规则对数据进行拦截和修改的,能够深入了解其中的原理和实现细节。 3. 流量监控和分析:mitmproxy 能够实时展示网络流量的信息,包括请求和响应的头部信息、数据内容以及相关的时间、大小等信息。源码分析时,可以研究 mitmproxy 是如何实现数据的抓取和展示的,了解其底层的流程和机制。 4. 功能扩展和插件开发:mitmproxy 提供了丰富的功能扩展接口,开发者可以通过编写插件来扩展 mitmproxy 的功能。源码分析时,可以研究 mitmproxy 提供的插件接口和开发文档,了解如何通过开发插件来扩展 mitmproxy。 总之,mitmproxy 的源码分析能够深入了解其实现原理和内部机制,为后续的定制化开发和功能扩展提供基础。通过研究 mitmproxy 的源码,开发者可以更好地理解其使用方式和限制,并在实践中更好地应用 mitmproxy 工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值