À des fins de débogage, je souhaite surveiller les requêtes http sur une interface réseau.
En utilisant une ligne de commande naïve tcpdump
, j'obtiens trop d'informations de bas niveau et les informations dont j'ai besoin ne sont pas très clairement représentées.
Le transfert du trafic via tcpdump
vers un fichier, puis l'utilisation de wireshark
a l'inconvénient de ne pas être à la volée.
J'imagine une utilisation de l'outil comme celle-ci:
$ 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
...
J'utilise Linux.
Essayez tcpflow
:
tcpflow -p -c -i eth0 port 80 | grep -oE '(GET|POST|HEAD) .* HTTP/1.[01]|Host: .*'
La sortie est comme ceci:
GET /search?q=stack+exchange&btnI=I%27m+Feeling+Lucky HTTP/1.1
Host: www.google.com
Vous pouvez évidemment ajouter des méthodes HTTP supplémentaires à l'instruction grep et utiliser sed
pour combiner les deux lignes en une URL complète.
Vous pouvez utiliser httpry ou Justniffer pour ce faire.
httpry
est disponible par exemple via le référentiel de packages Fedora.
Exemple d'appel:
# httpry -i em1
(où em1
désigne un nom d'interface réseau)
Exemple de sortie:
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
(la sortie est un peu raccourcie)
Je cherchais quelque chose de similaire, avec l'exigence supplémentaire qu'il devrait également fonctionner pour https .
les outils basés sur pcap comme tcpflow
httpry
urlsnarf
et autres tcpdump kung f fonctionnent bien pour http, mais pour les demandes sécurisées, vous n'avez pas de chance.
Je suis venu avec rldump , qui est un petit wrapper autour mitmproxy .iptables
est utilisé pour rediriger le trafic vers le proxy, il fonctionne donc de manière transparente.
$ 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
...
Voir README pour plus d'informations.
Une autre bonne option pourrait être nethogs
Sur Fedora est disponible parmi les packages de base, et sur centos vous pouvez l'obtenir via le repo epel.
Je pense que Wireshark est capable de faire ce que vous voulez
Sur le plan positif, il est très puissant, vous pouvez l'installer via apt-get et il est livré avec une interface graphique.
Cependant, le système de filtrage est compliqué - mais il existe de bons didacticiels intégrés, et il vous donnera un aperçu en direct ou de démarrage/arrêt du trafic.
Taper le mot `` http '' dans le filtre vous donnera probablement ce que vous recherchez (c'est-à-dire le trafic principal généré par les utilisateurs).
Il existe également le programme de ligne de commande urlsnarf
qui fait partie du package dsniff (qui est également fourni avec par exemple Fedora 19).
Exemple:
# 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
[..]
(lors de la navigation vers SE puis vers spiegel.de)
Limitations: dsnarf ne ne prend pas en charge IPv6 . Je peux reproduire ce rapport de bogue avec 0.17 sur Fedora 19. Semble également être cassé sous Ubuntu trusty atm (fonctionne très bien sous lucid).