Fazer o Undici ler variáveis de proxy do ambiente
Use EnvHttpProxyAgent de propósito e diferencie a prioridade das minúsculas, as exclusões e URLs capturadas das opções no_proxy dinâmicas.
Use EnvHttpProxyAgent quando o ambiente do processo deve escolher a rota. Use um ProxyAgent explícito do Undici quando o endpoint deve fazer parte da configuração do cliente. Passe-o à requisição real: apenas criar o agente não muda nenhuma chamada fetch.
import { EnvHttpProxyAgent, fetch } from 'undici';
const dispatcher = new EnvHttpProxyAgent();
try {
const response = await fetch("https://example.com/", {
dispatcher,
signal: AbortSignal.timeout(15000),
});
console.log(response.status);
await response.arrayBuffer();
} finally {
await dispatcher.close();
}Salve o código como proxy-check.mjs em um ambiente de módulos ES com Undici disponível. A inicialização POSIX abaixo fornece as duas rotas de proxy e uma lista de exclusões vazia:
http_proxy=http://203.0.113.10:8080 \
https_proxy=http://203.0.113.10:8080 \
no_proxy= \
node proxy-check.mjsSubstitua o endpoint de documentação pelo seu proxy HTTP ou um candidato da lista de proxies HTTP. As atribuições valem para essa execução; outros shells usam sintaxe diferente.
No Undici 8.12.3, as variáveis minúsculas http_proxy, https_proxy e no_proxy têm prioridade sobre as equivalentes maiúsculas quando ambas existem. Destinos HTTP e HTTPS escolhem suas próprias configurações. Uma configuração só HTTP também fornece fallback para HTTPS; uma só HTTPS não atende HTTP. Não suponha que a convenção ALL_PROXY de outro cliente se aplique.
| Entrada | Quando esta versão a utiliza |
|---|---|
| Ambiente de proxy HTTP/HTTPS | Escolhido na construção do agente. Crie um dispatcher novo depois de alterar esses endpoints. |
no_proxy do ambiente | É verificado novamente no despacho das requisições. |
noProxy do construtor | Fixa explicitamente a política de exclusões, sem seguir alterações posteriores do ambiente. |
As exclusões podem corresponder a hosts e portas opcionais; um asterisco sozinho faz todas as requisições contornarem o proxy. Examine a correspondência do destino se o proxy não receber tráfego.
No Windows, o processo principal não distingue maiúsculas nos nomes do ambiente, então HTTP_PROXY e http_proxy não são valores independentes. As cópias de ambiente de Node Worker têm uma distinção de maiúsculas documentada. Considere isso antes de definir as duas grafias para testar a prioridade. O exemplo fecha o dispatcher após o trabalho; mantenha-o enquanto requisições repetidas precisarem da mesma política de endpoints capturada.