5

CasperJS を使用して、多くの面倒なデータ入力を自動化しようとしています。具体的には、キヤノンのウェブサイトに大量のカメラ機器を登録することです。

フォーム入力を処理するコードがあり、CasperJS を使用して Web ページをナビゲートするのに問題はありませんが、CasperJS でログイン ページにナビゲートできません。

これが私がこれまでに持っているものです:

var casper = require('casper').create({
    verbose: true,
    userAgent: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36',
    logLevel: "debug"
});

phantom.cookiesEnabled = true;

casper.start();

casper.thenOpen('https://b2cweb.usa.canon.com/b2cweb/view/myAccountHome.jsf?LOGINACTION=Y', function(response) {
require('utils').dump(response);
});

casper.run();

注: 上記のコードは、ページに到達するとヘッダーの内容をダンプします。アドビがクローラーを積極的にブロックする場合に備えて、別のユーザー エージェント文字列も試しました。

リンクは Google Chrome では問題なく機能しますが、CasperJS は次のログを記録するだけです。

status=fail でリソースのロードに失敗しました

Google Dev Tools から、リンク 302 がリダイレクトされているようです

https://b2cweb.usa.canon.com/b2cweb/view/myAccountHome.jsf?LOGINACTION=Y

次に、301 は次の場所にリダイレクトします。

https://b2cweb.usa.canon.com/b2cweb/view/login.jsf?TYPE=33554432&REALMOID=06-979697ef-63e3-49da-a97f-795f9d794fcc&GUID=&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=-SM-EA3lbvOPfpMVWEZ5fDNhRBdvP75YFZ%2fmmFcIOEdxcmO9f3eSAXAISOKvl7eaVyQm&TARGET=- SM-HTTP%3a%2f%2fb2cweb%2eusa%2ecanon%2ecom%2fb2cweb%2fview%2fmyAccountHome%2ejsf%3fLOGINACTION%3dY

CasperJS がログイン ページを取得できない理由の背後には、リダイレクトが原因であると想定しています。

CasperJS をこれらのタイプのリダイレクトに従うようにすることは可能ですか? CasperJS を使用して、HTTPS 経由で閲覧および/またはログインできますか?

アップデート:

問題の原因がリダイレクトかどうかはわかりません。

回避策として、セッション Cookie (Chrome からコピー) を casperjs にプリロードしてから、アカウント ページに直接移動してみました。

--ignore-ssl-errors=true フラグをコマンドに追加しようとしましたが、成功しませんでした。

何をしても、about:blank の URL が返されます。

4

1 に答える 1