2016-02-18 39 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