В последнее время я пытаюсь собрать информацию с веб-сайта (kicktipp), используя Nodejs, модуль запроса и cheerio. Поскольку этот сайт требует аутентификации для просмотра большинства его сайтов, я попытался войти в систему с помощью почтового запроса и проверить, вошел ли пользователь в систему, используя следующий код (я заменил учетные данные фиктивными данными, но я использую реальные данные в своем реальном скрипте ):
var request = require('request');
var jar = request.jar();
var request = request.defaults({
jar: jar,
followAllRedirects: true
});
var jar = request.jar();
var cheerio = require('cheerio');
request.post({
url: 'http://www.kicktipp.de/info/profil/loginaction',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
method: 'post',
jar: jar,
body: '[email protected]&passwort=1234567890&_charset_=UTF-8&submitbutton=Anmelden'
}, function(err, res, body){
if(err) {
return console.error(err);
};
request.get({
url: 'http://www.kicktipp.de/',
method: 'get',
jar: jar
}, function(err, res, body) {
if(err) {
return console.error(err);
};
var $ = cheerio.load(body);
var text = $('.dropdownbox > li > a').text();
console.log(text);
var error = $('#kicktipp-content > div.messagebox.errors > p').text();
console.log(error);
var cookies = jar.getCookies('http://www.kicktipp.de/');
console.log(cookies);
});
});
Параметры, отправляемые html-формой (проверенные браузером), выглядят так:
[email protected]&passwort=1234567890&_charset_=UTF-8&submitbutton=Anmelden
С этим скриптом мой cookie jar
выглядит так:
[ Cookie="JSESSIONID=F650D7F5CD6AF4F6B0944B2190EE2D29.kt213; Path=/; hostOnly=true; aAge=1ms; cAge=179ms" ]
JSESSIONID
успешно сохранен, но сервер не будет зарегистрирован, так как console.log(text)
печатает Login
, но он должен печатать Logout
, если пользователь правильно вошел в систему.
После проверки запроса на вход в браузере я обнаружил, что браузер получает новый файл cookie каждый раз, когда страница в этом домене запрашивается через set-cookie
в заголовке ответа, например:
Set-Cookie: login=bS5zcGxpZXRob2V2ZXJAZ21haWwuY29tOjE0NzU0MDA3MjAxMjA6Mzg1NTI4OGY3ODgzN2FkMzllNTA0NWNkY2ZjMjBjZGM; Domain=.kicktipp.de; Expires=Sun, 02-Oct-2016 09:32:00 GMT; Path=/; HttpOnly
Однако я не могу (или просто не знаю, как) получить этот файл cookie в моей банке запросов и, следовательно, посетить страницу как вошедший в систему пользователь.
Есть ли что-то, чего мне здесь не хватает, чтобы оставаться в системе (или вообще входить на страницу)? Заранее спасибо.