Вход в PhantomJS/CasperJS, файлы cookie не принимаются PhantomJS
Недавно я попытался войти в веб-сайт, который заставляет меня принимать файлы cookie. Я использую phantomJs и casperJs. Я написал немного script, который должен обрабатывать логин, но перенаправляет меня на сайт, который говорит мне, что я должен принимать файлы cookie. Email и пароль - это просто заполнители.
Сайт, на котором я хочу войти, https://de.buyvip.com/
. Но мне нужно нажать кнопку Anmelden mit Amazon
, чтобы я мог войти в свою учетную запись amazon. Другая форма входа не работает. (Это приводит к этому длинному URL-адресу, я просто скопировал его из своего браузера)
Может кто-нибудь мне помочь?
Вот script:
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();
Ответы
Ответ 1
Может быть, немного позже, но это ответ:
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, например, Gecko) CasperJS/1.0.2 + Phantomjs/1.7.0 Safari/534.34"
Ответ 2
Моя задача состояла в том, чтобы сделать Phantom script, который войдет на веб-сайт Amazon.
Если вы запустите Phantom с помощью phantom.javascriptEnabled = true;
и попробуйте войти в Amazon с помощью username
и password
, вы получите сообщение об отключенном JavaScript, то есть Javascript не сможет выполнить. Когда JS не включен, вы не можете войти в систему на Amazon, потому что файлы cookie не работают.
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
, и вы можете войти в систему.
UPDATE:
Вот действительно хороший ресурс Как войти в Amazon с помощью PhantomJS. Такой же шаблон можно использовать для входа в любой другой веб-сайт.