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

Dotnet Discussion :

Récupérer le code d'une page HTTPs


Sujet :

Dotnet

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Par défaut Récupérer le code d'une page HTTPs
    Bonjour à tous,

    je recherche un moyen d'afficher le code source d'une page HTTPs,
    Est ce possible?
    Les données s'affichent bien dans le navigateur, on peut donc les récupérer?

    Merci

  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
    Une "page HTTPS", ça veut rien dire... c'est une page HTML, HTTPS c'est juste le protocole par lequel elle a été transmise. Utilise la classe WebClient ou HttpWebRequest, comme en HTTP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Par défaut
    oui désolé pour les erreurs
    je veux récupérer le code source d'une page html accessible par le protocole Https
    en fait j'ai essayé httpwebrequest qui ne fonctionne pas,
    je récupère seulement ceci :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <html>
    <head>
    <script language="javascript">
    function setTop(){top.location="/index.htm"}
    </script>
    <title>...</title>
    </head>
     
    <body onLoad="setTop()">
    </body>
     
    </html>

    je doute qu'on puisse parvenir à récupérer les informations par cette méthode, de plus il faut pouvoir se logger pour accéder à la page dont j'ai besoin

  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
    Citation Envoyé par zebulon88 Voir le message
    en fait j'ai essayé httpwebrequest qui ne fonctionne pas, je récupère seulement ceci
    Comment tu as fait exactement ? fais voir ton code

    Citation Envoyé par zebulon88 Voir le message
    je doute qu'on puisse parvenir à récupérer les informations par cette méthode, de plus il faut pouvoir se logger pour accéder à la page dont j'ai besoin
    Comment tu te log sur le site en question ? Si c'est une authentification HTTP basique, il suffit de définir la propriété Credentials du HttpWebRequest. Sinon, il faut sans doute que tu transmettes un cookie...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Par défaut
    Merci pour ton message.
    voici mon code (C++):

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    HttpWebRequest ^ HttpWRequest = safe_cast<HttpWebRequest ^>(WebRequest::Create(AdresseduSiteenHTTPS));
    	HttpWRequest->CachePolicy = gcnew Cache::HttpRequestCachePolicy(Cache::HttpRequestCacheLevel::Reload);
    	HttpWResponse = safe_cast<HttpWebResponse^>(HttpWRequest->GetResponse());
    	sr = gcnew StreamReader(HttpWResponse->GetResponseStream());
    	tex= sr->ReadToEnd();

    c'est un code que j'ai récupérer sur la FAQ de nico pyright c++/cli
    dans tex je récupére habituellement le contenu de la page. là je ne donne pas de login ni de mdp donc c'est normal que ca marche pas. je ne sais pas comment faire pour lui donner.

    Comment tu te log sur le site en question ?
    Je vais sur le site en HTTP je me log (login mdp) et le site passe automatiquement en HTTPS.

    je suis un peu perdu avec ce credential. Comment l'intégrer dans mon code?
    merci
    A++

  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 zebulon88 Voir le message
    Je vais sur le site en HTTP je me log (login mdp) et le site passe automatiquement en HTTPS.
    OK, donc c'est une authentification par formulaire... ça complique un peu les choses

    La propriété Credential ne peut pas être utilisée dans ce cas, c'est limité aux types d'authentification suivants : Digest, Negotiate, Kerberos, NTLM, et Basic (d'après MSDN).

    Donc en gros il faudrait que tu "simules" l'envoi du formulaire de login au site avec le user/password qui vont bien, et que tu récupères le cookie de la réponse. Ensuite il suffit de renvoyer le cookie dans les requêtes suivantes pour être considéré comme authentifié.

    Mais bon, tout ça c'est assez théorique, et dans la pratique c'est pas toujours très simple de poster le formulaire de login autrement que par le navigateur, car il y a souvent un "préencodage" du mot de passe en javascript avant l'envoi (c'est le cas pour le login du forum par exemple). Bref... il faudrait savoir exactement comment le site gère le login, pour reproduire le comportement du navigateur.

    Donc, à moins que le système de login soit très simple, je te souhaite bien du courage

    A tout hasard tu peux tenter ça :
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    HttpWRequest->Credentials = gcnew NetworkCredentials("username", "password");
    Mais je doute que ça fonctionne...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Par défaut
    OK merci pour ta réponse rapide
    oui c'est un formulaire, à remplir sur la page et à valider
    Bon c'est au dessus de mon niveau mon niveau et ça serait trop long à faire

    je vais tenter ta proposition

    Merci et bonne continuation !

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Par défaut
    Il y a aussi une possiblité avec le flag INTERNET_FLAG_SECURE de l'api HttpOpenRequest.

    Mais là c'est pareil je connais pas du tout

    A++

Discussions similaires

  1. [Web/Reseaux] Récupérer le Code d'une page HTML
    Par kurul1 dans le forum C++Builder
    Réponses: 16
    Dernier message: 07/12/2012, 21h02
  2. Récupérer le code d'une page html contenue dans un balise object sous I
    Par olivier21c dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/05/2008, 16h48
  3. Réponses: 10
    Dernier message: 26/01/2005, 19h48

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