Как использовать прокси с 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.
Понимание прокси и зачем они нужны для веб-скрейпинга
A прокси выступает посредником между вашим приложением и целевым сервером. Когда вы используете прокси, запросы выглядят так, будто они исходят с 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-адресами, снижая вероятность блокировки.
Подробнее о лучших ротационных прокси здесь
- Яркие данные: Высокопроизводительные прокси с расширенными возможностями, идеально подходящие для комплексных решений.
- Smartproxy: Доступные и надежные прокси с глобальным охватом, идеально подходящие для веб-скрейпинга.
- Oxylabs: Исключительная производительность и поддержка, отлично подходит для компаний, которым нужны прокси высшего качества.
- IPRoyal: Гибкая ротация и ценообразование, подходят для небольших проектов или в качестве резервного провайдера.
- SOAX: Премиальные прокси с точным таргетингом и несколькими настройками ротации по конкурентным ценам.
- NetNut: Широкие возможности для крупномасштабного скрейпинга, но базовая документация и панель управления.
- 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-блокировок, так что вы сможете собирать данные даже с самых сложных сайтов. Удачного скрейпинга!

