En utilisant jpcap pour capturer html
-
26-09-2019 - |
Question
Je suis en train d'imprimer les données de réponse quand je fais une requête HTTP, où jpcap renifle les paquets.
J'ai réussi à obtenir quelques informations d'en-tête, mais je ne peux pas obtenir le contenu HTML réels. Voici le code que je utilise:
try {
NetworkInterface[] devices = JpcapCaptor.getDeviceList();
System.out.println("Opening interface");
JpcapCaptor captor=JpcapCaptor.openDevice(devices[0], 65535, true, 20);
captor.setFilter("ip and tcp", true);
while(true) {
Packet thisPacket = captor.getPacket();
if(thisPacket != null) {
TCPPacket p = (TCPPacket)thisPacket;
System.out.println(p.toString());
}
}
} catch (Exception e) {
System.out.println("Error: " + e );
}
Merci pour l'aide
La solution
Puisque vous êtes en mesure de lire l'en-tête HTTP, mais vous ne pouvez pas lire le contenu HTML, je suppose que le corps de la réponse HTTP a été compressé (par exemple, en utilisant gzip). Vous pouvez reconnaître les réponses compressées parce que l'en-tête de réponse HTTP contient une ligne comme:
Content-Encoding: gzip
Si vous pouviez poster un exemple de sortie de votre programme, nous pourrions confirmer cette théorie. Dans ce cas, vous devez utiliser le Décompressez le corps d'entité pour obtenir le code HTML envoyé par le serveur.
Pour plus d'informations sur le codage de contenu HTTP reportez-vous à RFC 2616 .