拦截Linux上的HTTP请求

10
我需要一个可以拦截HTTP请求、提取其信息(内容、目标等)、执行各种分析任务以及最终确定是否应该丢弃请求的工具。合法请求必须被转发到应用程序中。
基本上,这与IDS具有相同的功能。但请注意,我不是在寻找数据包嗅探器/过滤器。我想要的是在HTTP层面上操作的工具。
它应该可在Linux上实现,并在请求所指向的应用程序系统上运行。
作为奖励,还应支持https(查看请求内容而无需加密)。

你可能需要嗅探数据包并筛选出HTTP数据包... https://dev59.com/81DTa4cB1Zd3GeqPLrtL - gsgx
HTTP请求可以分成多个数据包,对吗? - Thomas
7个回答

15

试试mitmproxy

  • mitmproxy是一个支持SSL的HTTP中间人代理。它提供了一个控制台接口,允许实时检查和编辑流量。

  • mitmdump是mitmproxy的命令行版本,具有相同的功能,但没有用户界面。可以将其视为针对HTTP的tcpdump。

特点

  • 拦截HTTP请求和响应,并在实时修改它们。
  • 保存完整的HTTP会话以便稍后重放和分析。
  • 重放HTTP会话的客户端部分。
  • 重放先前记录的服务器的HTTP响应。
  • 反向代理模式将流量转发到指定的服务器。
  • 使用Python对HTTP流量进行编写脚本式更改。
  • 生成用于拦截的SSL证书。

屏幕截图

enter image description here

示例

我设置了一个Jekyll Bootstrap应用程序,它正在我的本地主机上的4000端口上监听。要拦截它的流量,我会执行以下操作:

% mitmproxy --mode reverse:http://localhost:4000 -p 4001

然后从我的Web浏览器(http://localhost:4001)连接到端口4001上的mitmproxy,会在mitmproxy中得到以下结果:

ss of mitmproxy w/ JB #1

随后,您可以选择任何一个GET结果来查看与该GET相关联的标头信息:

ss of mitmproxy w/ JB #2


mitmproxy v0.11.3 将 REVERSE_PROXY 选项从 -P 改为 -R。 - Fabio Falci
好用又方便,我使用的是2.0.2版本。 - Betlista

3

尝试使用Burp Proxy,听起来是您需要的。


2
我使用 Wire Shark 来进行此操作,如果您提供所有服务器证书,它甚至可以解密 HTTPS。

1

0

你应该更多地了解ICAP,然后在你的HTTP过滤应用程序中创建一个ICAP服务器。


0

0

最终我选择了LittleProxy,因为它是Java编写的,速度快且轻量级。 它原本是正向代理,所以我需要通过将每个请求转发到本地主机来调整其为反向代理功能。 我只需简单地编辑HttpRequestHandler即可实现此操作。我硬编码了主机和端口地址。

hostAndPort = "localhost:80";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接