我正在尝试从我的Nodejs服务器登录网站,以便可以进行一些网络搜集以收集用户数据,但是在发送登录所需的POST请求时遇到了麻烦。在网站上,它使用一种形式来接收用户的用户名和密码,但是我不知道如何发送完美模仿表单的POST请求。
我一直在尝试使用请求发送表格 之所以有第一个请求,是因为表单需要验证ID,然后我从字符串中解析出ID,以便可以将其发送回表单。
无论何时发送,它都会给我一个HTTP错误400和一个空白页面,看起来像这样 HTTP错误:400 访问/ pf4 / cms2_site / view_deployment时出现问题。原因:NoEvent
这是我用来从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请求中做错了什么,或者我怎么知道,我将不胜感激。
预先谢谢你!
答案 0 :(得分:1)
您获得对“ https://cdm.schoolloop.com”的POST的标准响应
“请求”库通过uri标识资源,这应该是发布请求的正确语法:
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 ...