IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Capture de requetes Http lancée via le navigateur


Sujet :

C#

  1. #1
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut Capture de requetes Http lancée via le navigateur
    Bonjour!

    Dans le cadre d'une application, il me faudrait récuperer les requetes que le navigateur fait (firefox, IE...).

    J'ai une petite idée, mais je bute sur plusieurs choses. Voilà comment je concoit la chose:

    1. Créer un HttpListener
    2. Récuperer la requetes
    3. L'envoyer à mon serveur distinct

    Je sais qu'il y a plusieurs choses à faire (j'ai vu qu'il faut ajouter des prefixes, etc...). Si quelqu'un pourrait m'aider, ou me donner un lien avec un tutoriel

    Le but n'est pas de prendre du code existant, mais je veux comprendre comment et ce que je suis en train de faire.

    Merci d'avance pour votre aide!

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Ta solution ne marcherait pas : ton HttpListener n'interceptera que les requêtes faites explicitement sur lui (par exemple http://localhost), pas les requêtes vers d'autres serveurs
    Si tu veux intercepter les requêtes tu peux utiliser un outil comme Wireshark (anciennement Ethereal)

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut
    Ah! Alors comment faire pour intercepter les requetes que je fais via mon navigateur?

    Pour Wireshark, je le connais déjà, mais je dois obligatoirement prendre les requetes faite de mon navigateur :/ Sinon c'est sur que j'aurais utilisé Wireshark ^^

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Wireshark capture tout le trafic réseau de ton ordinateur, y compris les requêtes de ton navigateur. Tu peux retrouver les requêtes HTTP d'après les critères suivants:
    - protocole de transport : TCP
    - port : 80 en général (mais pas forcément...)
    - Le début des données transmises ressemble généralement à quelque chose comme ça :
    GET /chemin/du/fichier.html HTTP/1.0
    ou encore :
    POST /blabla.php HTTP/1.1

    D'une manière générale :
    <verbe> <chemin> HTTP/<version du protocole>

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut
    Ok, alors va falloir que j'aie voir vers la classe TCPListener?

    Si quelqu'un à des exemples, je suis volontier preneur!

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Leelith Voir le message
    Ok, alors va falloir que j'aie voir vers la classe TCPListener?
    Ben non, le problème est le même qu'avec le HttpListener... tu ne captureras que les requêtes faites vers ton TCPListener

  7. #7
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut
    Alors comment s'y prendre?

    Je dois aller écouter le processus du browser (Firefox, IE,etc..), et capturer les requettes? Si c'est ça, ça devient plus compliqué que prévu !

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tu peux utiliser WinPcap : http://www.winpcap.org/
    C'est ce qu'utilise Wireshark si je me souviens bien

  9. #9
    Membre éprouvé Avatar de Onlava
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 92
    Par défaut
    ou encore mieux : SharpPcap (wrap de libpcap en .net)

    http://www.tamirgal.com/home/dev.aspx?Item=SharpPcap

    Avec tutos et exemples sur le site + projets démos avec la lib.

    Have fun

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Onlava Voir le message
    ou encore mieux : SharpPcap (wrap de libpcap en .net)

    http://www.tamirgal.com/home/dev.aspx?Item=SharpPcap

    Avec tutos et exemples sur le site + projets démos avec la lib.

    Have fun

  11. #11
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut
    Citation Envoyé par Onlava Voir le message
    ou encore mieux : SharpPcap (wrap de libpcap en .net)

    http://www.tamirgal.com/home/dev.aspx?Item=SharpPcap

    Avec tutos et exemples sur le site + projets démos avec la lib.

    Have fun
    Wow, merci! Ca va déjà vachement m'aider!

    Par contre, il n'y a pas moyen de faire sans la libraire WinPcap? Parce que c'est un peu le but de mon challenge, essayer de faire ça "seul" ^^

  12. #12
    Membre éprouvé Avatar de Onlava
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 92
    Par défaut
    Non, tu est obligé de passer par une libraire native. La plus populaire est winpacap.

    a+

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Onlava Voir le message
    Non, tu est obligé de passer par une libraire native. La plus populaire est winpacap.

    a+
    Non, il est tout à fait possible d'implémenter sa propre lib... mais je ne pense pas qu'on puisse le faire en pur .NET, il faut forcément faire une partie en code natif pour s'intégrer à la couche réseau de windows

  14. #14
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Non, il est tout à fait possible d'implémenter sa propre lib... mais je ne pense pas qu'on puisse le faire en pur .NET, il faut forcément faire une partie en code natif pour s'intégrer à la couche réseau de windows
    Par code natif, tu veux dire C? C++? ASM?

    Pour la partie .Net, est-ce que tu saurais me dire vers quelles classes m'orienter?

    J'ai essayé de trouver un bouquin là dessus, mais sans grand succès... même dans une librairie spécialisée à Genève ils n'ont pas connaissance d'un livre portant sur la programmation réseau/système en C#.Net. Par contre, si quelqu'un en connais un, je suis prenneur à 400%!

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Leelith Voir le message
    Par code natif, tu veux dire C? C++? ASM?
    Natif = non managé
    Le code managé s'exécute dans une machine virtuelle (le CLR), le code natif s'exécute directement sur le processeur. Donc C ou C++ par exemple feront l'affaire
    Citation Envoyé par Leelith Voir le message
    Pour la partie .Net, est-ce que tu saurais me dire vers quelles classes m'orienter?
    Non, puisqu'il n'y a pas de classes faites pour ça...

  16. #16
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut
    Alors quel est la partie qu'il est possible de faire en .NET? (cf. ce que tu as dis plus haut) Est-ce qu'on doit impérativement tout refaire en C ou C++? Parce que dans ce cas, même si ça pourrait être intéressant, je pense que je vais plutôt utiliser la libraire proposée plus haut.

  17. #17
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    tu peux faire la partie "interception" proprement dite en C ou C++ (en fait, la partie qui interagit directement avec l'OS), et l'interface utilisateur en C#

  18. #18
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut
    Bon, moi sa sera fait essentiellement en C++ alors, vu que l'interface utilisateur sera une console... Mince alors, moi qui pensait que je pouvais faire ça avec C# :/ Je vais m'orienter vers la librairie de winpcap en C# alors...

    Merci pour votre aide, je vous tiens au courant de l'avancement, et surtout si j'ai des problèmes

Discussions similaires

  1. [Python 2.X] Loguer les domaines consultés en HTTP via le navigateur.
    Par GuillaumeJ28 dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 19/08/2014, 11h29
  2. Envoi requete http via une application JAVA
    Par foufar2009 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 04/12/2010, 14h10
  3. [AJAX] Envoi flux Json via Requete HTTP
    Par viscere dans le forum AJAX
    Réponses: 3
    Dernier message: 01/09/2010, 09h55
  4. erreur bigint requete Employee.fdb via AdoDb
    Par jflebegue dans le forum Connexion aux bases de données
    Réponses: 7
    Dernier message: 04/01/2005, 11h03
  5. [http] comment faire une requete http
    Par Slimer dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 28/07/2004, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo