Есть ли способ запросить внутренний API общедоступного веб-сайта из Node fetch?

#node.js #http #request #fetch

Вопрос:

Я пытаюсь очистить динамические веб-сайты и использовал Puppeteer с Node.js прежде чем я понял, что могу просто напрямую получить API веб-сайта, и мне не нужно будет визуализировать то, что мне не нужно. Заглянув на вкладку «Сеть» инструментов разработчика Chrome, я смог найти точные конечные точки, которые возвращают нужные мне данные. Это работает для большинства сайтов, которые я пытаюсь очистить, но для некоторых, особенно для запросов на публикацию, API возвращает код ошибки «403: Запрещено».

API возвращает результат успешно, если я выполняю запрос на извлечение непосредственно из консоли Chrome. Но как только я пытаюсь с другой вкладки, Почтальона или узла с помощью node-fetch, я получаю «403: Запрещено».

Я попытался скопировать точные заголовки, которые естественным образом отправляются с веб-сайта, и я попытался явно установить заголовки «источник» и «референт» на адрес веб-сайта, но безрезультатно.

Является ли это просто мерой безопасности, которую невозможно нарушить, или есть способ обмануть API, заставив его думать, что запрос поступает с их собственного веб-сайта?

Комментарии:

1. Вы не прошли аутентификацию (вот что означает 403). Узнайте, как сервер API ожидает аутентификации — файлы cookie, заголовок авторизации, какой-то секретный проприетарный заголовок и т.д.

2. @slebetman, я просто не знаю, как это выяснить. Я вручную добавил все заголовки и файлы cookie исходного запроса, но единственное, что работает, — это если я выполняю запрос с консоли Chrome на веб-сайте.

3. Вы можете узнать об этом, заглянув на вкладку сеть