max*_*zig 102 networking monitoring http-logging
出于调试目的,我想监视网络接口上的 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
...
Run Code Online (Sandbox Code Playgroud)
我正在使用 Linux。
bah*_*mat 134
尝试tcpflow:
tcpflow -p -c -i eth0 port 80 | grep -oE '(GET|POST|HEAD) .* HTTP/1.[01]|Host: .*'
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
GET /search?q=stack+exchange&btnI=I%27m+Feeling+Lucky HTTP/1.1
Host: www.google.com
Run Code Online (Sandbox Code Playgroud)
您显然可以向 grep 语句添加额外的 HTTP 方法,并使用sed将这两行组合成一个完整的 URL。
小智 27
您可以使用httpry或Justniffer来做到这一点。
httpry 可以通过 Fedora 软件包存储库获得。
示例调用:
# httpry -i em1
Run Code Online (Sandbox Code Playgroud)
(其中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
Run Code Online (Sandbox Code Playgroud)
(输出略有缩短)
我正在寻找类似的东西,并增加了它也应该适用于https 的要求。
基于 pcap 的工具(如tcpdump kung futcpflow httpry urlsnarf和其他tcpdump kung fu)适用于 http,但对于安全请求,您就不走运了。
我想出了urldump,这是周围的小包装mitmproxy。
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
...
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅自述文件。