90 votes

Comment inspecter les requêtes HTTP sortantes d'une seule application ?

Mon application envoie des requêtes HTTP à un serveur et je veux voir les données réelles qu'elle envoie. Voici quelques détails que je voudrais voir :

  • Méthode de demande (GET/POST/PUT, etc.)
  • Type de contenu
  • Corps

Quel est le meilleur et le plus simple moyen d'y parvenir ?

86voto

Panther Points 96601

Eh bien, pour tous les fans de tcpdump =)

EXÉCUTER TOUTES CES COMMANDES EN TANT QUE ROOT ! !!

Obtenir la racine dans un terminal avec

sudo -i

Pour capturer les paquets RAW ...

sudo tcpdump -i any -w /tmp/http.log &

Cela va capturer tous les paquets bruts, sur tous les ports, sur toutes les interfaces et les écrire dans un fichier, /tmp/http.log .

Exécutez votre application. Il est évidemment utile de ne pas exécuter d'autres applications qui utilisent le protocole HTTP (navigateurs Web).

Tuer tcpdump

killall tcpdump

Pour lire le journal, utilisez la commande -A et envoyer la sortie vers less :

tcpdump -A -r /tmp/http.log | less

El -A imprime la "charge utile" ou le texte ASCII dans les paquets. Ceci enverra la sortie à less vous pouvez aller vers le haut et vers le bas. Pour quitter less , type Q .

Quand je vais sur Google, je vois (dans les paquets bruts) :

20:42:38.179759 IP ufbt.local.56852 > sea09s02-in-f3.1e100.net.www: Flags [P.], seq 1:587, ack 1, win 913, options [nop,nop,TS val 25523484 ecr 492333202], length 586
E..~.v@.@..q......!#...P.(.gS.c..............u..Xh.GET /generate_204 HTTP/1.1
Host: clients1.google.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) rekonq Safari/534.34
Referer: http://www.google.com/
Accept: */*
Accept-Encoding: gzip, deflate, x-gzip, x-deflate
Accept-Charset: utf-8,*;q=0.5
Accept-Language: en-US, en-US; q=0.8, en; q=0.6
Cookie: PREF=ID=dd958d4544461998:FF=0:TM=1323842648:LM=1360205486:S=Fg_QCDsLMr4ZepIo; NID=67=OQJWjIDHG-B8r4EuM19F3g-nkaMcbvYwoY_CsOjzvYTOAxwqAos5kfzsk6Q14E70gIfJjHat8d8PuQIloB12BE-JuSHgsKHR2QSpgN12qSWoxeqhdcSQgzw5CHKtbR_a

tcpdump dispose d'un long ensemble d'options permettant d'affiner la collecte de données, de la spécification des interfaces réseau aux ports en passant par les adresses IP source et destination. Il ne peut PAS décrypter (il ne fonctionnera donc pas avec HTTPS).

Une fois que vous savez ce qui vous intéresse, vous pouvez utiliser un certain nombre d'options avec tcpdump pour enregistrer uniquement les données qui vous intéressent. La stratégie générale consiste à enregistrer d'abord tous les paquets, à examiner les données brutes, puis à capturer uniquement les paquets intéressants.

Quelques drapeaux (options) utiles :

-i Specify an interface
-i eth0

tcp port xx
tcp port 80

dst 1.2.3.4
specify a destination ip address

Il y a une courbe d'apprentissage, tant pour l'utilisation tcpdump et apprendre à analyser les données que vous collectez. Pour une lecture plus approfondie, je vous suggère fortement Daniel Miessler tcpdump Abécédaire avec exemples .

28voto

Jeroen van Bergen Points 858

Première installation tcpflow à partir des dépôts officiels d'Ubuntu :

sudo apt-get install tcpflow

Ensuite, exécutez cette commande pour inspecter toutes les requêtes HTTP sur le port standard :

sudo tcpflow -p -c port 80

14voto

CruzBishop Points 330

Je vous suggère d'essayer Wireshark Install Wireshark

Veuillez noter que Wireshark est un outil assez avancé et qu'il faut donc un peu de temps pour s'y habituer. Je ne l'ai pas utilisé depuis quelques années, mais il devrait toujours être parfait pour ce que vous recherchez - si ce n'est un peu trop de fonctionnalités.

Vous trouverez des informations sur Wireshark et sur la manière de l'utiliser à l'adresse suivante la page d'accueil de Wireshark .

7voto

Gediminas Points 171

Également possible avec command, qui donne une sortie soignée, même pour SSL :

sudo tcpdump dst port 80

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X