Page 1 sur 1

Curl et Captcha

Posté : 25 sept. 2011, 02:11
par Mathieu52
Bonsoir à tous,

je vous explique un peu mon problème.
Tous les jours, je vais récupérer au moins 5 à 6 fois par jour des informations sur un site pour mon boss.

J'aimerais donc automatiser la chose, c'est-à-dire :
1) M'identifier sur le site
2) Récupérer les données
3) Traiter les données
4) M'envoyer le rapport par mail

J'ai commencé le script avec CURL mais je bloque déjà à l'étape 1.
Le soucis, c'est que lors de l'identification, il faut passer un Captcha (j'ai pris un abonnement à Decaptcher).
Le problème n'est pas la récupération du Captcha (cela marche) mais plutôt la session CURL (le captcha change à chaque session donc je n'ai jamais le bon).

Pour l'instant, je procède comme cela :
1) Je charge la page
2) Je récupère l'url de du Captcha
3) Je traite le Captcha
4) J'envoie les données // Mais l'url du Captcha a changé puisqu'il est généré au moment de l'envoi

Voici mon code source :

Code : Tout sélectionner

$urlLogin = 'http://monsite.fr/login.php'; $ch = curl_init($urlLogin); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_COOKIEJAR, $this->_cookieFilename); $result = curl_exec($ch); $captchaInstance = new Decaptcher(); // J'utilise XPath pour récupérer le champ src de l'image $imageSrc = myXpath("//form[@name="form"]/descendant::img[@alt="captcha"]/@src", $result) $captchaKey = $captchaInstance->getCaptcha($imageSrc); if ($captchaKey['error']) { return array( 'error' => true, 'msgError' => $captchaKey['errorMsg'], ); } $captchaKey = $captchaKey['result']; // Ensuite je m'identifie en mettant le captcha $postfield = array( 'pseudo' => $this->_username, 'passe' => $this->_password, 'action' => 'login', 'captcha' => $captchaKey, ); curl_setopt($ch, CURLOPT_POSTFIELDS, $postfield); curl_setopt($ch, CURLOPT_COOKIEFILE, $this->_cookieFilename); // Je pense que le Captcha est généré au moment de l'envoi (donc du curl_exec), donc la variable $captchaKey contient la valeur du captcha de la session précédente. Je me trompe ? $resultLogin = curl_exec($ch); curl_close($ch);
Quelqu'un a une idée de comment faire ?

J’espère qu'il y a une solution car cela me ferait gagner énormément de temps (1 à 2 heures par jour).

Merci et bonne soirée ;)

Re: Curl et Captcha

Posté : 03 déc. 2011, 15:46
par zezet33
Bonjour,
As tu eu la solution a ton problème?

Merci de ton retour
zezet33