2016-10-04 2 views
2

아마존으로 로그인하기 위해 PhantomJs와 CasperJs를 사용하고 있습니다. 그러나 여러 번 로그인하면 아마존이 Captcha를 제공하고 스크립트가 실패합니다. 내가 captcha 있다면 로그인 스크립트를 처리하는 방법을 몰라. captcha가 없으면 잘 작동하는 현재 코드가 있습니다.로그인 amazon CaschJS 취급 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(); 

미리 감사드립니다.

+2

Tesseract는 아마존의 captcha의 문제는 아닙니다. 시스템에 설치 한 다음 Casper를 사용하여 외부 명령을 실행하여이를 해결하고 출력을 반환 할 수 있습니다. – drew010

답변

0

deathbycaptcha 서비스를 사용하면 보안 문자를 무시할 수 있습니다.

그들은 captchas를 해결하는 데 매우 저렴한 가격입니다.

1

아마존은 captcha를 표시하기위한 여러 가지 사항을 고려하고있을 수 있습니다. 여기 내 관찰이있다.

두 종류의 아마존 captcha가 나타났습니다.

  1. 브라우저 기반 Captcha (PhantomJS 쪽에서 볼 수 있으며 브라우저를 통해 수동으로 로그인하는 경우 표시되지 않음)
  2. IP에 기반한 보안 문자. 이유는 너무 많은 요청 일 수 있습니다. 브라우저를 수동으로 을 통해 로그인하는 경우 보안 문자가 표시됩니다.

두 번째 문제를 해결하는 방법을 모른다. 첫 번째 문제를 해결하기위한 제안을 아래에서 시도하십시오.

  1. 스크립트 끝 부분에서 phantomjs.exit()을 호출하십시오. 예외가 발생한 경우에도 exit-method가 항상 호출되는지 확인하십시오.
  2. PhantomJS가 종료 할 때 전체 캐시를 지우지 않는 것으로 보입니다. 우분투에서는 어떤 데이터를 ~/.local/share/Ofi Labs/PhantomJS/ 디렉토리에 저장합니다. 따라서 스크립트를 실행하기 전에 디렉토리 내의 파일을 지우십시오.