2016-10-04 5 views
2

amantでログインするにはPhantomJsとCasperJsを使用していますが、複数回ログインするとamazonがCaptchaを与えスクリプトが失敗します。私はそれがcaptchaを持っている場合ログインスクリプトを処理する方法を知らない。ここにcaptchaがなければうまく動作する私の現在のコードです。amazonでCasperJSを使用して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はamazonのcaptchaの問題を読んでいるようです。あなたのシステムにそれをインストールしてから、Casperを使って外部コマンドを実行してそれを解決し、出力を返すことができます。 – drew010

答えて

0

deathbycaptchaサービスを使用すると、キャプチャをバイパスできます。

彼らはcaptchasを解決するために非常に安い価格を持っています。

1

Amazonはcaptchaを表示するためにさまざまなことを考えているかもしれません。ここに私の観察があります。

アマゾンのキャプチャは2種類あります。

  1. ブラウザに基づくCaptcha(PhantomJS側に表示されます。手動でブラウザにログインすると表示されません)。
  2. IPに基づくCaptcha。理由はあまりにも多くの要求になる可能性があります。ブラウザを手動で 経由でログインすると、キャプチャが表示されます。

2番目の問題を解決する方法がわかりません。最初の問題を解決するための提案を以下に試してください。

  1. スクリプトの最後にphantomjs.exit()を呼び出します。 例外が発生してもexitメソッドが常に呼び出されることを確認してください。
  2. 終了時にPhantomJSがキャッシュ全体をクリアしないようです。 Ubuntuでは、いくつかのデータをディレクトリ~/.local/share/Ofi Labs/PhantomJS/に保存します。スクリプトを実行する前に、ディレクトリ内のファイルをクリアしてください。
関連する問題