Прокси для Node-Fetch

Как использовать прокси с Node-Fetch в 2026 году

Это руководство объясняет, как я могу настроить прокси с помощью Node-Fetch, управлять ротацией IP и выбирать между бесплатными и премиум-сервисами в зависимости от моих потребностей. Давайте разберемся!

Пререквизиты

Чтобы повторять шаги, убедитесь, что у вас есть:

  • Node.js (v12.20.0 или новее)
  • Терминал или командная строка
  • Установлены Node-Fetch и HTTPS-Proxy-Agent

Шаг 1: Установка Node-Fetch и HTTPS-Proxy-Agent

В каталоге проекта откройте терминал и выполните следующие команды:

npm i node-fetch
npm i https-proxy-agent

Если вы столкнулись с ошибкой типа cannot find module 'node-fetch', это часто связано с проблемами разрешения модулей. Попробуйте запустить npm install для обновления зависимостей в вашем проекте. Также убедитесь, что в файле package.json установлено значение "type": "module", так как Node-Fetch v3.x является модулем только для ESM.

Понимание прокси и зачем они нужны для веб-скрейпинга

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

Прокси бывают двух основных типов:

  • HTTP-прокси: Поддерживают только HTTP-трафик.
  • Прокси-серверы HTTPS: Поддерживают трафик HTTP и HTTPS, что делает их более универсальными.

Использование прокси с Node-Fetch подразумевает передачу пользовательского прокси-агента в запрос fetch. Однако Node-Fetch изначально не поддерживает прокси, поэтому для этой цели мы будем использовать пакет https-proxy-agent.

Бесплатные и платные прокси: что лучше для вашего приложения?

В интернете доступны бесплатные списки прокси, но у них есть определённые компромиссы:

  • Плюсы: Бесплатный и широко доступный.
  • Конс: Обычно нестабильны, медленнее и чаще блокируются сайтами.

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

Настройка статического прокси с Node-Fetch

Для начала с базовой конфигурации давайте используем статический прокси с Node-Fetch, чтобы выполнить HTTP-запрос. Этот вариант подходит, если у вас один прокси-сервер.

Импорт требуемый модули:
импорт получить с сайта 'node-fetch';
импорт { HttpsProxyAgent } с сайта 'https-proxy-agent';

Определите ваша конфигурация прокси:

const proxyHost = '200.105.215.22';
const proxyPort = 33630;
const proxyUrl = `http://${proxyHost}:${proxyPort}`;
const прокси-агент = новый HttpsProxyAgent(proxyUrl);

Выполните запрос через прокси:

(async () => {
const targetUrl = 'https://ident.me';
попробуйте {
const ответ = ожидайте получить(targetUrl, { агент: proxyAgent });
const данные = ожидайте ответ.текст();
консоль.журнал(данные); // Ожидаемый результат: IP-адрес прокси-сервера
} поймать (ошибка) {
консоль.ошибка(ошибка);
}
})();

В этом примере мы нацеливаемся на https://ident.me, который возвращает IP-адрес отправителя запроса. Такая конфигурация подходит для простых задач, но часто оказывается недостаточной для интенсивного веб-скрейпинга или API с ограничением частоты запросов.

Ротационные прокси с Node-Fetch: работа с динамической блокировкой IP

Ротационные прокси идеально подходят для массового скрапинга и помогают распределять запросы между несколькими IP-адресами, снижая вероятность блокировки.

Подробнее о лучших ротационных прокси здесь

  1. Яркие данные: Высокопроизводительные прокси с расширенными возможностями, идеально подходящие для комплексных решений.
  2. Smartproxy: Доступные и надежные прокси с глобальным охватом, идеально подходящие для веб-скрейпинга.
  3. Oxylabs: Исключительная производительность и поддержка, отлично подходит для компаний, которым нужны прокси высшего качества.
  4. IPRoyal: Гибкая ротация и ценообразование, подходят для небольших проектов или в качестве резервного провайдера.
  5. SOAX: Премиальные прокси с точным таргетингом и несколькими настройками ротации по конкурентным ценам.
  6. NetNut: Широкие возможности для крупномасштабного скрейпинга, но базовая документация и панель управления.
  7. Infatica: Доступные этично полученные прокси с высокой производительностью для бизнеса.

Шаг 1: Создайте список прокси

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

const proxyList = [
{ хост: '103.69.108.78', порт: 8191 },
{ хост: '61.29.96.146', порт: 80 },
{ хост: '154.204.58.155', порт: 8090 }
];

Шаг 2: Ротация прокси в запросах

Используйте цикл, чтобы поочередно переключаться между прокси, применяя для каждого запроса отдельный. Этот прием распределяет нагрузку между несколькими IP-адресами.

импорт получить с сайта 'node-fetch';
импорт { HttpsProxyAgent } с сайта 'https-proxy-agent';
const proxyList = [
{ хост: '103.69.108.78', порт: 8191 },
{ хост: '61.29.96.146', порт: 80 },
{ хост: '154.204.58.155', порт: 8090 }
];
async функция rotateProxies(proxyList, targetUrl) {
для (const прокси из proxyList) {
const proxyUrl = `http://${proxy.host}:${proxy.port}`;
const прокси-агент = новый HttpsProxyAgent(proxyUrl);
попробуйте {
const ответ = ожидайте получить(targetUrl, { агент: proxyAgent });
const html = ожидайте ответ.текст();
консоль.журнал(html);
} поймать (ошибка) {
консоль.ошибка(`Ошибка с прокси ${proxy.host}:${proxy.port}`, error);
}
}
}
const targetUrl = 'https://ident.me';
rotateProxies(proxyList, targetUrl);

Этот метод хорошо работает с сайтами, которые не используют продвинутые механизмы обнаружения ботов. Однако для сайтов с более сильными антибот-мерами стоит рассмотреть премиальные ротационные прокси.

Использование премиальных прокси-сервисов с Node-Fetch: обход продвинутых антибот-механизмов

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

Шаг 1: Зарегистрируйтесь и получите API-ключ

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

const apiKey = '';
const targetUrl = 'https://www.amazon.com';
const apiUrl = `https://brightdata.com/api/v1/?apikey=${apiKey}&url=${encodeURIComponent(targetUrl)}`;

Шаг 2: Определите дополнительные параметры API

Bright Data предлагает различные настройки для повышения анонимности и снижения вероятности обнаружения, такие как включение рендеринга JavaScript (полезно для обработки динамического контента) и настройка ротации прокси для каждого запроса.

const параметры = {
"js_render": "правда", // Выполнение JavaScript для динамических страниц
"proxy_type": "жилой" // Используйте прокси-серверы по месту жительства для большей анонимности
};

Шаг 3: Отправьте запрос через Bright Data API

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

импорт получить с сайта 'node-fetch';
(async () => {
const ответ = ожидайте получить(apiUrl, {
заголовки: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${apiKey}`
},
params: params
});
const html = ожидайте ответ.текст();
const statusCode = response.статус;
консоль.журнал('Код статуса:', statusCode);
консоль.журнал(html);
})();

Продвинутые методы: автоматизация ротации прокси с помощью middleware и асинхронной обработки

Для повышения эффективности стоит реализовать middleware для автоматического управления прокси. Вот пример с асинхронной обработкой нескольких запросов:

Создайте функцию который случайным образом выбирает прокси:

функция getRandomProxy(proxyList) {
возврат proxyList[Математика.пол(Математика.случайно() * proxyList.длина)];
}

Измените логику ротации с контролем параллелизма, чтобы не перегружать серверы:

импорт получить с сайта 'node-fetch';
импорт { HttpsProxyAgent } с сайта 'https-proxy-agent';
const proxyList = [ /* прокси-объекты */ ];
async функция rotateProxies(targetUrl, concurrency = 5) {
const задачи = Массив.с сайта({ длина: concurrency }, async () => {
const прокси = getRandomProxy(proxyList);
const proxyUrl = `http://${proxy.host}:${proxy.port}`;
const прокси-агент = новый HttpsProxyAgent(proxyUrl);
попробуйте {
const ответ = ожидайте получить(targetUrl, { агент: proxyAgent });
const html = ожидайте ответ.текст();
консоль.журнал(`Успешное использование ${proxy.host}:${proxy.port}`);
} поймать (ошибка) {
консоль.ошибка(`Ошибка с ${proxy.host}:${proxy.port}`, error);
}
});
ожидайте Обещание.все(задачи);
}
const targetUrl = 'https://ident.me';
rotateProxies(targetUrl, 3); // Установите параллелизм по мере необходимости

Заключение

Использование прокси-серверов с Node-Fetch стало необходимым для надежного веб-скреппинга и автоматизации данных. Независимо от того, выбираете ли вы бесплатные прокси, премиум-сервисы или настраиваете ротацию, эти методы помогут вам сохранить доступ и избежать ограничений по IP-адресу. Протестируйте каждый метод на своих целевых сайтах; некоторые из них могут потребовать продвинутых премиум-решений для получения стабильных результатов.

Теперь у вас есть инструменты для ротации прокси и обхода IP-блокировок, так что вы сможете собирать данные даже с самых сложных сайтов. Удачного скрейпинга!

Похожие записи