出于调试目的,我想监视网络接口上的 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
例如可以通过 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
urlsnarf
等tcpdump功夫对于 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 获取它。