[英]Log into a website from a Nodejs server using a POST request
我正在嘗試從我的 Nodejs 服務器登錄到一個網站,以便我可以進行一些網絡抓取來收集用戶數據,但是我在發送登錄所需的 POST 請求時遇到了問題。在網站上,它使用一個表單來接收用戶的用戶名和密碼,但我不知道如何發送完美模仿表單的 POST 請求。
我一直在嘗試使用 request 來發送表單 第一個請求在那里,因為表單需要一個 id 來驗證,我將它從字符串中解析出來,以便我可以在表單中將其發送回。
每當我發送它時,它都會給我一個 HTTP 錯誤 400 和一個看起來像這個 HTTP 錯誤:400 訪問 /pf4/cms2_site/view_deployment 的問題的空白頁面。 原因:無事件
這是我一直用來從我的 Nodejs 服務器發送請求的代碼。
request.get('https://cdm.schoolloop.com/portal/login',{headers: { 'User-Agent': 'Mozilla/5.0' }}, function(err, res, body){
body = body.substring(body.indexOf('id="form_data_id" value="') + ('id="form_data_id" value="').length, body.length);
var formDataId = body.substring(0, body.indexOf('"'));
request.post({
uri: 'https://cdm.schoolloop.com',
host: 'https://cdm.schoolloop.com',
path: '/portal/login?etarget=login_form',
method: 'POST',
headers: { 'User-Agent': 'Mozilla/5.0', 'Content-Type': 'application/x-www-form-urlencoded' },
form: {
'login_name': "testUsername",
'password': "testPassword",
'event.login.x': 0,
'event.login.y': 0,
'redirect': 'pig4d2db88ad6',
'forward': '',
'login_form_reverse': '',
'form_data_id': formDataId,
'sort': '',
'reverse': '',
'login_form_sort': '',
'event_override': 'login',
'login_form_filter': '',
'login_form_letter': '',
'return_url': '',
'login_form_page_index': '',
'login_form_page_item_count': ''
}
}, function (err, firstResponse, body) {
if (err) {
console.log(err);
} else if (body) {
console.log(body);
}
});
});
如果有人能告訴我我在 POST 請求中做錯了什么,或者我如何弄清楚,我將不勝感激。
先感謝您!
您會收到對“ https://cdm.schoolloop.com ” POST 的標准響應
“請求”庫通過 uri 標識資源,這應該是 post 請求的正確語法:
request.post({
uri: 'https://cdm.schoolloop.com/portal/login?etarget=login_form',
method: 'POST',
headers: { 'User-Agent': 'Mozilla/5.0', 'Content-Type': 'application/x-www-form-urlencoded' },
form: {
'login_name': "testUsername",
'password': "testPassword",
'event.login.x': 0,
'event.login.y': 0,
'redirect': 'pig4d2db88ad6',
'forward': '',
'login_form_reverse': '',
'form_data_id': formDataId,
'sort': '',
'reverse': '',
'login_form_sort': '',
'event_override': 'login',
'login_form_filter': '',
'login_form_letter': '',
'return_url': '',
'login_form_page_index': '',
'login_form_page_item_count': ''
}
}, function ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.