我需要能够拦截 HTTP 请求、提取它们的信息(内容、目的地……),执行各种分析任务,并最终确定是否应该丢弃请求的东西。然后必须将法律请求转发给应用程序。
基本上,与 IDS 具有相同的功能。但请注意,我不是在寻找数据包嗅探器/过滤器。我想要一些在 HTTP 级别上运行的东西。
它应该可以在 linux 上实现,并在与请求所针对的应用程序相同的系统上运行。
作为奖励,可以支持 https(请求内容的未加密查看)
试试mitmproxy。
mitmproxy 是一个支持 SSL 的 HTTP 中间人代理。它提供了一个控制台界面,允许即时检查和编辑流量。
mitmdump 是 mitmproxy 的命令行版本,具有相同的功能,但没有用户界面。想想 HTTP 的 tcpdump。
我设置了一个示例Jekyll Bootstrap应用程序,它在我的本地主机上的端口 4000 上进行监听。要拦截它的流量,我会执行以下操作:
% mitmproxy --mode reverse:http://localhost:4000 -p 4001
http://localhost:4001
然后从我的网络浏览器(
然后,您可以选择任何GET
结果以查看与该结果相关的标题信息GET
:
尝试使用 Burp Proxy,听起来像你需要的。
我为此使用Wire Shark,如果您提供所有服务器证书,它甚至可以解密 HTTPS。
您应该可以为此使用 squid 代理(https://en.wikipedia.org/wiki/Squid_(software))
为什么不使用 Apache HTTP 客户端http://hc.apache.org/httpclient-legacy/tutorial.html 这个简单的库很有用。
我最终使用了LittleProxy,因为它是 java、快速且轻量级的。它最初是一个正向代理,所以我不得不通过将每个请求转发到本地主机来调整它以适应反向代理功能。我只是通过编辑 HttpRequestHandler 来做到这一点。我硬编码了主机和端口地址。
hostAndPort = "localhost:80";
您应该了解有关ICAP的更多信息,然后为您的 HTTP 过滤应用程序创建一个 ICAP 服务器。