7

我需要能够拦截 HTTP 请求、提取它们的信息(内容、目的地……),执行各种分析任务,并最终确定是否应该丢弃请求的东西。然后必须将法律请求转发给应用程序。

基本上,与 IDS 具有相同的功能。但请注意,我不是在寻找数据包嗅探器/过滤器。我想要一些在 HTTP 级别上运行的东西。

它应该可以在 linux 上实现,并在与请求所针对的应用程序相同的系统上运行。

作为奖励,可以支持 https(请求内容的未加密查看)

4

7 回答 7

10

试试mitmproxy

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

  • mitmdump 是 mitmproxy 的命令行版本,具有相同的功能,但没有用户界面。想想 HTTP 的 tcpdump。

特征

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

截屏

在此处输入图像描述

例子

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

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

http://localhost:4001然后从我的网络浏览器(

带 JB #1 的 mitmproxy ss

然后,您可以选择任何GET结果以查看与该结果相关的标题信息GET

带 JB #2 的 mitmproxy ss

于 2013-02-17T19:32:40.203 回答
3

尝试使用 Burp Proxy,听起来像你需要的。

于 2015-11-18T19:01:34.803 回答
2

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

于 2013-02-17T19:34:14.367 回答
1

您应该可以为此使用 squid 代理(https://en.wikipedia.org/wiki/Squid_(software)

于 2013-02-17T19:31:22.700 回答
0

为什么不使用 Apache HTTP 客户端http://hc.apache.org/httpclient-legacy/tutorial.html 这个简单的库很有用。

于 2013-02-17T19:53:40.333 回答
0

我最终使用了LittleProxy,因为它是 java、快速且轻量级的。它最初是一个正向代理,所以我不得不通过将每个请求转发到本地主机来调整它以适应反向代理功能。我只是通过编辑 HttpRequestHandler 来做到这一点。我硬编码了主机和端口地址。

hostAndPort = "localhost:80";
于 2013-02-26T07:09:01.417 回答
0

您应该了解有关ICAP的更多信息,然后为您的 HTTP 过滤应用程序创建一个 ICAP 服务器。

于 2013-02-17T19:31:45.087 回答