Как использовать прокси с node-fetch

Узнайте, как установить прокси в Node-Fetch в этом пошаговом руководстве.
2 min read
Proxy in node fetch

Node.js – это популярная среда выполнения JavaScript, позволяющая создавать серверные и сетевые приложения. Например, если вам нужно получить данные из удаленного API или веб-сайта в Node.js, вы можете использовать веб-прокси-сервер, который выступает в качестве посредника между вашим приложением и интернетом. Это позволит вам обойти сетевые ограничения, получить доступ к заблокированному контенту и скрыть свой IP-адрес.

Большинство современных JavaScript-приложений используют Fetch API для выполнения HTTP-запросов. Он доступен в веб-браузерах как встроенная функция, а начиная с Node.js v16 он доступен без каких-либо внешних зависимостей. Однако есть одна проблема: встроенная в Node.js функциональность fetch повторяет ту, что доступна в веб-браузерах, и не может работать с прокси.  

К счастью, есть простое решение: библиотека node-fetch. Эта библиотека включает в себя Fetch API для Node.js, который добавляет дополнительную функциональность, специфичную для Node.js, включая возможность работы с HTTP-агентами Node.js. HTTP-агент – это инструмент, который управляет пулом соединений, позволяя вам повторно использовать соединения для HTTP-запросов. Это означает, что вы можете использовать HTTP-агент для настройки запросов на выборку, когда они проходят через прокси.

В этой статье вы узнаете, как использовать node-fetch вместе с библиотекой https-proxy-agent для создания HTTP-агента, поддерживающего прокси HTTP и HTTPS. Вы также узнаете о прокси-сервисе Bright Data, который предлагает различные типы прокси и функции для ваших потребностей в веб-скрапинге.

Как использовать прокси с node-fetch

Прежде чем приступить к изучению этого руководства, вам понадобятся следующие предварительные условия:

  • Рабочая установка Node.js.
  • Доступ к веб-прокси. В качестве альтернативы, для тестирования, вы можете настроить собственный веб-прокси с помощью Node.js.

Как только вы создадите эти необходимые условия, можете приступать!

Создайте проект Node.js

Первое, что вам нужно сделать, – это создать проект Node.js и инициализировать его с помощью npm. Для этого откройте терминал и выполните следующие команды:

mkdir node-fetch-proxy
cd node-fetch-proxy
npm init -y

Эта команда создает папку node-fetch-proxy, переходит в нее и создает файл package.json с некоторыми значениями по умолчанию.

Установите node-fetch и https-proxy-agent

Далее вам нужно установить библиотеки node-fetch и https-proxy-agent в качестве зависимых компонентов для вашего проекта с помощью следующей команды:

npm install –-save node-fetch https-proxy-agent

Эта команда устанавливает библиотеки в папку node_modules вашего проекта и соответствующим образом обновляет файл package.json.

Использование HttpsProxyAgent и node-fetch для выполнения HTTP-вызовов через прокси-

После установки библиотек node-fetch и https-proxy-agent вам нужно использовать класс HttpsProxyAgent из библиотеки https-proxy-agent вместе с функцией fetch из библиотеки node-fetchh для выполнения HTTP-вызовов через прокси. Для этого создайте файл proxy.mjs в папке проекта и добавьте в него следующий код:

import fetch from 'node-fetch';
import { HttpsProxyAgent } from 'https-proxy-agent';

// Replace <proxy_url> with your actual proxy URL
const agent = new HttpsProxyAgent('<proxy_url>');

// Use fetch with the agent option to make an HTTP request through the proxy
// Replace <target_url> with the URL you want to request
fetch('<target_url>', { agent })
  .then((response) => response.text())
  .then((text) => console.log(text))
  .catch((error) => console.error(error));

Этот код выполняет следующие действия:

  • Она импортирует функцию fetch из библиотеки node-fetch, которая предоставляет совместимый с браузером Fetch API для Node.js.
  • Он импортирует класс HttpsProxyAgent из библиотеки https-proxy-agent, который создает HTTP-агент, поддерживающий HTTPS-прокси.
  • Он создает экземпляр HttpsProxyAgentt с вашим URL прокси. Вам нужно заменить <proxy_url> на реальный URL прокси, который должен иметь следующий формат: http://username:password@host:port.
  • Она использует функцию fetch с опцией agent для выполнения HTTP-запроса через прокси. Вам нужно заменить <target_url> на URL, который вы хотите запросить, который может быть любым действительным HTTP или HTTPS URL.
  • Он обрабатывает ответ и выводит все возникающие ошибки.

Сохраните код и выполните следующую команду:

node proxy.mjs

Эта команда выполняет ваш код и делает HTTP-запрос через прокси. Вы должны увидеть текст ответа или ошибки в терминале.

Ограничения на использование прокси с node-fetch

Хотя такой подход хорошо работает при использовании простого прокси, многие реальные случаи использования, такие как веб-скрапинг, требуют более сложного подхода. Многие веб-сайты и веб-интерфейсы блокируют IP-адреса известных прокси, что затрудняет сбор нужных данных.

Кроме того, сайты могут иметь географические ограничения, скрывающие контент от посетителей в зависимости от их местоположения. Например, некоторые американские газеты блокируют доступ к своим сайтам европейским посетителям из-за трудностей с соблюдением Общего регламента защиты данных (GDPR) и Директивы ePrivacy.

К счастью, более сложные прокси, такие как предлагаемые прокси-сервисом Bright Data, предоставляют несколько типов прокси, которые помогают пользователям обойти эти ограничения.

Прокси-сервис Bright Data

Если вы ищете надежный и масштабируемый прокси-сервис для веб-скрапинга, обратите внимание на этот сервис. Bright Data – ведущий поставщик прокси-решений, предлагающий более 72 миллионов IP-адресов в 195 странах с 99,9-процентным временем безотказной работы.

С помощью прокси-серверов Bright Data вы можете выбрать один из различных типов прокси, таких как прокси-серверы для жилых помещений, центров обработки данных, интернет-провайдеров (ISP), мобильных или супер прокси, в зависимости от условий использования и бюджета. Такой выбор полезен при создании веб-парсера, которому необходимо получать контент с сайтов, блокирующих известные IP-адреса прокси.

Вместо того чтобы полагаться на общий прокси, работающий в неподконтрольном вам месте, прокси Bright Data позволяют вам выбрать тип прокси, который лучше всего соответствует типу пользователей, обычно получающих доступ к контенту, который вы пытаетесь парсить. Вы также можете получить доступ к расширенным функциям, таким как геотаргетинг, ротация IP-адресов и контроль сеансов, которые гарантируют, что ваше приложение не будет заблокировано.

Типы прокси Bright Data

Bright Data предлагает различные типы прокси для различных сценариев веб-скрапинга. Ниже перечислены некоторые из предлагаемых ими прокси:

  • Резидентный прокси направляет ваши интернет-запросы через настоящие устройства, такие как персональные компьютеры или ноутбуки, которые подключены к Интернету через резидентного провайдера. Эти прокси отлично подходят для веб-скрапинга, поскольку они сливаются с обычными пользователями, что снижает вероятность блокировки ваших прокси-запросов.
  • Прокси-серверы действуют как шлюз и предоставляют вам доступ к обширной сети резидентных прокси-серверов Bright Data. С помощью одного URL-адреса суперпрокси вы можете подключиться к любому резидентному прокси без необходимости указывать конкретный IP-адрес. Более того, суперпрокси предлагает гибкую настройку множества параметров, включая выбор страны, города, ISP или ASN жилого прокси, который вы хотите использовать.
  • Серверные прокси используют IP-адрес, выделенный серверу, расположенному в центре обработки данных. Прокси в центрах обработки данных подвержены обнаружению и последующей блокировке веб-сайтами и API, но они все равно полезны для приложений, получающих доступ к данным с URL, которые не пытаются блокировать прокси-запросы. Они наиболее подходят для проектов веб-скрапинга, в которых трафик не должен поступать с жилых, рабочих или мобильных IP-адресов.
  • ISP прокси – это IP-адрес, который назначается серверу, размещенному у провайдера. Прокси ISP похожи на резидентные прокси, с той лишь разницей, что их IP-адреса могут быть как жилыми, так и бизнес-адресами. Это делает их удобными для работы с сайтами, на которых ожидается сочетание резидентного и делового трафика.
  • Мобильные прокси – это IP-адреса, привязанные к мобильному оборудованию (т. е. смартфонам или планшетам), которое подключается к интернету через сотовые сети. Мобильные прокси Bright Data практически незаметны, эффективно имитируя действия настоящих мобильных пользователей. Они особенно полезны, когда вам нужно убедиться, что вы собираете определенный контент, обслуживаемый мобильными веб-сайтами и API, не будучи заблокированным от доступа к данным с немобильного IP-адреса.

Менеджер прокси и API

При таком большом выборе управление использованием прокси может быть сложным. К счастью, Proxy Manager Bright Data позволяет легко настраивать и управлять прокси, отслеживать их использование и производительность, а также устранять любые неполадки.

Кроме того, вы можете использовать API и интеграции Bright Data, чтобы легко интегрировать прокси в свой код. Браузер для скрапинга API позволяет легко использовать прокси из инструментов, с которыми вы уже знакомы (например, Playwright и Puppeteer), а Web Unlocker поможет вам преодолеть блокировку, которая обычно не позволяет вашему прокси получить доступ к сайту.

Заключение

В этой статье вы узнали, как использовать библиотеку node-fetch с библиотекой https-proxy-agent для создания HTTP-агента, поддерживающего HTTPS-прокси. Вы также узнали о прокси-сервисе Bright Data, который предлагает различные типы прокси и функции для ваших потребностей в веб-скрапинге.

Использование веб-прокси с fetch-запросами в Node.js может помочь вам преодолеть сетевые ограничения, получить доступ к заблокированному геоконтенту или скрыть свой IP-адрес. Однако простого проксирования с помощью node-fetch и https-proxy-agent может быть недостаточно для некоторых сценариев веб-скрапинга, особенно если вам нужна анонимность, геотаргетинг, ротация IP-адресов или другие дополнительные возможности. В таких случаях следует рассмотреть возможность использования прокси Bright Data.

Прокси-сервисы Bright Data предлагают широкий спектр функций, которые помогут вам получить доступ к любому веб-сайту или API без блокировки или ограничения доступа. Вы также можете выбрать один из различных типов прокси в зависимости от ваших целей и бюджета. Чтобы начать работу с прокси-сервисом Bright Data, подпишитесь на бесплатную пробную версию уже сегодня.