it-swarm.it

Monitoraggio immediato delle richieste HTTP su un'interfaccia di rete?

Ai fini del debug voglio monitorare le richieste http su un'interfaccia di rete.

Utilizzando una riga di comando ingenua tcpdump ottengo troppe informazioni di basso livello e le informazioni di cui ho bisogno non sono rappresentate in modo molto chiaro.

Scaricare il traffico tramite tcpdump su un file e quindi usare wireshark ha lo svantaggio di non essere al volo.

Immagino un utilizzo di questo strumento:

$ 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
...

Sto usando Linux.

84
maxschlepzig

Prova tcpflow:

tcpflow -p -c -i eth0 port 80 | grep -oE '(GET|POST|HEAD) .* HTTP/1.[01]|Host: .*'

L'output è così:

GET /search?q=stack+exchange&btnI=I%27m+Feeling+Lucky HTTP/1.1
Host: www.google.com

È ovviamente possibile aggiungere ulteriori metodi HTTP all'istruzione grep e utilizzare sed per combinare le due righe in un URL completo.

106
bahamat

Puoi usare httpry o Justniffer per farlo.

httpry è disponibile ad es. tramite il repository di pacchetti Fedora.

Esempio di chiamata:

# httpry -i em1

(dove em1 indica un nome di interfaccia di rete)

Esempio di output:

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

(l'output è leggermente abbreviato)

24
X4lldux

Stavo cercando qualcosa di simile, con il requisito aggiuntivo che dovrebbe funzionare anche per https .

strumenti basati su pcap come tcpflowhttpryurlsnarf e altri tcpdump kung f funzionano bene per http, ma per richieste sicure sei sfortunato.

Mi è venuta in mente rldump , che è un piccolo involucro intorno a mitmproxy .
iptables viene utilizzato per reindirizzare il traffico verso il proxy, quindi funziona in modo trasparente.

$ 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
...

Vedi README per maggiori informazioni.

7
lemonsqueeze

Un'altra buona opzione potrebbe essere nethogs

Su Fedora è disponibile tra i pacchetti core e su centos puoi farlo attraverso il repository epel.

1
adriano72

Penso che Wireshark sia in grado di fare quello che vuoi

Tra i lati positivi, è molto potente, è possibile installarlo tramite apt-get ed è dotato di una GUI.

Tuttavia, il sistema di filtri è complicato, ma ci sono buoni tutorial integrati e ti forniranno una panoramica dal vivo o di avvio/arresto del traffico.

Digitare la parola "http" nel filtro ti darà probabilmente quello che stai cercando (cioè il traffico principale generato dagli utenti).

1
Mahmoud Hossam

C'è anche il programma da riga di comando urlsnarf che fa parte del pacchetto dsniff (che è anche impacchettato con, ad esempio, Fedora 19).

Esempio:

# 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
[..]

(quando si naviga prima su SE e poi su spiegel.de)

Limitazioni: dsnarf fa non supporta IPv6 . Sono in grado di riprodurre questo bug report con 0.17 su Fedora 19. Sembra anche rotto sotto Ubuntu fidato atm (funziona benissimo con lucido).

1
maxschlepzig