Отличие Powershell Invoke-WebRequest с API извлечения NodeJS - PullRequest
0 голосов
/ 05 марта 2019

Я пытался извлечь некоторые данные с веб-сайта, но единственный способ получить что-то полезное - через Powershell.

Сценарий, который я запускаю из Powershell:

Invoke-WebRequest -Uri "https://www.pelispedia.tv/api/iframes.php?id=18471?nocache" -Headers @{"method"="GET"; "authority"="www.pelispedia.tv"; "scheme"="https"; "path"="/api/iframes.php?id=18471?nocache"; "upgrade-insecure-requests"="1"; "user-agent"="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36"; "accept"="text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"; "referer"="https://www.pelispedia.tv/pelicula/el-nino-que-domo-el-viento/"; "accept-encoding"="gzip, deflate, br"; "accept-language"="es,en;q=0.9"} | Select-Object -Expand Content

Я получил его с вкладки Chromes Network внутри DevTools при просмотре загрузки этого сайта: https://www.pelispedia.tv/pelicula/el-nino-que-domo-el-viento/

Скриншот Devtools - также включает cURL и fetch

Ответ представляет собой полный HTML-сайт, который я хочу использовать позже.

Сценарий выборки:

fetch("https://www.pelispedia.tv/api/iframes.php?id=18471?nocache", {
    "credentials": "include",
    "headers": {
      "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
      "accept-language": "es,en;q=0.9",
      "upgrade-insecure-requests": "1"
    },
    "referrer": "https://www.pelispedia.tv/pelicula/el-nino-que-domo-el-viento/",
    "referrerPolicy": "no-referrer-when-downgrade",
    "body": null,
    "method": "GET",
    "mode": "cors"
  })
  .then(res => res.text())
  .then(body => console.log(body));

Я пытался использовать несколько пакетов NodeJS, таких как node-fetch, axios и request для получения того же результата, что и в Powershell, но я просто получаю HTML со строкой "ОШИБКА".

Этот подход не работает в NodeJS, но если я запускаю его из консоли Chrome, а я с сайта, он работает.

Я хотел бы знать, что делает Powershell, чтобы получить правильный ответ и как его воссоздать вУзел или любой другой язык / среда выполнения (Java, Python, PHP ...).

1 Ответ

0 голосов
/ 05 марта 2019

Использование инструментов извлечения формы Chrome Dev и использование извлечения из узла или использование Powershell - это совершенно разные вещи.Извлекать форму У инструментов Chrome Dev есть все заголовки и другие элементы, прикрепленные к запросу, как это делает браузер, поэтому по сути ваш браузер выполняет запрос, воспринимаемый сервером веб-сайта.

Но в случае PowerShell илизапрос или выборка nodejs, все эти заголовки, реферер и многое другое удаляются.Таким образом, сервер отклоняет запрос, считая вас ботом.

...