Проблема в том, что cheerio
не может следовать за новым URL.
В вашем конкретном случае есть два возможных решения:
1. Войдите на сайт с помощью браузера, получите доступ к файлам cookie через разработчикаинструменты и скопируйте их в свой request
.Примерно так: документация .
2. Используйте автоматический безголовый браузер, который может следить за перенаправлением страницы.И сохраняйте данные своей сессии.Например, puppeteer или selenium .
Если вы уже используете node.js, было бы проще реализовать логику с puppeteer.
Здесь - дополнительная информация о кукловоде.
Обновление
Кукольник:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
// Now you have two ways
// First one with evaluate, to access page DOM
await page.evaluate(() => {
// Here you have access to DOM. So you can make any JS DOM operations, you wish.
const form = document.querySelector('form');
const email = document.querySelector('email');
// ...some actions
form.submit();
})
// The second one, with puppeteer helper functions
const email = await page.$('email');
// Type function will type text in input
await elementHandle.type('some text');
// press function will emulate enter button press.
await elementHandle.press('Enter');
await page.waitFor(1500);
// Here you have result of your auth procedure.
// After all your operations, just close the browser.
await browser.close();
})();
Здесь соответствует типу кукловода
Если мы ищем реализацию request
.
Сначала нам нужно получить cookie.
Вы можете извлечь куки через это расширение chrome, или перейдите в инструменты разработки, вкладку Network
, нажмите на первую запись и найдите заголовок Cookie
в разделе Request Headers
.
Просто скопируйте его
И затем, в коде, вы выполняете request
, как это из официальной документации :
const j = request.jar();
// Here 'key1=value1' change with your cookie from browser
const cookie = request.cookie('key1=value1');
const url = 'http://www.google.com';
j.setCookie(cookie, url);
request({url: url, jar: j}, function () {
request('http://images.google.com')
})