Подтвердить что ты не робот

Как сохранить сеанс запроса в NodeJS

Я пытаюсь использовать NodeJS для очистки веб-сайта, для которого требуется вход в систему POST. Затем, как только я войду в систему, я могу получить доступ к отдельной веб-странице GET.

Первая проблема прямо сейчас - это вход в систему. Я пытался использовать request to POST данные для входа, но ответ, который я получаю, не входит в систему.

exports.getstats = function (req, res) {
    request.post({url : requesturl, form: lform}, function(err, response, body) {
        res.writeHeader(200, {"Content-Type": "text/html"});
        res.write(body);
        res.end();
    });
};

Здесь я просто пересылаю страницу, которую я возвращаю, но страница, на которой я возвращаюсь, показывает форму входа в систему, и если я попытаюсь получить доступ к другой странице, то она говорит, что я не вошел в систему.

Мне кажется, мне нужно поддерживать сессию на стороне клиента и данные cookie, но я не могу найти никаких ресурсов, чтобы помочь мне понять, как это сделать.


В качестве продолжения я закончил использование zombiejs, чтобы получить нужные мне функции

4b9b3361

Ответ 1

Вам нужно сделать кувшин cookie и использовать ту же самую банку для всех связанных запросов.

 var cookieJar = request.jar();
 request.post({url : requesturl, jar: cookieJar, form: lform}, ...

Это теоретически позволит вам очистить страницы с GET как зарегистрированным пользователем, но только после того, как вы получите действующий код входа. Основываясь на вашем описании ответа на ваш POST для входа в систему, это может показываться неправильно, поэтому кук файл cookie не поможет, пока вы не исправите проблемы в своем коде входа.

Ответ 2

Запрос .jar(); не работал у меня. Поэтому я использую ответ заголовков, чтобы сделать следующий запрос следующим образом:

request.post({
    url: 'https://exampleurl.com/login',
    form: {"login":"xxxx", "password":"xxxx"}
}, function(error, response, body){

    request.get({
        url:"https://exampleurl.com/logged",
        header: response.headers
    },function(error, response, body){
        // The full html of the authenticated page
        console.log(body);
    });
});

Фактически этот способ работает нормально. = D