拦截linux上的HTTP请求

时间:2013-02-17 19:28:54

标签: java linux http https

我需要一些可以拦截HTTP请求,提取信息(内容,目的地......),执行各种分析任务,最后确定是否应该删除请求的东西。法律请求必须转发给申请。

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

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

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

7 个答案:

答案 0 :(得分:7)

尝试mitmproxy

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

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

功能

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

截图

enter image description here

实施例

我设置了一个示例Jekyll Bootstrap应用,它正在我的localhost上侦听端口4000。为了拦截它的流量,我会做以下事情:

% mitmproxy -R http://localhost:4000 -p 4001

然后从我的网络浏览器(http://localhost:4001)连接到我的端口4001上的mitmproxy,从而导致这种情况发生:

ss of mitmproxy w/ JB #1

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

ss of mitmproxy w/ JB #2

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您应该了解有关ICAP的更多信息,然后制作HTTP过滤应用程序的ICAP服务器。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

hostAndPort = "localhost:80";

答案 6 :(得分:0)

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