slm*_*slm 33 software-rec proxy http https
我正在寻找一个命令行工具,可以拦截HTTP/HTTPS请求,提取信息如:(内容,目的地等),执行各种分析任务,最后确定是否应该丢弃请求。然后必须将法律请求转发给应用程序。
本质上类似于tcpdump、Wireshark或Snort 的工具,但在 HTTP 级别运行。
slm*_*slm 28
尝试mitmproxy。
mitmproxy 是一个支持 SSL 的 HTTP 中间人代理。它提供了一个控制台界面,允许即时检查和编辑流量。
mitmdump 是 mitmproxy 的命令行版本,具有相同的功能但没有用户界面。想想 HTTP 的 tcpdump。

我设置了一个示例Jekyll Bootstrap应用程序,它在我的本地主机上侦听端口 4000。为了拦截它的流量,我会执行以下操作:
% mitmproxy --mode reverse:http://localhost:4000 -p 4001
Run Code Online (Sandbox Code Playgroud)
然后从我的 Web 浏览器 ( http://localhost:4001)连接到端口 4001 上的 mitmproxy ,从而导致 mitmproxy:

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

mitmproxy/mitmdump相当于tcpdumpHTTPS 的是mitmdump。步骤如下:
mitmproxy包(macOS brew install mitmproxy:)。通过以下命令安装mitmproxy CA证书:
$ mitmdump --mode reverse:http://mitm.it/ -p 8080
$ wget --content-disposition http://localhost:8080/cert/pem
$ open mitmproxy-ca-cert.pem
# Open, install and mark the certificate as trusted.
Run Code Online (Sandbox Code Playgroud)现在,这是如何测试反向代理的简单测试:
mitmdump --mode reverse:https://example.com/ -p 4433。在另一个 shell 中,运行curl https://localhost:4433:
现在,您应该看到页面源代码和mitmdump命令应该产生如下输出:
Proxy server listening at http://*:4433
[::1]:49446: clientconnect
[::1]:49446: GET https://example.com/ HTTP/2.0
<< 200 1.24k
[::1]:49446: clientdisconnect
Run Code Online (Sandbox Code Playgroud)对于所有流量,只需运行:mitmdump或mitmproxy。
请参阅:mitmproxy文档页面了解更多详细信息。
如果您使用的是 macOS,还有Charles Proxy应用程序 (GUI),它允许查看主机之间的所有 HTTP 和 SSL/HTTPS 流量。