Прокси-сервер Node.js для исходящего скрапинга отличается от объекта Proxy в JavaScript и от обратного прокси-сервера.
Axios принимает HTTP-прокси через свою конфигурацию proxy в запросе; используйте явный тайм-аут и валидируйте возвращенный контент.
Встроенный fetch() в Node работает на основе Undici, и маршрутизация прокси на уровне запроса может использовать ProxyAgent от Undici в качестве dispatcher.
Храните один dispatcher или agent для сохранения идентичности, закрывайте его, когда работа завершена, и меняйте только на границах независимых задач.
Прокси изменяет сетевой маршрут; он не предоставляет разрешение, не решает CAPTCHAs и не исправляет недействительный скрапер.
Какой “Node.js Proxy” Вы Имеете В Виду?
Для веб-скрапинга прокси Node.js — это исходный сетевой посредник, используемый HTTP-клиентом, таким как Axios или fetch. Это не метапрограммный объект Proxy, описанный MDN, и это не обратный прокси, который принимает трафик для вашего приложения. Эта статья сосредоточена только на исходящих запросах к публичным или авторизованным целям.
Nstdata предоставляет прокси-шлюзы, которые могут использоваться клиентами Node HTTP. Библиотека клиента определяет, как шлюз подключается, как читаются учетные данные и используются ли повторные соединения. Существующее руководство по прокси для Axios охватывает специфические для Axios схемы; это руководство напрямую сравнивает их с текущим поведением Node fetch.
Node документирует fetch как глобальный объект, совместимый с браузером, в документации по глобальному fetch в Node.js. Текущие рекомендации по сетевым технологиям для предприятий Node также описывают поддержку прокси-среды по выбору в недавних выпусках, но конфигурация, специфичная для библиотек, остается наиболее универсальной для всех поддерживаемых сред выполнения.
Попробуйте Nstdata - Начните бесплатный тест сегодня
Предварительные Условия и Настройка Проекта
Практический пример прокси для веб-скрапинга на Node требует поддерживаемой среды выполнения Node, HTTP-клиента, авторизованной цели и учетных данных прокси. Примеры используют ES модули и избегают внедрения секретов.
mkdir node-proxy-demo
cd node-proxy-demo
npm init -ynpminstall axios undici
Настройте переменные среды в вашей оболочке или хранилище для секретов развертывания:
Подключите Axios и Fetch через Nstdata
Используйте управляемые прокси-сессии для наблюдаемого, авторизованного сбора данных Node.js.
Axios может передавать объект прокси с каждым запросом, что позволяет отделить учетные данные от целевого URL. Текущая конфигурация запросов Axios документирует proxy, auth, timeout и возможность отключить обработку прокси с помощью proxy: false, когда используются пользовательские агенты.
validateStatus: () => true позволяет приложению проверять каждый HTTP статус в одном месте, а не превращать некоторые ответы в исключения, похожие на транспортные. Это полезно только в том случае, если вы затем сами обеспечите принятие.
Страница с вызовом 200 не является принятой записью. Проверьте стабильное поле, селектор, схему или маркер содержания, который принадлежит авторизованному назначению. Руководство по веб-скрапингу JavaScript добавляет шаблоны парсинга, как только транспорт становится надежным.
Метод 2: Используйте прокси с Node fetch
Node fetch может направлять запрос через ProxyAgent от Undici, который предоставляется как dispatcher. Официальная документация по Undici ProxyAgent показывает URI агента, опцию dispatcher и явный жизненный цикл close().
Шаг 1: Безопасно создайте URL учетных данных
import{ProxyAgent}from"undici";const user =encodeURIComponent(process.env.PROXY_USER);const password =encodeURIComponent(process.env.PROXY_PASSWORD);const proxyUrl =`http://${user}:${password}@${process.env.PROXY_HOST}:${process.env.PROXY_PORT}`;const dispatcher =newProxyAgent(proxyUrl);
Кодирование компонентов учетных данных предотвращает изменение структуры URL прокси символами @, : или /. Держите URL в пределах процесса и вне ошибок.
Закрытие диспетчера освобождает пул сокетов, когда короткоживущая работа завершается. Процесс сервера может повторно использовать диспетчер для своей предполагаемой идентичности и закрывать его во время плавного завершения.
Поворот прокси по заданию, а не по строке кода
Поворот прокси в Node является решением оркестрации: выберите маршрут для одной независимой задачи, сохраните его для связанных запросов, а затем закройте его сетевые ресурсы.
Цикл ограничен и не повторяет отказ. Производственный пул должен хранить последовательные сбои, время до перерыва, недавнюю задержку и последний принятый временной штамп. Повторы требуют экспоненциального отката с добавлением случайности, и только идемпотентные запросы должны повторяться автоматически. Руководство по пакетному скрапингу объясняет, почему контрольные точки и учёт принятых данных имеют значение, когда набор URL-адресов растет.
Прокси-серверы Nstdata Residential Prime подходят для разрешенных задач Node, которые нуждаются в HTTP/HTTPS шлюзах плюс контроле вращающейся или фиксированной сессии. Продукт может централизовать выбор маршрута, в то время как Axios или Undici остаются ответственными за таймауты, жизненный цикл сокетов и семантическую валидацию. Текущие материалы продукта описывают протоколы HTTP, HTTPS и SOCKS5, а также варианты постоянства сессии. Выберите вращение для независимых URL-адресов и фиксированную сессию для пагинированных или беслогинных поездок, которые должны сохранять непрерывность; доступ к прокси никогда не отменяет политику цели.
Сессии Residential Prime прокси: Свяжите один идентификатор сессии провайдера с одной логической задачей Node и обновляйте его только на чистой границе.
Совместимость клиента: Используйте объект proxy Axios или dispatcher Undici, а не предполагайте, что каждый пакет Node одинаково читает переменные среды.
Измеренное принятие: Отслеживайте действительные записи, страницы с проблемами, сбои передачи и задержку отдельно, чтобы качество маршрута было наблюдаемым.
Таблица решений Axios против Fetch Proxy
Axios и fetch могут оба использовать аутентифицированный HTTP-прокси, но их конфигурация и настройки отклика различаются.
Решение
Axios
Node fetch + Undici
Присоединение прокси
Объект proxy запроса
Диспетчер ProxyAgent
Дефолт для не 2xx
Axios по умолчанию отклоняет
fetch разрешает; проверьте ok или статус
Таймаут
timeout Axios
AbortSignal.timeout()
Жизненный цикл сокета
Управляется Axios/агентами
Осознанно повторно используйте и закрывайте диспетчер
Учетные данные
Объект proxy.auth
Закодированный URI агента или задокументированная опция токена
Выберите Axios, если проект уже использует его перехватчики и модель ошибок. Выберите нативный fetch с Undici, когда уменьшение зависимости от обёрток и явное управление диспетчером имеют значение. Не смешивайте встроенное поле прокси Axios с пользовательским туннелирующим агентом, если клиент не настроен с proxy: false; двойная конфигурация вызывает путаницу в маршрутах.
Устранение ошибок прокси Node
Сбои прокси Node требуют отдельной диагностики транспортировки, аутентификации, таймаутов и содержания.
Симптом
Проверка
ECONNREFUSED
Хост прокси, порт, слушатель, брандмауэр
ETIMEDOUT или прерывание
Бюджет подключения/чтения, целевая задержка, здоровье прокси
HTTP 407
Учетные данные прокси или белый список; не повторяйте слепо
HTTP 403 или HTML с проблемами
Аутентификация и политика цели; остановитесь, а не вращайте агрессивно
Axios игнорирует агент
Убедитесь, что proxy: false, когда пользовательский агент владеет маршрутизацией
Процесс не завершается
Закройте диспетчеры Undici и другие открытые дескрипторы
Когда страницы требуют рендеринга в браузере, HTTP-клиент - это неправильная модель выполнения. Ознакомьтесь с извлечением контента из сайтов с тяжелым JavaScript и перейдите к авторизованному рабочему процессу браузера, а не создавайте содержимое DOM из неполного HTML.
Заключение
Надежная настройка прокси для веб-скрапинга на Node.js начинается с выбора правильной границы клиента: объекта прокси Axios или диспетчера Undici. Добавьте безопасную для секретов конфигурацию, таймауты, семантические проверки ответа, ограниченное вращение и очистку ресурсов перед увеличением пропускной способности. Nstdata может предоставить управляемые сессии, в то время как ваше приложение сохраняет ответственность за авторизацию и принятые данные.
Node fetch может использовать ProxyAgent Undici, переданный как диспетчер запроса. Поведение прокси среды варьируется в зависимости от версии Node и настроек выбора, поэтому явная конфигурация библиотеки более понятна в смешанных развертываниях.
В: Как я аутентифицирую прокси Axios?
Установите proxy.auth.username и proxy.auth.password в конфигурации запроса Axios. Читайте оба значения из хранилища секретов или переменных окружения и никогда не записывайте полученный объект конфигурации в логах.
В: Связан ли JavaScript Proxy с HTTP-прокси?
Нет, JavaScript Proxy перехватывает операции с объектами внутри среды выполнения языка. HTTP-прокси - это сетевой посредник, используемый Axios, fetch, браузером или другим клиентом.
Q: Должен ли я создавать новый ProxyAgent для каждого запроса?
Используйте один ProxyAgent для запросов, которые имеют стабильную идентичность, затем закройте его, когда эта работа или процесс завершится. Создайте нового агента, когда маршрут или идентичность сессии намеренно меняются.
Q: Почему Axios работает, а fetch не работает через тот же прокси?
Axios и fetch используют разные поверхности конфигурации прокси. Убедитесь, что Axios использует proxy, fetch использует dispatcher от Undici, учетные данные закодированы правильно, а оба клиента применяют одинаковые тайм-ауты и проверки приема.
Q: Может ли прокси сканировать каждый веб-сайт?
Нет, прокси только изменяет сетевой маршрут. Это не предоставляет доступ, не выполняет JavaScript в только HTTP-клиенте, не решает CAPTCHAs и не заменяет соблюдение условий сайта и применимого законодательства.
Lena Zhou
Sep. 15th 2026
110M+ реальных IP с 99.9% успешных доступов
Средний отклик ~0.5с для задач высокой конкуренции
Всего от $0.1/GB
Мгновенный доступ к премиальным residential, datacenter, IPv6 и ISP пулам.