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

Langage PHP Discussion :

CURL et reCAPTCHA


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 11
    Par défaut CURL et reCAPTCHA
    Bonjour à tous !

    Pour commencer, je dois bien préciser deux choses. La première étant que je cherche une solution à mon problème depuis des heures ....et que je deviens fou.
    La deuxième c'est la finalité de mon projet. Je souhaite faire un script qui me permettrait de m'inscrire/connecter sur un site web ou je me réinscris souvent.
    C'est un projet personnel. Juste un outil pour moi qui va me faciliter la tache et surtout un bon exercice.

    Mon problème est donc le suivant:
    J'aimerais récuperer uniquement le CAPTCHA du site web ou je veux m'enregistrer.
    Le seul problème, c'est que quand je fais appel a CURL, la page se charge correctement mais le captcha ne s'affiche pas en me disant invalid referer.

    Je me suis donc dis que c'était un problème de cookie et referer. Mais rien n'y fais.... Je comprends pas....

    Voici mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
    error_reporting(E_ALL);
     
    $lien = 'http://www.xxxx.xx'; 
    $ckfile = tempnam ("", "CURLCOOKIE");
    $agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';
     
    $ch = curl_init ($lien);
    curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12');
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_REFERER, $lien);
    $output = curl_exec ($ch);
     
     
    $ch = curl_init ($lien);
    curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12');
    curl_setopt($ch, CURLOPT_REFERER, $lien);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec ($ch);
     
     
    echo $output;
     
    ?>

    Je fais donc appel a deux CURL, le premier permettant de recup le cookie, et le deuxième permettant de l'injecter.

    Pourtant pas de CAPTCHA !

    Quelqu'un a une idée ?

    Merci d'avance !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    C'est le résultat de la plus élémentaire des protections, en effet un CURL ou tout autres méthode de cette nature, ne peux en aucun cas te mettre dans la situation d'appartenir au domaine appelé, même si tu en est propriétaire.
    En cause, le cookies du domaine, et le cookies de session du domaine.

    Le curl par ailleurs te renvoie uniquement le html résultant,jamais le PHP, si non tu pourrait de façon élémentaire obtenir le login du SQL du serveur par exemple.

    Voila l'Ami désolée.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 11
    Par défaut
    Je comprends pas trop ta réponse... alors je vérifie qu'on s'est bien compris.

    Le but est uniquement de récupérer l'image du captcha, et ensuite de l'insérer sur ma page web.

    CURL simule une requete HTTP a prioris et puisqu'on peut modifier les cookies, a quel niveau se situe la protection ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Lorsque tu appelles un php d'un domaine vers un autre domaine, c'est le serveur qui crée les deux cookies sur SON domaine, ors tu ne peux pas les lire ! étant sur un autre domaine !

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 11
    Par défaut
    OK.

    Je comprends pas ce qui va différencier le serveur du client. N'est-il pas possible de faire agir le serveur comme un client web et ensuite de pouvoir donc récupérer la page en question avec le captcha du côté serveur et de l'envoyer côté client ?

    Edit: Puisqu'on peut intégrer un useragent dans le CURL, je comprends pas comment le site distant peut faire la distinction

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je te laisses faire tes tests , mais reches le cookies de
    http://www.fox-infographie.com/fi_lesw/wcaptcha.php
    tu compredra mieux sans doute

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 11
    Par défaut
    Ok, je regarde.

    Mais juste en théorie, si le serveur se comporte comme un client. Pourquoi ça ne marcherait pas ?

    C'est comme si n'importe quel client s'inscrivait sur le site en question. Désolé si je suis lourd à pas comprendre

  8. #8
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 332
    Par défaut
    no problem kassbonbek
    puisque tu as CURLOPT_COOKIEJAR, curl est vu comme un client avec son cookie et donc sa session.

    l'erreur que tu indiquais était en fait un mauvais referer ?

    je ne comprend pas ton code : normalement :
    1) tu te connectes get http://serveur/page.index
    2) capcha : get http://serveur/cgi/capcha?params...

    et toi tu ne change pas $lien pour ton deuxième appel

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 11
    Par défaut
    La première étape est inutile en faite. J'ai fais un mic mac avec une autre page ou je me log cette fois-ci.

    Peut-être faut-il faire un wget ? J'ai essayé mais visiblement c'est le même problème

Discussions similaires

  1. [cURL] Gérer le proxy avec curl
    Par DaSoul dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 25/03/2006, 00h18
  2. Jeux de curling
    Par chasse dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 19/03/2006, 13h03
  3. [XML] [cURL] Authentification Php récupération de données
    Par thibaut06 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 13/02/2006, 15h23
  4. Dev-CPP et cURL (libcurl)
    Par firejocker dans le forum Dev-C++
    Réponses: 1
    Dernier message: 29/09/2005, 12h41

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