2016-11-22 58 views
0

我似乎做錯了什麼。JavaScript刮板登錄

我有一個學生網站,我想刮,但首先我需要登錄。目前我有一個python刮刀,它做到了。該網站通過發送郵件請求登錄到包含sid和PIN的網址。

var login_url = 'https://example.com'; 

var formData = { 
    sid: 'username', 
    PIN: 'password' 
} 

我該如何去創建相同的刮板,但與JavaScript?我已經看到了請求庫,這看起來像我想要使用但無法使其工作。

+0

https://github.com/request/request#forms – doublesharp

+0

@doublesharp謝謝,我已經看到了,並試過它,但它仍然沒有登錄。 –

+0

我剛剛發佈了一個例子作爲答案。確保您檢查回調中的結果,以確保服務器沒有響應錯誤等。 – doublesharp

回答

0

您需要使用request模塊將POST the form data添加到您的端點。服務器的響應將返回到.post()方法。

const request = require('request'); 
// do not reassign "request", if you need to set properties us a different variable 

// use the action= value from the form for the URL 
const url = 'https://central.carleton.ca/prod/twbkwbis.P_ValLoginn'; 
const data = { 
    sid: 'username', 
    PIN: 'password', 
}; 

request.post({ url: url, formData: data }, (err, response, body) => { 
    if (err) { 
     console.log('failed', err); 
    } else { 
     console.log('the response', body); 
    } 
}); 

如果您對分析生成的HTML感興趣,我推薦使用CheerioJS - 很像jQuery,但是服務器端。

+0

謝謝你的幫助,我試了一下代碼,但仍然無法使它工作。問題似乎與URL,但它在我的Python刮板工程。這可能不是我需要的JavaScript嗎?我通過監視使用chrome的網絡選項卡登錄後發送的發佈請求來獲取URL。 –

+0

我用您應該使用的正確URL更新了答案。我運行的代碼,它的工作原理,我只是得到了預期的驗證錯誤。 – doublesharp

+0

感謝您的幫助,我將它與cookies結合在一起,它完美地工作! –