web-dev-qa-db-fra.com

Comment surveiller toutes les demandes http entrantes?

Je dois surveiller mon application à partir des demandes http POST et GET entrantes provenant de l'extérieur et parfois de la machine. 

Est-ce possible?

Vous utilisez fiddler mais cela ne fait que les envois non entrants (de l'extérieur de la machine) ou est-ce que je l'ai mal configuré?

Ceci concerne mon application Web destinée à recevoir une POST d'un serveur externe.

65
Exitos

Les gars ont trouvé le moyen idéal pour surveiller TOUT le trafic qui circule localement entre les demandes de ma machine à ma machine:

  1. Installer Wireshark
  2. Lorsque vous devez capturer le trafic d'un hôte local à un hôte local, vous aurez du mal à utiliser Wireshark car cela ne fait que surveiller le trafic entrant sur la carte réseau. Pour ce faire, vous devez ajouter aux routes une route qui forcera l’ensemble du trafic sur une passerelle et sera capturé sur l’interface réseau.

    Pour ce faire, ajoutez une route avec <ip address><gateway>:

    cmd> route add 192.168.20.30 192.168.20.1
    
  3. Ensuite, exécutez une capture sur wireshark (assurez-vous de sélectionner l’interface traversée par les octets), puis filtrez.

Les itinéraires nouvellement ajoutés apparaîtront en noir. (car ce sont des adresses locales)

9
Exitos

Ce que vous devez faire, c'est configurer Fiddler pour qu’il fonctionne comme un "proxy inverse"

Il existe des instructions sur 2 manières différentes de le faire sur le site Web de Fiddler. Voici une copie des étapes:


Étape # 0

Avant que l’une des options suivantes ne fonctionne, vous devez autoriser d’autres ordinateurs à se connecter à Fiddler. Pour ce faire, cliquez sur Outils> Options Fiddler> Connexions et cochez la case "Autoriser les ordinateurs distants à se connecter". Puis fermez Fiddler.

Option n ° 1: Configurer Fiddler en tant que proxy inverse

Fiddler peut être configuré de manière à ce que tout le trafic envoyé à http://127.0.0.1:8888 soit automatiquement envoyé à un autre port de la même machine. Pour définir cette configuration:

  1. Commencer REGEDIT
  2. Créez un nouveau DWORD nommé ReverseProxyForPort dans HKCU\SOFTWARE\Microsoft\Fiddler2.
  3. Définissez DWORD sur le port local vers lequel vous souhaitez rediriger le trafic entrant (généralement le port 80 pour un serveur HTTP standard).
  4. Redémarrer Fiddler
  5. Accédez à votre navigateur pour http://127.0.0.1:8888

Option n ° 2: Écrire une règle FiddlerScript

Alternativement, vous pouvez écrire une règle qui fait la même chose. 

Supposons que vous exécutiez un site Web sur le port 80 d'une machine nommée WEBSERVER. Vous vous connectez au site Web à l'aide d'Internet Explorer Mobile Edition sur un périphérique Windows SmartPhone pour lequel vous ne pouvez pas configurer le proxy Web. Vous voulez capturer le trafic du téléphone et la réponse du serveur.

  1. Démarrez Fiddler sur la machine WEBSERVER en exécutant le port par défaut 8888.
  2. Cliquez sur Outils | Options Fiddler et cochez la case "Autoriser les clients distants à se connecter". Redémarrez si nécessaire.
  3. Choisissez les règles | Personnaliser les règles.
  4. Dans le gestionnaire OnBeforeRequest, ajoutez une nouvelle ligne de code:
    if (oSession.Host.toLowerCase () == "serveur Web: 8888") oSession.Host = "serveur Web: 80";
  5. Sur le smartphone, accédez à http://webserver:8888

Les demandes du SmartPhone apparaîtront dans Fiddler. Les demandes sont transférées du port 8888 vers le port 80 où le serveur Web est en cours d'exécution. Les réponses sont renvoyées via Fiddler au SmartPhone, qui n'a aucune idée que le contenu provient du port 80.

60
Saul Dolgin

J'installerais Microsoft Network Monitor, configurerais l'outil pour qu'il ne voie que les paquets HTTP (filtrer le port) et commence à capturer les paquets.

Vous pouvez le télécharger ici

32
YudhiWidyatama

Configurer Fiddler en tant que "proxy inverse" sous Windows

(pour Mac, voir le lien dans le commentaire de Partizano ci-dessous)

Je sais qu'il existe déjà une réponse suggérant ceci, mais je souhaite fournir l'explication et les instructions fournies par Telerik devrait, et également couvrir certains des «pièges», alors voici:

Qu'est-ce que cela signifie de configurer Fiddler en tant que "proxy inverse"?

  • Par défaut, Fiddler ne surveille que sortantes requêtes provenant de la machine sur laquelle vous exécutez Fiddler.
  • Pour surveiller les entrantes requêtes, vous devez configurer Fiddler pour qu'il fonctionne comme un 'proxy inverse'.
  • Cela signifie que vous devez définir Fiddler comme un "proxy" qui interceptera les demandes http entrantes envoyées à un port spécifique (8888) sur la machine sur laquelle vous souhaitez écouter les demandes entrantes. Fiddler transmettra ensuite ces requêtes au serveur Web de la même machine en les envoyant au port habituel pour les requêtes http (généralement le port 80 ou 443 pour https). C'est en fait très rapide et facile à faire!
  • La méthode standard pour configurer cela avec Fiddler est de faire en sorte que Fiddler intercepte toutes les demandes envoyées au port '8888' (car cela ne sera normalement pas utilisé par autre chose, bien que vous puissiez tout aussi facilement utiliser un autre port).
  • Vous devez ensuite utiliser l’éditeur de registre pour que Fiddler transmette les requêtes http reçues par Fiddler sur le port 8888, afin qu’elles soient transférées sur le port http standard (ports 80, 443 pour une requête https ou un autre port personnalisé votre serveur Web est configuré pour écouter)

NOTE: Pour que cela fonctionne, toute requête que vous souhaitez intercepter doit être envoyée au port 8888

Pour ce faire, vous ajoutez: 8888 à votre nom d’hôte, par exemple comme ceci pour une route MVC:

http: // myhostname: 8888/contrôleur/action


Procédure pas à pas

Assurez-vous que Fiddler accepte les demandes http à distance sur le port 8888:

Exécuter Fiddler en tant qu'administrateur Sélectionnez Outils> Options Fiddler> Connexions et assurez-vous que l'option "Autoriser les ordinateurs distants à se connecter" est cochée et que "Fiddler écoute sur le port" est défini sur 8888:

 enter image description here

Configurer Fiddler pour transférer les demandes reçues sur le port 8888 vers le port 80

  • Fiddler proche
  • Commencer REGEDIT
  • Créez un nouveau fichier DWORD appelé ReverseProxyForPort dans HKEY_CURRENT_USER\SOFTWARE\Microsoft\Fiddler2 .
    • Définissez maintenant la valeur DWORD sur le port local vers lequel vous souhaitez rediriger le trafic entrant (généralement le port 80 pour un serveur HTTP standard).
  • Pour ce faire, cliquez avec le bouton droit sur le DWORD que vous avez créé et sélectionnez "Modifier". Assurez-vous que "Base" est réglé sur "Décimal" et entrez "80" (ou un autre port) comme "Données de la valeur":

Assurez-vous que le port 8888 est ouvert sur le pare-feu

  • Vous devez vous assurer que le port 8888 est ouvert aux demandes externes (il ne le sera pas par défaut si votre serveur est protégé par un pare-feu).

C'est tout! Fiddler doit maintenant être configuré en tant que proxy inverse pour intercepter toutes les demandes du port 8888 (afin que vous puissiez les visualiser dans Fiddler). Il les transmettra ensuite à votre serveur Web pour qu’il soit traité.

Tester une demande

  • Redémarrer Fiddler
  • Pour vérifier que Fiddler intercepte des requêtes externes, ouvrez un navigateur sur le même ordinateur où vous avez configuré Fiddler en tant que proxy inverse. Accédez à votre navigateur pour http://127.0.0.1:8888
  • Ceci teste la demande de base au port 8888
  • Vous devriez voir la requête interceptée par Fiddler
  • Vous pouvez maintenant tester une requête provenant d'une autre machine, par exemple en effectuant une requête depuis un navigateur sur une autre machine comme celle-ci (où 'remoteHostname' est un nom d'hôte sur la machine sur laquelle vous avez configuré Fiddler en tant que proxy inverse):

http: // nomhôte distant: 8888/contrôleur/action

  • Vous pouvez également composer une demande en utilisant une autre instance de Fiddler sur une machine distante, en utilisant une URL similaire à celle ci-dessus. Cela vous permettra de faire une demande GET ou POST.

IMPORTANT: une fois que vous avez consulté vos demandes, revenez dans Outils> Options de violonettes> Connexions et supprimez l'option "Autoriser les ordinateurs distants à se connecter", sinon des tiers pourront faire rebondir le trafic sur votre serveur

10
Chris Halcrow

Microsoft Message Analyzer est le successeur de Microsoft Network Monitor 3.4

Si votre trafic HTTP entrant se rend sur votre serveur Web au port 58000, démarrez Analyzer en mode Administrateur et cliquez sur nouvelle session:

utiliser le filtre: tcp.Port = 58000 et HTTP

scénario de trace: "Interfaces réseau locales (Win 8 et antérieures)" ou "Interfaces réseau locales (Win 8.1 et ultérieures)" dépend de votre système d'exploitation

Niveau d'analyse: complet

5
Y P

Vous pouvez envisager d'utiliser Fiddler en tant que proxy inverse, vous devez pouvoir amener les clients à se connecter à l'adresse de Fiddler, puis transférer les demandes de Fiddler vers votre application. 

Cela nécessitera un peu de manipulation du port ou la configuration du client, selon ce qui est plus facile en fonction de vos besoins.

Vous trouverez des détails sur la procédure à suivre ici: http://www.fiddler2.com/Fiddler/Help/ReverseProxy.asp

3
AndyElastacloud

Utiliser Wireshark ..

Je n'ai pas essayé ceci: http://wiki.wireshark.org/CaptureSetup/Loopback

Si cela fonctionne, vous pouvez alors filtrer le trafic http/http contains GET/http contains POST.

Vous devrez peut-être exécuter deux instances de Wireshark, une capture locale et une capture distante. Je ne suis pas sûr.

2
thirtydot

Utilisez TcpView pour voir les ports en écoute et les connexions. Ceci vous donnera pas les requêtes cependant.

Pour voir les demandes, vous avez besoin de l'inverse d'un proxy, ce que je ne connais pas.

Utilisez traçage pour vous donner une partie des requêtes (premier Ko de la requête).

2
Aliostad

Vous pouvez également essayer le HTTP Debugger , il a la capacité intégrée d’afficher les demandes HTTP entrantes et ne nécessite aucune modification de la configuration du système.

 HTTP Debugger

0
Khachatur