Page 1 of 1

reCAPTCHA / PHP / CURL

PostPosted: Fri Nov 15, 2013 8:39 pm
by KASSBONBEK
Bonjour,

après avoir déjà posté sur un autre forum sans aucun succès, je me permet de reposter sur celui-ci en espérant avoir plus de chance cette fois-ci.

Voila quelque temps que je bloque. Le but de mon script est simple, je voudrais automatiser une inscription sur un site. Seulement le CAPTCHA m'en fait voir de toute les couleur. J'aimerais juste l'afficher à l'utilisateur pour que celui-ci le remplisse.

Le but du début du script est donc d'afficher sur ma page web, la page du site web distant.
J'utilise donc cURL.

Le seul problème est qu'a la place du CAPTCHA, j'ai ceci qui apparait:
[b:4ec87f0d13]Input error: Invalid referer[/b:4ec87f0d13]

J'ai essayé pendant des heures... J'avoue que je ne comprends pas comment google fait pour me différencier d'un utilisateur normal.

Voici une des version du script que j'ai faite:

[code:1:4ec87f0d13]<?php
error_reporting(E_ALL);

$lien = 'http://www.*****.com';
$cookiefile = 'cookie.txt';
fopen($cookiefile,'w');
$ch = curl_init ($lien);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookiefile);
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);
echo $output;


?>
[/code:1:4ec87f0d13]


Avez-vous une idée pour contourner ce problème ?

Merci d'avance pour vos réponses.

PostPosted: Sat Nov 16, 2013 2:07 pm
by TorTukiTu
Le message est clair : Input error: Invalid referer

Le referer est un paramètre d'en tête transmis via les trames HTTP qui contient la page précédement visité par l'utilisateur.
Il faut donc que tu envoies le referer attendu par Google. A mon avis, tu as probablement un token ou un truc du genrs qui est passé via le referer.

Essaye de faire un test manuellement en t'inscrivant sur le site et en nous postant ici le referer que Google a utilisé ou en privé l'URL complète du site que je jette un oeuil si tu veux.

Tortue

PostPosted: Sun Nov 17, 2013 2:55 pm
by KASSBONBEK
OK.

Je ne comprends pas comment voir le referer utilisé par google quand je m'inscris manuellement.
Peux tu m'expliquer ?

PostPosted: Sun Nov 17, 2013 4:25 pm
by TorTukiTu
[quote:1d7b0781d1]Je ne comprends pas comment voir le referer utilisé par google quand je m'inscris manuellement. [/quote:1d7b0781d1]

Le referer est probablement utilisé par google pour savoir si tu as bien effectué un pacours normal avant d'arriver à la page d'inscription, et que tu n'essayes justement pas de truander.

Tu as plusieurs facon de voir ca. La plus simple étant de regarder l'url qui s'affiche dans la barre de ton navigateur en fesant attention aux redirections qui pourraient passer inapercu juste avant la page en question.

Tu as des plugins firefox qui te permettent de voir le contenu des en-têtes HTTP.

Dans le pire des cas, dump ton traffic HTTP avec un sniffer (Wireshark, tcpdump ou autre).

Tortue 974.

PS:
[quote:1d7b0781d1]qui contient la page précédement visité par l'utilisateur[/quote:1d7b0781d1]
Je parlais de l'url de la page et non de la page elle-même bien ententu.

PostPosted: Sun Nov 17, 2013 5:38 pm
by KASSBONBEK
J'ai un plugin chrome: http headers.

Il me balance ça :

[code:1:229a284473]Name Value
Date Sun, 17 Nov 2013 16:34:09 GMT
Content-Encoding gzip
Server nginx
X-Frame-Options SAMEORIGIN
T411-node rm3
Vary Accept-Encoding
Content-Type text/html; charset=windows-1252
Transfer-Encoding chunked
[/code:1:229a284473]

Je vois rien concernant le referrer....

PostPosted: Sun Nov 17, 2013 9:06 pm
by TorTukiTu
Mmm, essaye d'utiliser le service https du serveur si tu le peux. Normalement, le referer n'est pas envoyé en utilisant https.

Accessoirement, fais un tour sur www .whatismyreferer. com pour tester ton addon et vérifier que tu vois bien le referer.

Tortue 974.

PostPosted: Sun Nov 17, 2013 9:46 pm
by KASSBONBEK
No referer / Hidden

PostPosted: Mon Nov 18, 2013 8:12 am
by TorTukiTu
La première fois tu auras no referer. Essaye de rafraichir la page en cliquant sur le lien en bas.
Tu as essayé d'utiliser https dans ton script ?

tortue 974.

PostPosted: Mon Nov 18, 2013 7:28 pm
by KASSBONBEK
alors:

effectivement quand je clique sur le lien sur whatsmyreferer, j'ai bien le bon referrer qui s'affiche.

Ensuite, j'ai essayé ça:

[code:1:79d1c4e770]error_reporting(E_ALL);

$lien = 'https://www.blablabla.com';
$cookiefile = 'cookie.txt';
fopen($cookiefile,'w');
$ch = curl_init ($lien);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookiefile);
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, 'https://www.google.fr/search?q=lesite');
$output = curl_exec ($ch);
echo $output; [/code:1:79d1c4e770]


Même résultat. Peut être n'ai je pas bien compris ce que tu m'as dis ?

Je t'envois par MP le site que je suis entrain de tester.

PostPosted: Mon Nov 18, 2013 7:45 pm
by KASSBONBEK
En tout cas quand je check sur chrome les headers envoyés :

[code:1:5b85a1f7d7]GET /test.php HTTP/1.1
Host: ***
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en,fr-FR;q=0.8,fr;q=0.6,en-US;q=0.4
Cookie: __utma=182650040.610580476.1382223246.1384711715.1384799184.20; __utmb=182650040.5.10.1384799184; __utmc=182650040; __utmz=182650040.1382223246.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); clusterBAK=R1564862758; OVHCDN=R2163938180; cluster=R1649270232[/code:1:5b85a1f7d7]

le referer n'est pas envoyé.....

PostPosted: Mon Nov 18, 2013 8:31 pm
by TorTukiTu
[quote:164fa3d2d4]Même résultat. Peut être n'ai je pas bien compris ce que tu m'as dis ? [/quote:164fa3d2d4]

Si, tu as bien compris. Bizzare bizzare... je vais regarder ca de plus près quand j'aurai un moment.

Tortue 974.

PostPosted: Mon Nov 18, 2013 9:22 pm
by KASSBONBEK
Ok ça marche ! Tiens moi au jus, je continus à chercher en attendant...

merci en tout cas

PostPosted: Mon Nov 18, 2013 9:49 pm
by KASSBONBEK
Pour info, si je cURL http://www.whatismyreferer.com/, le cURL est bien modifié par l'option CURLOPT_REFERER.

Pourtant toujours la même erreur: INVALID REFERER....

PostPosted: Tue Nov 19, 2013 11:56 am
by SHEPSHEP
Salut KASSBONBEK,
Salut Tortu,

Par défaut ReCAPTCHA est restreint à un domaine spécifique et ses sous domaines.

En spécifiant en REFERER le ND du site cible, ca ne marche pas ?

++
2ShEp

EDIT 0 : En relisant le premier post de Tortu j'ai titlé qu'il y avait bien un système de clé (token) en plus de la vérification du REFERER.

EDIT 1 : [quote:0110c51c5c]When I view the html source code for the page, I found the following
code:

<script type="text/javascript" src="http://api.recaptcha.net/challenge?
k=6LcB47oSAAAAACB4ldZjQraw1-OYI2tDbfF-bEoQ">

Clicking on the serc, I get the following output:

document.write('Input error: Invalid referer'); [/quote:0110c51c5c]

PostPosted: Tue Nov 19, 2013 12:46 pm
by KASSBONBEK
OK.

Mais je ne comprends pas comment c'est possible. cURL simule bien une requête HTTP non ?

Qu'est ce qui va différencier une demande faite par le serveur et donc cURL d'une demande d'un client ?

Le but est que le serveur se comporte exactement comme un client a l'exception près ou celui-ci transmet à la volet le captcha à l'utilisateur

Il me semble que le logiciel jdownloader permet déjà d'afficher le captcha distant, et même pour google.

Peut être est-il possible de le faire avec une autre techno ?