2016-02-18 38 views
0

所以我试图抓this site (my schools website)但我似乎无法通过登录。刮一个需要使用nodejs认证的网站

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

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

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

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

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

 

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

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

回答

0

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

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

+0

试过了,它没有工作,仍然卡住嗯..猜测它是什么与viewstate? –

+0

我再次看了一下表格。他们可能会从表单字段中查找特定的ID。 即ttpnlLogin_Login1_Password和/或ttpnlLogin_Login1_UserName。 你可以尝试切换这些用户名/密码,并让我知道你发现了什么? – ChrisBurns