11

最近、Cookie の受け入れを強制する Web サイトにログインしようとしました。私はphantomJsとcasperJsを使用しています。ログインを処理する小さなスクリプトを書きましたが、Cookie を受け入れる必要があることを示すサイトにリダイレクトされます。メールアドレスとパスワードは単なるプレースホルダーです。

ログインしたいサイトは ですhttps://de.buyvip.com/Anmelden mit Amazonしかし、Amazon アカウントでログインするには、ボタンをクリックする必要があります。他のログイン フォームは機能しません。(それはこの長いURLにつながります。ブラウザからコピーしただけです)

誰かが私を助けることができますか?

スクリプトは次のとおりです。

    var casper = require("casper").create()
    var fs = require('fs');
    var page = "https://www.amazon.de/ap/signin?openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&pageId=quarterdeckde&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&clientContext=280-1158662-4507036&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.mode=checkid_setup&marketPlaceId=A38GABX06X24K&openid.assoc_handle=quarterdeckde&openid.return_to=https%3A%2F%2Fde.buyvip.com%2Fsignin&openid.pape.max_auth_age=0&siteState=http%3A%2F%2Fde.buyvip.com%2Fhomepage%3Fhash%3DM";

    phantom.cookiesEnabled = true;

    casper.start(page, function()
    {
        console.log("started");
        this.fill('form#ap_signin_form', {
            'email' : 'myMail',
            'password' : 'myPass'
        }, true);
    });

casper.then(function()
{
    fs.write("test.html", this.getHTML(), "w");
});

    casper.run();
4

2 に答える 2

25

少し後になるかもしれませんが、これが答えです。

casper.userAgent('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)');

Amazon がデフォルトのキャスパーのユーザー エージェントを好まないため、Cookie が失敗します。 .0 サファリ/534.34"

于 2013-03-15T17:31:50.027 に答える
4

私の仕事は、Amazon ウェブサイトにログインする Phantom スクリプトを作成することでした。

Phantom を で実行しphantom.javascriptEnabled = true;、 と を使用して Amazon にログインしようとするusernamepassword、JavaScript が無効になっているというメッセージが表示されます。これは、Javascript が実行できないことを意味します。JS が有効になっていないと、Cookie が機能しないため、Amazon にログインできません。

Amazon はログイン前に小さな JS コードを実行して Cookie を設定および削除します。ソース コードの一部を以下に示します。

function setCookie(c_name,value,expiredays)
    {
        var exdate=new Date();
        exdate.setDate(exdate.getDate()+expiredays);
        document.cookie=c_name+ "=" +escape(value)+
            ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
    }

function checkCookieEnabled(nodeId)
        {
            setCookie('amznTest','1',null);
            if(getCookie('amznTest')){
                deleteCookie('amznTest');
            }else{
                document.getElementById(nodeId).style.display = 'block';
            }
        }
        checkCookieEnabled('message_warning');

何時間もの回避策の後、設定するpage.settings.javascriptEnabled = true;だけでなくphantom.javascriptEnabled、すべてがスムーズに機能しました(私にとっては)。

オブジェクトの JavaScript 実行を有効にしphantomます:

phantom.cookiesEnabled = true;

オブジェクトの JavaScript 実行を有効にしますpage(重要):

 var webPage = require('webpage');
    var page = webPage.create();
    page.settings.javascriptEnabled = true;
page.settings.userAgent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36';

usernameとを使用してフォームを送信するだけpasswordで、ログインできます。

アップデート:

これは、PhantomJS を使用して Amazon にログインする方法の非常に優れたリソースです。同じパターンを使用して、他の Web サイトにログインできます。

于 2015-07-21T14:32:43.117 に答える