Как добавить заголовки onResourceRequested в phantomjs? - PullRequest
0 голосов
/ 07 февраля 2019

Я использую фантомы для имитации взаимодействия человека на веб-сайте, чтобы получить оттуда некоторые данные.На этой странице есть форма -> Я заполнил форму фантомами -> Я нажимаю кнопку отправки.Процесс отправки выглядит следующим образом: Запрос POST инициируется, этот запрос перенаправляет на запрос GET с прикрепленными к нему пустыми заголовками.Но когда я тестировал вручную в браузере, у второго запроса (GET) есть заголовки.

Мы не получили желаемого ответа от запроса GET, потому что у него нет заголовков: User-Agent, Cookie и т. Д.

Я пытался добавить заголовки двумя способами, но безуспешно:

1.

page.onResourceRequested = function (request, networkRequest) {
    if(request.id == '28' && request.headers.length == 0) {
        var cookies = '';
        for (var i = 0; i<page.cookies.length; i++) {
           cookies += page.cookies[i].name + "=" + page.cookies[i].value + '; ';
        }
        request.headers = [
            {
                "name": "User-Agent",
                "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36"
            },
            {
                "name": "Accept",
                "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"
            },
            {
                "name": "Cache-Control",
                "value": "max-age=0"
            },
            {
                "name": "Connection",
                "value": "keep-alive"
            },
            {
                "name": "Content-Type",
                "value": "application/x-www-form-urlencoded"
            },
            {
                "name": "Cookie",
                "value": cookies
            }

        ];
    }
};

2.

page.onResourceRequested = function (request, networkRequest) {
    if(request.id == '28' && request.headers.length == 0) {
        var cookies = '';
        for (var i = 0; i<page.cookies.length; i++) {
           cookies += page.cookies[i].name + "=" + page.cookies[i].value + '; ';
        }

        networkRequest.setHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36");
        networkRequest.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
        networkRequest.setHeader("Cache-Control", "max-age=0");
        networkRequest.setHeader("Connection", "keep-alive");
        networkRequest.setHeader("Content-Type", "Content-Type");
        networkRequest.setHeader("Cookie", cookies);
    }
};

Я напечаталзапрос выглядит так:

{
    "headers": [],
    "id": 28,
    "method": "GET",
    "time": "2019-02-07T08:11:59.429Z",
    "url": "[THE GET URL]"
}

Я использую phantomjs 2.5.0 (это единственная библиотека, которая работает для меня).

Как я могу успешно добавить заголовки и файлы cookie дляэтот запрос GET?

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...