实时监控网络接口上的 HTTP 请求?

实时监控网络接口上的 HTTP 请求?

出于调试目的,我想监视网络接口上的 http 请求。

使用简单的tcpdump命令行,我获得了太多的低级信息,并且我需要的信息没有非常清楚地表示。

将流量转储tcpdump到文件然后使用的wireshark缺点是它不是即时的。

我想象这样的工具用法:

$ monitorhttp -ieth0 --only-get --just-urls
2011-01-23 20:00:01 GET http://foo.example.org/blah.js
2011-01-23 20:03:01 GET http://foo.example.org/bar.html
...

我正在使用Linux。

答案1

尝试tcpflow

tcpflow -p -c -i eth0 port 80 | grep -oE '(GET|POST|HEAD) .* HTTP/1.[01]|Host: .*'

输出是这样的:

GET /search?q=stack+exchange&btnI=I%27m+Feeling+Lucky HTTP/1.1
Host: www.google.com

显然,您可以向 grep 语句添加其他 HTTP 方法,并使用sed将这两行组合成完整的 URL。

答案2

您可以使用httpry或者贾斯特尼弗要做到这一点。

httpry例如可以通过 Fedora 软件包存储库获得。

调用示例:

# httpry -i em1

(其中em1表示网络接口名称)

输出示例:

2013-09-30 21:35:20    192.168.0.1     198.252.206.16    >    POST    unix.stackexchange.com    /posts/6281/editor-heartbeat/edit    HTTP/1.1
2013-09-30 21:35:20    198.252.206.16  192.168.0.1       < HTTP/1.1   200    OK
2013-09-30 21:35:49    192.168.0.1     198.252.206.16    >    POST    unix.stackexchange.com    /posts/validate-body                 HTTP/1.1
2013-09-30 21:35:49    198.252.206.16  192.168.0.1       < HTTP/1.1   200    OK
2013-09-30 21:33:33    192.168.0.1      92.197.129.26    >    GET     cdn4.spiegel.de    /images/image-551203-breitwandaufmacher-fgoe.jpg    HTTP/1.1

(输出有点缩短)

答案3

我一直在寻找类似的东西,并附加了它应该适用的要求https也。

基于 pcap 的工具tcpflow httpry urlsnarftcpdump功夫对于 http 来说效果很好,但是对于安全请求来说你就不那么幸运了。

我想出了网址转储,这是一个小包装米特普罗西
iptables用于将流量重定向到代理,因此它的工作方式是透明的。

$ sudo urldump   
http://docs.mitmproxy.org/en/stable/certinstall.html
http://docs.mitmproxy.org/en/stable/_static/js/modernizr.min.js
https://media.readthedocs.org/css/sphinx_rtd_theme.css
https://media.readthedocs.org/css/readthedocs-doc-embed.css
https://media.readthedocs.org/javascript/readthedocs-doc-embed.js
...

自述文件了解更多信息。

答案4

另一个不错的选择可能是网络猪

在 fedora 上可以在核心软件包中找到,在 centos 上您可以通过 epel repo 获取它。

相关内容