Usa unha IP de proxy con Undici de Node
Asocia un ProxyAgent de Undici a unha petición fetch e separa o seu conxunto de conexións do tráfico Node alleo.
Undici encamiña unha petición mediante un dispatcher. Crea un ProxyAgent para o proxy HTTP escollido e pásao á chamada fetch en vez de cambiar o dispatcher global de todo o proceso.
npm install [email protected]
import { fetch, ProxyAgent } from 'undici';
const dispatcher = new ProxyAgent('http://203.0.113.10:8080');
try {
const response = await fetch('https://example.com/', {
dispatcher,
signal: AbortSignal.timeout(15000),
});
console.log(response.status);
console.log(await response.text());
} finally {
await dispatcher.close();
}
Garda o programa como ficheiro .mjs ou usa un proxecto de módulos ES. Substitúe a IP de documentación por un proxy HTTP da lista de proxys HTTP. A importación usa deliberadamente o fetch de Undici, polo que a opción dispatcher pertence ao cliente do exemplo.
Comproba a compatibilidade de Node antes de culpar a IP
As versións de Node admitidas por Undici dependen da versión do paquete. O exemplo usa Undici 8.12.3, que require Node 22.19.0 ou posterior. Un erro de carga do módulo ou da versión do motor ocorre antes de chegar ao proxy. Comproba os requisitos do paquete instalado sen supoñer que calquera Node executa o Undici máis recente.
Un axente pode atender peticións repetidas
O programa breve pecha o dispatcher ao rematar. Se unha aplicación activa envía varias peticións polo mesmo punto, conserva o axente para esa carga de traballo e péchao cando remate. Crear e pechar un axente por cada URL impide reutilizar ben as conexións.
Un dispatcher global só é axeitado se buscas o cambio máis amplo. Pasalo explicitamente facilita probar unha IP sen alterar as peticións de saída doutro compoñente.
Mira a resposta e a fase do fallo
Fetch non trata todo estado de erro HTTP como unha promesa rexeitada. Un 403 ou 429 pode ser unha resposta real do sitio transportada polo proxy. Un erro de conexión ou de túnel pode rexeitar a petición antes de existir un obxecto resposta. Le o estado separado dos erros lanzados pola chamada.
Se cómpre autenticación, ProxyAgent de Undici ofrece opcións no construtor. Non engadas unha cabeceira de autorización proxy ás cabeceiras da petición ao sitio; o axente xestiona outro salto da conexión.