Obtenez les requêtes HTTP et les réponses faites en utilisant HttpWebRequest/HttpWebResponse à afficher dans Fiddler

est-ce que je peux brancher Fiddler pour capturer les requêtes et les réponses faites en utilisant .NET HttpWebRequest et HttpWebResponse?

37
demandé sur skaffman 2009-09-24 13:28:29

3 réponses

la FAQ Fiddler donne la réponse à cela.

vous acheminez essentiellement votre trafic HTTP via Fiddler (i.e. utilisez Fiddler comme un proxy).

voici quelques liens qui vous aideront:

Fiddler Web Debugging-configuration des Clients

qui à son tour est relié à ici:

alléger le fardeau des utilisateurs avec la Configuration automatique en .NET

vous pouvez y parvenir via certains paramètres de configuration sur le web.fichier de configuration (pour un ASP.NET application) comme ainsi:

<system.net>
  <defaultProxy>
    <proxy
      proxyaddress="http://[your proxy address and port number]"
      bypassonlocal="false"
    />
  </defaultProxy>
</system.net>

Voir ici pour plus de détails sur le <defaultProxy> .

alternativement, vous pouvez utiliser un objet WebProxy dans votre code en utilisant quelque chose comme:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("[ultimate destination of your request]");
WebProxy myproxy = new WebProxy("[your proxy address]", false);
request.Proxy = myproxy;
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse) request.GetResponse();

Voir ici pour des informations complètes sur l' Classe WebProxy.

notez également l'important "Avertissement" qui est mentionné dans la FAQ Fiddler:

Pourquoi Je ne vois pas le trafic envoyé à http://localhost ou http://127.0.0.1 ?

L'IE7 et le. Net Framework sont codé en dur pour ne pas envoyer de demandes Localhost à travers toutes les procurations, et as un mandataire, Fiddler ne recevra pas un tel circulation.

la solution est d'utiliser votre nom de la machine comme nom d'hôte à la place de Localhost ou 127.0.0.1. Donc, pour exemple, plutôt que de frapper http://localhost:8081/mytestpage.aspx 1519120920" , au lieu de visiter http://machinename:8081/mytestpage.aspx .

...Ou, si vous utilisez Fiddler v2.1.8 ou plus tard, il suffit d'utiliser http://ipv4.fiddler pour frapper sur localhost l'adaptateur IPv4, ou utilisez http://ipv6.violon pour frapper localhost sur l'adaptateur IPv6. Ce fonctionne particulièrement bien avec le Visuel Studio test webserver (nom de code): Cassini) parce que le serveur de test seulement écoute sur l'adaptateur de boucle IPv4.

enfin, vous pouvez personnaliser vos règles fichier comme ceci:

    static function OnBeforeRequest(oSession:Fiddler.Session)
    {
      if (oSession.HostnameIs("MYAPP"))
      {
        oSession.host = "127.0.0.1:8081";
      }
    }  

...et puis juste appuyer sur http://myapp , qui agira comme un alias pour 127.0.0.1: 8081.

38
répondu CraigTP 2009-09-24 09:53:40

si vous ne pouvez pas, Wireshark est un outil similaire qui fonctionne au niveau du matériel réseau, de sorte qu'il peut capturer le trafic réseau à partir de n'importe quelle application.

Wireshark est un peu plus complexe que Fiddler, et plus général, mais c'est un excellent outil à avoir dans votre boîte à outils, et vaut la peine d'enquêter un peu de temps dans.

10
répondu RichieHindle 2009-09-24 09:31:03

si vous êtes capable de modifier L'URI de la requête, et qu'il est localhost , alors il y a une solution beaucoup plus simple: changer le nom d'hôte en localhost.fiddler .

cela n'a aucune dépendance sur la mise en place de mandataires (que ce soit la mise en place de HttpWebRequest.Proxy ou l'élément <defaultProxy> dans un fichier .config ).

(du commentaire sur cette question .)

4
répondu Richard 2017-05-23 12:06:49