Un proxy de Node.js para scraping saliente es diferente al objeto Proxy de JavaScript y de un servidor proxy inverso.
Axios acepta un proxy HTTP a través de su configuración de solicitud proxy; usa un tiempo de espera explícito y valida el contenido devuelto.
El fetch() integrado de Node está potenciado por Undici, y el enrutamiento de proxy por solicitud puede usar un ProxyAgent de Undici como el dispatcher.
Mantén un dispatcher o agente para una identidad pegajosa, ciérralo cuando termine el trabajo, y rota solo en límites de tareas independientes.
Un proxy cambia la ruta de la red; no otorga permisos, no resuelve CAPTCHAs, ni corrige un scraper inválido.
¿Qué "Proxy de Node.js" Quieres Decir?
Para el scraping web, un proxy de Node.js es un intermediario de red saliente utilizado por un cliente HTTP como Axios o fetch. No es el objeto de metaprogramación Proxy descrito por MDN, y no es un proxy inverso que acepta tráfico para tu aplicación. Este artículo se centra únicamente en solicitudes salientes a objetivos públicos o autorizados.
Nstdata expone gateways de proxy que pueden ser utilizados por clientes HTTP de Node. La biblioteca cliente determina cómo se adjunta el gateway, cómo se leen las credenciales y si las conexiones se reutilizan. La guía de proxy de Axios existente cubre patrones específicos de Axios; esta guía los compara directamente con el comportamiento actual de fetch en Node.
Node documenta fetch como un global compatible con el navegador en documentación global fetch de Node.js. La actual guía de red empresarial de Node también describe el soporte de proxy de entorno optativo en lanzamientos recientes, pero la configuración específica de la biblioteca sigue siendo la opción más portátil entre los entornos compatibles.
Un práctico ejemplo de proxy de scraping web de Node necesita un runtime de Node soportado, un cliente HTTP, un objetivo autorizado y credenciales de proxy. Los ejemplos usan módulos ES y evitan incrustar secretos.
mkdir node-proxy-demo
cd node-proxy-demo
npm init -ynpminstall axios undici
Configura las variables de entorno en tu shell o almacén de secretos de implementación:
Nunca imprimas la URL de credencial completada. En su lugar, registra un ID de ruta no secreto, etiqueta de nombre de host, latencia y estado de aceptación.
Conectar Axios y Fetch a través de Nstdata
Utiliza sesiones de proxy gestionadas para la recolección de datos observables y autorizados de Node.js.
Axios puede pasar un objeto proxy en cada solicitud, lo que mantiene las credenciales separadas de la URL de destino. La actual documentación de configuración de solicitud de Axios documenta proxy, auth, timeout, y la capacidad de desactivar el manejo de proxy con proxy: false al suministrar agentes personalizados.
validateStatus: () => true permite que la aplicación inspeccione cada estado HTTP en un solo lugar en lugar de convertir algunas respuestas en excepciones similares al transporte. Esto es útil solo si luego haces cumplir la aceptación tú mismo.
Una página de desafío 200 no es un registro aceptado. Prueba un campo, selector, esquema o marcador de contenido estable que pertenezca al destino autorizado. La guía de scraping web de JavaScript añade patrones de análisis una vez que el transporte es confiable.
Método 2: Usar un proxy con Node fetch
Node fetch puede dirigir una solicitud a través de un ProxyAgent de Undici suministrado como dispatcher. La documentación de Undici ProxyAgent muestra la URI del agente, la opción dispatcher y el ciclo de vida explícito de close().
Paso 1: Construir la URL de credenciales de manera segura
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);
Codificar los componentes de las credenciales evita que @, :, o / cambien la estructura de la URL del proxy. Mantén la URL restringida al proceso y fuera de errores.
Paso 2: Obtener, validar y cerrar
try{const response =awaitfetch("https://example.com/",{ dispatcher,signal:AbortSignal.timeout(20_000),headers:{"user-agent":"authorized-monitor/1.0"},});const html =await response.text();if(response.status!==200||!html.includes("Example Domain")){thrownewError(`Respuesta no aceptada: ${response.status}`);}console.log({status: response.status,bytes: html.length});}finally{await dispatcher.close();}
Cerrar el despachador libera los sockets agrupados cuando un trabajo de corta duración termina. Un proceso de servidor puede reutilizar un despachador para su identidad prevista y cerrarlo durante un apagado ordenado.
Rotar Proxies por Trabajo, No por Línea de Código
La rotación de proxy de Node es una decisión de orquestación: elige una ruta para un trabajo independiente, mantenla para solicitudes relacionadas, y luego cierra sus recursos de red.
El bucle está limitado y no vuelve a intentar una denegación. Un grupo de producción debe almacenar fallos consecutivos, tiempo de enfriamiento hasta, latencia reciente y la marca de tiempo del último aceptado. Los reintentos necesitan retroceso exponencial más jitter, y solo se deben reproducir automáticamente las solicitudes idempotentes. La guía de raspado por lotes explica por qué los puntos de control y la contabilidad del output aceptado son importantes cuando el conjunto de URL crece.
Los Proxies Residenciales Prime de Nstdata son adecuados para trabajos de Node autorizados que necesitan puertas de enlace HTTP/HTTPS más control de sesión rotativa o estática. El producto puede centralizar la selección de rutas mientras Axios o Undici se encargan de los tiempos de espera, el ciclo de vida de los sockets y la validación semántica. Los materiales actuales del producto describen los protocolos HTTP, HTTPS y SOCKS5, así como las opciones de persistencia de sesión. Elija rotación para URL independientes y una sesión estática para viajes paginados o sin inicio de sesión que deben mantener la continuidad; el acceso a proxies nunca anula la política del objetivo.
Compatibilidad del cliente: Use el objeto proxy de Axios o el dispatcher de Undici en lugar de asumir que cada paquete de Node lee variables de entorno de manera idéntica.
Aceptación medida: Realice un seguimiento de registros válidos, páginas desafiantes, fallos de transporte y latencia por separado para que la calidad de la ruta sea observable.
Tabla de Decisiones: Axios vs Fetch Proxy
Axios y fetch pueden usar ambos un proxy HTTP autenticado, pero sus superficies de configuración y valores predeterminados de respuesta difieren.
Decisión
Axios
Node fetch + Undici
Adjunción de Proxy
Objeto proxy de solicitud
ProxyAgent dispatcher
Predeterminado no-2xx
Axios rechaza por defecto
fetch resuelve; inspeccione ok o estado
Tiempo de espera
Axios timeout
AbortSignal.timeout()
Ciclo de vida del socket
Administrado por Axios/agentes
Reutilizar y cerrar el dispatcher deliberadamente
Credenciales
Objeto proxy.auth
URI de agente codificado o opción de token documentada
Elija Axios si el proyecto ya utiliza sus interceptores y modelo de error. Elija fetch nativo con Undici cuando la reducción de dependencias de envoltura y el control explícito del dispatcher sean importantes. No mezcle el campo de proxy integrado de Axios con un agente de tunelización personalizado, a menos que el cliente esté configurado con proxy: false; la configuración doble causa rutas confusas.
Solución de Problemas de Errores de Proxy en Node
Los fallos de proxy en Node necesitan diagnósticos separados de transporte, autenticación, tiempo de espera y contenido.
Síntoma
Verificación
ECONNREFUSED
Host proxy, puerto, oyente, cortafuegos
ETIMEDOUT o abortar
Presupuesto de conexión/lectura, latencia objetivo, salud del proxy
HTTP 407
Credenciales del proxy o lista de permitidos; no vuelva a intentar ciegamente
HTTP 403 o HTML de desafío
Autorización y política del objetivo; detenga en lugar de rotar agresivamente
Axios ignora el agente
Asegúrese de proxy: false cuando un agente personalizado maneje el enrutamiento
El proceso no sale
Cierre dispatchers de Undici y otros manejadores abiertos
Cuando las páginas requieren renderizado en un navegador, un cliente HTTP es el modelo de ejecución equivocado. Revise extraer contenido de sitios web pesados en JavaScript y pase a un flujo de trabajo de navegador autorizado en lugar de fabricar contenido DOM a partir de HTML incompleto.
Conclusión
Una configuración confiable de proxy de raspado web de Node.js comienza eligiendo el límite del cliente correcto: un objeto proxy de Axios o un dispatcher de Undici. Agregue configuración segura, tiempos de espera, verificaciones de respuesta semántica, rotación acotada y limpieza de recursos antes de aumentar el rendimiento. Nstdata puede proporcionar sesiones gestionadas, mientras que su aplicación mantiene la responsabilidad de la autorización y los datos aceptados.
Node fetch puede usar un ProxyAgent de Undici pasado como el dispatcher de solicitud. El comportamiento del proxy de entorno varía según la versión de Node y la configuración de opción, por lo que una configuración de biblioteca explícita es más clara en implementaciones mixtas.
P: ¿Cómo autentico un proxy de Axios?
Establezca proxy.auth.username y proxy.auth.password en la configuración de solicitud de Axios. Lea ambos valores de un almacén de secretos o variables de entorno y nunca registre el objeto de configuración resultante.
P: ¿Está relacionado el Proxy de JavaScript con los proxies HTTP?
No, el Proxy de JavaScript intercepta operaciones de objetos dentro del tiempo de ejecución del lenguaje. Un proxy HTTP es un intermediario de red utilizado por Axios, fetch, un navegador u otro cliente.
Q: ¿Debería crear un nuevo ProxyAgent para cada solicitud?
Reutiliza un ProxyAgent para solicitudes que compartan una identidad estable, luego ciérralo cuando ese trabajo o proceso termine. Crea un nuevo agente cuando la ruta o la identidad de la sesión cambie intencionadamente.
Q: ¿Por qué Axios funciona pero fetch falla a través del mismo proxy?
Axios y fetch utilizan diferentes superficies de configuración de proxy. Confirma que Axios usa proxy, fetch usa un dispatcher de Undici, las credenciales están codificadas correctamente y ambos clientes aplican el mismo tiempo de espera y verificaciones de aceptación.
Q: ¿Puede un proxy raspar cualquier sitio web?
No, un proxy solo cambia la ruta de red. No otorga acceso, no ejecuta JavaScript en un cliente solo HTTP, no resuelve CAPTCHAs, ni reemplaza el cumplimiento de los términos del sitio y la ley aplicable.
Lena Zhou
Sep. 15th 2026
110M+ IP reales con 99.9% de acceso exitoso
Respuesta media ultrarrapida ~0.5s para tareas de alta concurrencia
Desde solo $0.1/GB
Acceso inmediato a pools premium de proxies residenciales, datacenter, IPv6 e ISP.