web-dev-qa-db-ja.com

ネットワークインターフェースで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を使用して2行を完全なURLに結合できます。

106
bahamat

httpry または Justniffer を使用してそれを行うことができます。

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でも機能するという要件が追加されました。

tcpflowhttpryurlsnarfなどの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で壊れているようです(lucidでは問題なく動作します)。

1
maxschlepzig