J'utilise PhantomJs et CasperJs pour me connecter avec Amazon, ça marche bien, mais après plusieurs fois, l'application amazon donne Captcha et mon script échoue. Je ne sais pas comment manipuler le script de connexion s'il possède un code de capture. Voici mon code actuel qui fonctionne bien si aucun captcha.
var casper = require('casper').create(); var AMAZON_USER = 'amazon-username'; var AMAZON_PASS = 'amazone-password'; casper.start('https://www.amazon.com/gp/wallet', function () { this.echo('Loggin into amazon...'); var emailInput = 'input#ap_email'; var passInput = 'input#ap_password'; this.mouseEvent('click', emailInput, '15%', '48%'); this.sendKeys('input#ap_email', AMAZON_USER); this.wait(3000, function () { this.mouseEvent('click', passInput, '12%', '67%'); this.sendKeys('input#ap_password', AMAZON_PASS); this.mouseEvent('click', 'input#signInSubmit', '50%', '50%'); }); }); casper.then(function (e) { this.capture('amazon.png');//print screen shot after login }); casper.run();
Merci d'avance.
Amazon peut envisager différentes choses pour afficher le captcha. Voici mes observations.
J'ai rencontré deux types de captures amazoniennes.
Ne sait pas comment résoudre le deuxième problème. Essayez les suggestions ci-dessous pour résoudre le premier problème.
phantomjs.exit()
à la fin du script. Assurez-vous que la méthode de sortie sera invoquée toujours même lorsque l'exception s'est produite. ~/.local/share/Ofi Labs/PhantomJS/
. Ainsi, effacez les fichiers dans le répertoire avant d'exécuter le script. Vous pouvez utiliser le service deathbycaptcha pour contourner le captcha.
Ils ont un prix très bon marché pour résoudre les captures.