2017-09-22 4 views
0

Je cherche une commande que je peux lancer pour regarder le port 5000 sur mon loopback local et enregistrer les requêtes et réponses HTTP complètes, en direct, sans vidage un fichier et le post-traitement. sortie désirée ressemblerait à ceci:log Les requêtes HTTP et les réponses passent par une interface et un port donnés

GET /index.html HTTP/1.1 
Host: www.example.com 

HTTP/1.1 200 OK 
Date: Mon, 23 May 2005 22:38:34 GMT 
Content-Type: text/html; charset=UTF-8 
Content-Encoding: UTF-8 
Content-Length: 138 
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT 
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux) 
ETag: "3f80f-1b6-3e1cb03b" 
Accept-Ranges: bytes 
Connection: close 

<html> 
<head> 
    <title>An Example Page</title> 
</head> 
<body> 
    Hello World, this is a very simple HTML document. 
</body> 
</html> 

J'ai essayé d'utiliser tshark -i lo0 -d tcp.port==5000,http -Y http mais cela n'imprime pas le contenu complet des requêtes HTTP et les réponses, et il imprime beaucoup de choses supplémentaires que je ne me soucie pas:

13 2.644627 127.0.0.1 → 127.0.0.1 HTTP 387 POST /battsim/loadprofile HTTP/1.1 (application/json) 
    21 2.692109 127.0.0.1 → 127.0.0.1 HTTP 57 HTTP/1.0 200 OK (application/json) 
    32 2.706703 127.0.0.1 → 127.0.0.1 HTTP 100 PUT /battsim/loadprofile/3b3135f0-b8aa-4ece-94c2-e9baf1c4998e/data HTTP/1.1 (text/csv) 
    37 2.722450 127.0.0.1 → 127.0.0.1 HTTP 244 HTTP/1.0 500 INTERNAL SERVER ERROR (text/html) 
+2

https://github.com/six-ddc/httpflow –

+0

@SteffenUllrich qui semble parfait, je serais heureux de faire que la réponse acceptée – Andy

Répondre

1

Il existe plusieurs outils à cet effet et ils sont souvent appelés quelque chose comme "httpflow". Un exemple est https://github.com/six-ddc/httpflow qui ressemble exactement à ce que vous voulez, c'est-à-dire simplement vider les données.

0

L'option -z follow de tshark est peut-être ce que vous cherchez. Il prend un numéro de flux et sort le contenu du flux. Par exemple, tshark -r tmp.pcap -z follow,tcp,ascii,1 sort le contenu du flux TCP 1 à partir du fichier de capture tmp.pcap.

Pour récupérer tout le contenu de flux TCP dans votre fichier de capture que vous pouvez utiliser:

for stream in $(tshark -r tmp.pcap -T fields -e tcp.stream | sort -un) 
do 
    tshark -r tmp.pcap -z follow,tcp,ascii,$stream 
done 

-z follow nécessite cependant le fichier entier de capture pour extraire le contenu du flux. Si vous voulez extraire des requêtes HTTP en ligne, vous devrez utiliser autre chose que tshark.

+0

il semble que beaucoup de choses dans «tshark» ne peut être accompli en vidant dans un fichier '.pcap' et en le post-traitant ... Je cherchais une option qui s'imprimerait sur la console au fur et à mesure que les choses arrivent. – Andy

+0

Vous aurez besoin d'un outil dédié pour cela (comme celui de Steffen Ullrich a proposé), tshark est plutôt destiné à l'analyse par paquet. Je n'ai pas comparé les outils de ce genre, donc je ne l'ai pas inclus dans ma réponse (je ne veux pas être biaisé vers le seul outil que je connais). – pchaigno

+0

ouais. Je suis surpris que cela m'est si long de trouver quelque chose qui fait ce que je veux, je pensais que les gens débogueraient le trafic HTTP tout le temps – Andy