使用nodejs刮取需要验证的网站

时间:2016-02-18 20:03:19

标签: javascript html asp.net node.js cheerio

所以我试图抓住this site (my schools website)然而我似乎无法通过登录。

到目前为止,这是我的代码:

var request = require('request');
var cheerio = require('cheerio');
var j = request.jar();
    var request = request.defaults({ jar : j })

var credentials = {
	username: 'username',
	password: 'password'
};

request.post({
  	uri: 'http://tick-tack.mediagymnasiet.se/Default.aspx',
    headers: { 'content-type': 'application/x-www-form-urlencoded' },
	body: require('querystring').stringify(credentials)
}, function(err, res, body){
	if(err) {
		callback.call(null, new Error('Login failed'));
		return;
	}	else {
	console.log("sucess!");
}

	request('http://tick-tack.mediagymnasiet.se/Authenticated/Default.aspx', function(err, res, body) {
		if(err) {
			callback.call(null, new Error('Request failed'));
			return;
	
		} else {
	console.log("sucess!");
}


	var $ = cheerio.load(body);
	var text = $('#topContainer').text();
 console.log($('body').text());
	});
});

任何可能的帮助?它看起来像我通过登录,但是当我发布任何数据时它仍然发布登录页面..

1 个答案:

答案 0 :(得分:0)

很难说只看这个。它可能无法正常工作,因为他们正在寻找用户名/密码作为POST的标题或查询字符串本身传递?

你看过这篇文章了吗? https://www.haykranen.nl/2011/06/21/basic-http-authentication-in-node-js-using-the-request-module/