Извлечь защищенный ресурс с веб-страницы, для которого требуется авторизация + автоматическая c прокрутка веб-страницы. Желательно с nodejs - PullRequest
0 голосов
/ 29 мая 2020

Я хочу получить некоторую информацию (общее количество часов игры за каждую неделю и c.) Из моей истории матчей league of legends. Моя история матчей доступна только в том случае, если я вошел в систему. Это выглядит так:

Screenshot from match history

Я хочу получить то же самое content (то, что отображается на вкладке элементов в chrome инструментах разработчика) с использованием nodejs. Я пробовал использовать:

let url = 'https://matchhistory.eune.leagueoflegends.com/en/#match-history/EUN1/543123433';
const { data } = await axios.get(url);
const $ = cheerio.load(data);
...

Но из c это не работает, потому что у меня нет разрешения на доступ к моей истории матчей по этому URL-адресу без входа в систему. Я не знаю, как Могу ли я получить доступ к тому же запросу (со всеми заголовками), который использует chrome для получения моей истории совпадений, используя этот URL-адрес. Я попытался установить файлы cookie, используя:

  const { data } = await axios.get(url, {
    headers: {
      Cookie:
        "id_token=..., ...",
    }
  });

Я получил доступ к файлам cookie из инструментов разработчика -> приложение -> файлы cookie Cookies

Я не уверен если это правильный подход, и я не уверен, какие файлы cookie мне следует установить. Даже если это возможно, я не хочу устанавливать файлы cookie вручную. Я бы хотел получить доступ к файлу html (который отображается на вкладке элементов на первом снимке экрана), используя nodejs, а затем использовать cheerio, чтобы получить то, что мне нужно. Of c Я мог бы скопировать файл html из инструментов разработчика, а затем передать его nodejs, но я хочу, чтобы этот процесс был автоматическим c.

Другая проблема в том, что даже если я Если вы можете получить доступ к этой странице с помощью nodejs, появится только несколько игр, и по мере того, как я прокручиваю вниз, появляется больше игр, пока в моей истории матчей не останется больше игр. More games appear as I scroll down my match history

Лучшее решение, которое я придумал, - это открыть свою историю матчей, прокрутить ее до конца (это очень раздражает, потому что игр много), а затем скопируйте содержимое html, к которому я получил доступ из вкладки элементов в инструментах chrome dev, передайте его программе nodejs, а затем получите то, что мне нужно, используя cheerio. Я хочу, чтобы этот процесс был автоматическим c (просто запустите мой код nodejs без копирования файла html, установки файлов cookie, прокрутки и т. Д. c), и я бы хотел, чтобы тот же код работал, даже если я переключусь между разными учетными записями.

Чтобы уточнить, мне не нужна помощь с обработкой файла html с cheerio. Мне нужна только помощь, чтобы автоматизировать процесс получения файла html (проблема в том, что он требует входа в систему) , который прокручивается полностью вниз , пока не закончатся игры (idk, если это помогает, но когда я прокручиваю вниз, URL-адрес не меняется, поэтому я предполагаю, что есть несколько ajax запросов).

Любая помощь будет оценена! Спасибо!

...