Gần đây tôi đang cố gắng để loại bỏ thông tin từ một trang web (kicktipp) bằng cách sử dụng Nodejs, request module và cổ vũ. Vì trang web này yêu cầu xác thực để xem hầu hết các trang web, tôi đã cố gắng đăng nhập qua yêu cầu đăng và kiểm tra xem người dùng có đăng nhập bằng mã sau không (tôi đã thay thế bằng thông tin xác thực nhưng tôi sử dụng dữ liệu thực trong tập lệnh thực tế của mình):Nodejs trang web cạo với cookie xác thực
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);
});
});
các thông số gửi bởi html-form (như kiểm tra với trình duyệt) nhìn như thế này:
k[email protected]&passwort=1234567890&_charset_=UTF-8&submitbutton=Anmelden
với kịch bản đó, tôi cookie jar
trông như thế này:
[ Cookie="JSESSIONID=F650D7F5CD6AF4F6B0944B2190EE2D29.kt213; Path=/; hostOnly=true; aAge=1ms; cAge=179ms" ]
JSESSIONID
được lưu thành công nhưng máy chủ sẽ không được đăng nhập từ console.log(text)
in Login
nhưng cần in Logout
nếu người dùng đăng nhập đúng cách.
Sau khi kiểm tra tình hình yêu cầu đăng nhập bằng trình duyệt Tôi nhận ra rằng trình duyệt nhận được một cookie mới mọi trang trên tên miền này được yêu cầu qua set-cookie
trong tiêu đề phản ứng như thế này:
Set-Cookie: login=bS5zcGxpZXRob2V2ZXJAZ21haWwuY29tOjE0NzU0MDA3MjAxMjA6Mzg1NTI4OGY3ODgzN2FkMzllNTA0NWNkY2ZjMjBjZGM; Domain=.kicktipp.de; Expires=Sun, 02-Oct-2016 09:32:00 GMT; Path=/; HttpOnly
Tuy nhiên tôi không có thể (hoặc chỉ không biết làm thế nào) để có được cookie này vào jar yêu cầu của tôi và do đó truy cập trang như một người dùng đã đăng nhập.
Có bất kỳ điều gì tôi thiếu ở đây để duy trì trạng thái đăng nhập (hoặc đăng nhập vào trang)? Cảm ơn trước.