拦截linux上的HTTP请求

Tho*_*mas 4 java linux https http

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

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

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

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

slm*_*slm 8

尝试使用mitmproxy.

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

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

特征

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

截图

在此输入图像描述

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

% mitmproxy -R http://localhost:4000 -p 4001
Run Code Online (Sandbox Code Playgroud)

然后从我的Web浏览器(http://localhost:4001)连接到我的端口4001上的mitmproxy ,导致这在mitmproxy中:

具有JB#1的mitmproxy的ss

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

具有JB#2的mitmproxy的ss


Tho*_*mas 0

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

hostAndPort = "localhost:80";
Run Code Online (Sandbox Code Playgroud)