it-swarm.cn

在网络接口上实时监视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。

84
maxschlepzig

尝试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。

106
bahamat

您可以使用 httpryJustniffer 来做到这一点。

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

(输出略有缩短)

24
X4lldux

我一直在寻找类似的东西,但又增加了要求,它也应该适用于https

tcpflow _ httpryurlsnarf等基于pcap的工具和其他 tcpdump kung f 可以很好地用于http,但是对于安全请求,您很不走运。

我想出 rldump ,这是 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
...

有关更多信息,请参见 [〜#〜] readme [〜#〜]

7
lemonsqueeze

另一个不错的选择可能是 nethogs

在Fedora上,核心软件包中都有可用的软件包,在centos上,您可以通过epel仓库获得它。

1
adriano72

我认为 Wireshark 有能力做你想要的

从好的方面来说,它非常强大,您可以通过apt-get进行安装,它带有GUI。

但是,过滤器系统很复杂-但是内置了不错的教程,它将为您提供实时的或开始/停止的流量概览。

在过滤器中输入单词“ http”可能会为您提供所需的内容(即用户产生的主要流量)。

1
Mahmoud Hossam

还有命令行程序urlsnarf,它是 dsniff 程序包的一部分(也与Fedora 19一起打包)。

例:

# urlsnarf -i em1
urlsnarf: listening on em1 [tcp port 80 or port 8080 or port 3128]
jhost - - [29/May/2014:10:25:09 +0200] "GET http://unix.stackexchange.com/questions HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
jhost - - [29/May/2014:10:25:36 +0200] "GET http://www.spiegel.de/ HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
jhost - - [29/May/2014:10:25:36 +0200] "GET http://www.spiegel.de/layout/css/style-V5-2-2.css HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
jhost - - [29/May/2014:10:25:36 +0200] "GET http://www.spiegel.de/layout/jscfg/http/global-V5-2-2.js HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
jhost - - [29/May/2014:10:25:36 +0200] "GET http://www.spiegel.de/layout/js/http/javascript-V5-2-2.js HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
jhost - - [29/May/2014:10:25:36 +0200] "GET http://www.spiegel.de/layout/js/http/interface-V5-2-2.js HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
jhost - - [29/May/2014:10:25:36 +0200] "GET http://www.spiegel.de/layout/js/http/netmind-V5-2-2.js HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
jhost - - [29/May/2014:10:25:36 +0200] "GET http://www.spiegel.de/favicon.ico HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
jhost - - [29/May/2014:10:25:36 +0200] "POST http://ocsp.thawte.com/ HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
jhost - - [29/May/2014:10:25:36 +0200] "POST http://ocsp.thawte.com/ HTTP/1.1" - - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0
[..]

(当先浏览到SE,然后浏览到spiegel.de时)

限制:dsnarf具有 不支持IPv6 。我可以在Fedora 19上用0.17重现此错误报告。在Ubuntu可信任的atm下,它似乎也被破坏了(在清晰的环境下工作正常)。

1
maxschlepzig