In letzter Zeit versuche ich Informationen von einer Website (kicktipp) mit Nodejs, die request module und cheerio zu kratzen. Da diese Site eine Authentifizierung erfordert, um die meisten Sites anzuzeigen, habe ich versucht, mich über eine Postanforderung anzumelden und zu überprüfen, ob der Benutzer mit dem folgenden Code angemeldet ist (Ich ersetzte die Anmeldeinformationen durch Dummydaten, aber ich verwende echte Daten in meinem eigentlichen Skript):Nodejs Webseite Scraping mit Authentifizierung Cookie
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);
});
});
die Parameter des hTML-Formular senden (wie mit dem Browser überprüft) wie folgt aussehen:
[email protected]&passwort=1234567890&_charset_=UTF-8&submitbutton=Anmelden
mit diesem Skript, mein cookie jar
sieht wie folgt aus:
[ Cookie="JSESSIONID=F650D7F5CD6AF4F6B0944B2190EE2D29.kt213; Path=/; hostOnly=true; aAge=1ms; cAge=179ms" ]
Die JSESSIONID
wurde erfolgreich gespeichert, aber der Server ist nicht eingeloggt seit console.log(text)
druckt Login
aber es sollte Logout
drucken, wenn der Benutzer ordnungsgemäß angemeldet ist.
Nach der Login-Anfrage mit dem Browser Inspektion erkennen ich, dass der Browser jedes Mal eine Seite auf dieser Domain ein neues Cookie empfängt über set-cookie
in den Antwort-Header wie folgt angefordert wird:
Set-Cookie: login=bS5zcGxpZXRob2V2ZXJAZ21haWwuY29tOjE0NzU0MDA3MjAxMjA6Mzg1NTI4OGY3ODgzN2FkMzllNTA0NWNkY2ZjMjBjZGM; Domain=.kicktipp.de; Expires=Sun, 02-Oct-2016 09:32:00 GMT; Path=/; HttpOnly
aber ich nicht bin kann (oder weiß einfach nicht wie), um diesen Cookie in meine Anfrage Jar und damit die Seite als angemeldeter Benutzer zu besuchen.
Gibt es irgendetwas, was mir hier fehlt, um eingeloggt zu bleiben (oder sich überhaupt auf der Seite einzuloggen)? Danke im Voraus.