簡體   English   中英

使用 POST 請求從 Nodejs 服務器登錄網站

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM