Comment CURL Connexion avec Captcha et Session
define('COOKIE', './cookie.txt'); define('MYURL', 'https://register.pandi.or.id/main'); la fonction getUrl($url, $method=", $var=", $open=false) { $agents = "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16'; $header_array = array( "Via: 1.1 registre.pandi.ou.id", "Keep-Alive: timeout=15,max=100", ); static $cookie = false; if (!$cookie) { $cookie = session_name() . '=' . time(); } $referer = 'https://register.pandi.or.id/main'; $ch = curl_init(); if ($method == 'post') { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "$var"); } curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $header_array); curl_setopt($ch, CURLOPT_USERAGENT, $agents); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 5); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); curl_setopt($ch, CURLOPT_REFERER, $referer); curl_setopt($ch, CURLOPT_COOKIE, $cookie); curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIE); curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); $buffer = curl_exec($ch); si (curl_errno($ch)) { echo "erreur" . curl_error($ch); mourir; } curl_close($ch); return $buffer; } fonction save_captcha($ch) { $agents = "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16'; $url = "https://register.pandi.or.id/jcaptcha"; static $cookie = false; if (!$cookie) { $cookie = session_name() . '=' . time(); } $ch = curl_init(); //initialisation d'une session CURL. curl_setopt($ch, CURLOPT_URL, $url); //Passage de l'URL en paramètre. curl_setopt($ch, CURLOPT_USERAGENT, $agents); curl_setopt($ch, CURLOPT_COOKIESESSION, true); curl_setopt($ch, CURLOPT_COOKIE, $cookie); curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIE); curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Retour de diffuser du contenu. curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); //Nous allons être de retour cette $data = curl_exec($ch); ////Saisir le jpg et enregistrer le contenu dans le curl_close($ch); //fermeture de roulage de ressources, et de libérer des ressources système. $captcha_tmpfile = './captcha/captcha-' . rand(1000, 10000) . '.jpg'; $fp = fopen($tmpdir . $captcha_tmpfile, "w"); fwrite($fp, $data); fclose($fp); return $captcha_tmpfile; } if (isset($_POST['captcha'])) { $id = "yudohartono"; $pw = "monmotdepasse"; $postfields = "navigation=authentifier&connexion-type=titulaire&username=" . $id . "&password=" . $pw . "&captcha_response=" . $_POST['captcha'] . ", appuyez sur=login"; $url = "https://register.pandi.or.id/main"; $result = getUrl($url, 'post', $postfields); echo $result; } else { $open = getUrl('https://register.pandi.or.id/main', ", ", true); $captcha = save_captcha($ch); $fp = fopen($tmpdir . "/cookie12.txt", "r"); $a = fread($fp, filesize($tmpdir . "/cookie12.txt")); fclose($fp);
<form action='' method='POST'>
<img src='<?php echo $captcha ?>' />
<input type='text' name='captcha' value=''>
<input type='submit' value='proses'>
</form>";
if (!is_readable('cookie.txt') && !is_writable('cookie.txt')) { echo "cookie ne parviennent pas à lire"; chmod('../pandi/', '777'); } }
ce cookie.txt
# Netscape HTTP Cookie Fichier # http://curl.haxx.se/rfc/cookie_spec.html # Ce fichier a été généré par libcurl! Modifier à votre propre risque. vous inscrire.pandi.ou.id FALSE /FALSE 0 JSESSIONID 05CA8241C5B76F70F364CA244E4D1DF4
après je soumettre le formulaire juste l'affichage des
HTTP/1.1 200 OK Date: Wed, 27 Apr 2011 07:38:08 GMT Server: Apache-Coyote/1.1 X-Powered-By: Servlet 2.4; Tomcat 5.0.28/JBoss-4.0.0 (build: CVSTag=JBoss_4_0_0 date=200409200418) Content-Length: 0 Via: 1.1 registre.pandi.ou.id Content-Type: text/plain X-Pad: éviter le navigateur bug
si pas d'erreur "Captcha invalide"
toujours échec de la connexion à pandi
quoi de mal dans mon script?
Je ne suis pas vouloir Briser Captcha mais je veux afficher le captcha et la saisie de l'utilisateur captcha à partir de ma page web, de sorte que l'utilisateur peut registraire de domaine dotID à partir de mon site web automatiquement
OriginalL'auteur yudo hartono | 2011-04-27
Vous devez vous connecter pour publier un commentaire.
Un captcha vise à différencier entre les humains et les robots (programmes). Semble que vous essayez de vous connecter avec un programme. Le captcha semble faire son travail :).
Je ne vois pas de moyen légal autour de.
je reçois captcha et d'affichage pour la saisie de l'utilisateur et de connexion, je le fais parce que je veux que mon client peut enregistrer un domaine automatiquement à pandi.ou.id et gérer le ils de domaine à partir de ma page web, parce que pandi.ou.id n'ont pas d'API comme les autres registraire de nom de domaine
Avez-vous contacté PANDI? Devrais commencer avec ça.
je suis en contact PANDI et ils ont dit qu'ils n'ont pas d'API ou de programme de revendeur, donc nous devons le registre manuel de domaine pour notre client
Cant nous emparer de l'image et laissez-nous entrer le captcha manuellement?
OriginalL'auteur kapa
Cela se produit parce que,
Vous avez pris votre captcha image de la première
getURL (ie first curl_exec)
et traitées le captcha, mais de soumettre à votre captcha, il vous est demandégetURL (ie again curl_exec)
qui signifie une nouvelle page avec un nouveau captcha de nouveau.Si vous placez le vieux captcha et le mettre dans le nouveau captcha. Je vais avoir le même problème & résolu.
OriginalL'auteur Randy
Captcha est une image dynamique créé par le serveur lorsque vous appuyez sur la page. Il sera en constante évolution, vous devez extraire le captcha à partir de la page et ensuite l'analyser et soumettre votre page de connexion. Captcha sera en constante évolution au fur et à quand la page est déclenchée à la charge!
OriginalL'auteur Axe
L'aide d'une tête de navigation solution c'est possible. c'est à dire: zombie.js coffee.js sur le Nœud.. Aussi, il peut être possible d'extraire une "image" du captcha et, à l'aide de la reconnaissance d'image, de "lire" l'image et la convertir en texte, qui est ensuite affiché dans le formulaire.
À compter d'aujourd'hui, la seule méthode infaillible pour "inciter" un captcha est à utiliser sans tête de la navigation.
OriginalL'auteur Alex Et Cie
Oui, Andro Selva est droit. Sur la deuxième demande, il donne un nouveau captcha. Une fois qu'il se charge de captcha avec fonction getUrl et la deuxième charge est à partir de la save_captcha de la fonction, de sorte que ce sont 2 images différentes.
Il doit faire quelque chose comme ceci:
Télécharger l'image captcha avant de fermer la boucle et avant de poster et dire au script d'attendre jusqu'à vous fournir captcha réponse - je vais utiliser preg_match. Il faudra un peu de javascript.
Si le captcha image est produite à partir de javascript, vous devez exécuter ce javascript avec le même cookie ou un jeton. Dans cette situation, la solution plus simple est d'enregistrer les en-têtes avec, par exemple, livehttpheaders addon pour mozila ffox.
OriginalL'auteur Atanas Atanasov
Avec PHP je ne sais pas comment le faire, vous devez obtenir le captcha et trouver un moyen de les résoudre. Il a beaucoup d'algorithmes pour le faire pour vous, mais si vous voulez utiliser le java, j'ai déjà piraté le code source de ce lien pour obtenir le code pour résoudre le captcha et il fonctionne très bien pour beaucoup de systèmes de captcha.
Donc, vous pourriez essayer de mettre en place votre propre captcha solveur, qui va prendre beaucoup de temps, essayez de trouver une implémentation existante pour PHP, ou, à mon humble avis, la meilleure option pour utiliser le JDownloader base de code.
OriginalL'auteur Pih