11

我最近尝试登录一个强制我接受 cookie 的网站。我正在使用 phantomJs 和 casperJs。我编写了一个小脚本来处理登录,但它会将我重定向到一个告诉我必须接受 cookie 的站点。电子邮件和密码只是占位符。

我要登录的网站是https://de.buyvip.com/. 但我需要单击按钮Anmelden mit Amazon,以便我可以使用我的亚马逊帐户登录。其他登录表单不起作用。(这导致了这个长网址,我只是从浏览器中复制了它)

有人能帮我吗?

这是脚本:

    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)');

cookie 失败是因为亚马逊不喜欢默认 casper 的用户代理,在我的情况下:“Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) CasperJS/1.0.2+Phantomjs/1.7 .0 Safari/534.34"

于 2013-03-15T17:31:50.027 回答
4

我的任务是制作将登录到亚马逊网站的 Phantom 脚本。

如果您运行 Phantomphantom.javascriptEnabled = true;并尝试使用usernameand登录 Amazon password,您将收到 JavaScript disabled 消息,这意味着 Javascript 无法执行。未启用 JS 时,您将无法登录亚马逊,因为 cookie 不起作用。

亚马逊在登录前执行小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而且一切正常(对我而言)。

phantom为对象启用 javascript 执行:

phantom.cookiesEnabled = true;

page为您的对象启用 javascript 执行(重要):

 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现在,只需使用您的and提交表单password,您就可以登录了。

更新:

这是如何使用 PhantomJS 登录亚马逊的非常好的资源。相同的模式可用于登录任何其他网站。

于 2015-07-21T14:32:43.117 回答