web-dev-qa-db-fra.com

Comment vider des requêtes HTTP entières avec Apache

Est-il possible de vider des requêtes HTTP entières par apache? J'ai besoin de suivre tous les en-têtes HTTP des demandes entrantes. Comment faire ça?

27
Alex

Je pense que ce que vous voulez au lieu d'Apache pourrait être un analyseur de paquets , également connu sous le nom de renifleur de paquets. Deux des plus populaires sont probablement TCPDump et Wireshark , qui sont tous deux gratuits et ont des versions pour les systèmes d'exploitation Windows et * nix. Ceux-ci vous montreront tout le trafic entrant sur une interface, pas seulement ce que Apache voit. Mais vous pouvez utiliser des filtres pour vous limiter à un port spécifié, tel que 80 pour http.

tcpdump:
La commande suivante exécutée à partir du serveur vous montrera tous les paquets destinés au port 80:

Sudo tcpdump -s 0 -X 'tcp dst port 80'

Le commutateur X majuscule vide la charge utile en hexadécimal et ASCII. Le commutateur s avec 0 signifie pour obtenir le paquet entier. 'tcp dst port 80' signifie filtrer et n'afficher que les paquets destinés au port 80 dans l'en-tête tcp.

Wireshark:
Pour la version plus conviviale, si vous avez une interface graphique en cours d'exécution, pensez à Wireshark (officiellement appelé Ethereal).

30
Kyle Brandt

peut-être le dumping de cookies ? sinon - regardez mod_dumpio .

12
pQd

Le reniflage de paquets de base est facile avec ngrep, un hybride de tcpdump et grep. Dans certains scénarios, si vous souhaitez voir comment les navigateurs Web communiquent avec les serveurs Web et inspecter les en-têtes HTTP.
Dans cet exemple, exécutez un ngrep sur un serveur Web comme ceci:

$ ngrep port 80

vous pouvez également choisir de filtrer la demande http vers la demande "GET /" sur le port 80 en:

$ ngrep -q '^GET .* HTTP/1.[01]'

Côté client, il existe un outil utile nommé Tamper Data, c'est une extension Firefox qui vous donne la possibilité d'afficher, d'enregistrer et même de modifier les requêtes HTTP sortantes.
Vous pouvez trouver plus d'informations ici

8
Ali Mezgani

Plutôt que d'utiliser tcpdump ou wirehark, utilisez tcpflow. C'est un remplacement de tcpdump, mais crée un fichier pour chaque côté de chaque connexion, vous n'avez donc pas à essayer de décoder le flux vous-même.

7
David Pashley

Apache a cette fonctionnalité intégrée; augmentez simplement le niveau du journal à trace7 ou trace8:

LogLevel trace8

Notez que cela videra un lot de données. Tu étais prévenu.

0
Wouter Verhelst