Pro účely ladění chci sledovat požadavky http na síťovém rozhraní.
Pomocí naivního příkazového řádku tcpdump
získám příliš mnoho informací na nízké úrovni a informace, které potřebuji, nejsou příliš jasně znázorněny.
Dumping provozu přes tcpdump
do souboru a poté použití wireshark
má tu nevýhodu, že není za běhu.
Představuji si použití tohoto nástroje:
$ 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
...
Používám Linux.
Zkuste tcpflow
:
tcpflow -p -c -i eth0 port 80 | grep -oE '(GET|POST|HEAD) .* HTTP/1.[01]|Host: .*'
Výstup je následující:
GET /search?q=stack+exchange&btnI=I%27m+Feeling+Lucky HTTP/1.1
Host: www.google.com
K příkazu grep můžete samozřejmě přidat další metody HTTP a pomocí sed
zkombinovat dva řádky do úplné adresy URL.
K tomu můžete použít httpry nebo Justniffer .
httpry
je k dispozici např. prostřednictvím úložiště balíčků Fedora.
Příklad volání:
# httpry -i em1
(kde em1
označuje název síťového rozhraní)
Příklad výstupu:
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
(výstup je trochu zkrácen)
Hledal jsem něco podobného, s přidaným požadavkem, aby to fungovalo také pro https .
nástroje založené na pcap jako tcpflow
httpry
urlsnarf
a další tcpdump kung f fungují dobře pro http, ale pro zabezpečené požadavky máte štěstí.
Přišel jsem s rldump , což je malý obal kolem mitmproxy .iptables
se používá k přesměrování provozu na proxy, takže funguje transparentně.
$ 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
...
Více informací viz README .
Další dobrou volbou může být nethogs
Na Fedoře je k dispozici mezi jádrovými balíčky a na centech to můžete získat pomocí repel epelu.
Myslím, že Wireshark je schopen dělat to, co chcete
Na druhou stranu, je to velmi silné, můžete jej nainstalovat pomocí apt-get a přichází s GUI.
Filtrační systém je však komplikovaný - ale jsou zde vestavěny dobré návody a dá vám živý nebo start/stop přehled o provozu.
Zadáním slova http do filtru pravděpodobně získáte to, co hledáte (tj. Hlavní provoz generovaný uživateli).
Existuje také program příkazového řádku urlsnarf
, který je součástí balíčku dsniff (který je také balen např. S Fedora 19).
Příklad:
# 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
[..]
(při procházení nejprve na SE a poté na spiegel.de)
Omezení: dsnarf nemá nepodporuje IPv6 . Dokážu reprodukovat tuto zprávu o chybě s 0,17 na Fedoře 19. Zdá se také, že je rozbitá pod důvěryhodnou atmosférou Ubuntu (funguje dobře pod přehledným).