Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

136
Visualizações
Use la resolución de DNS personalizada para cualquier solicitud en NodeJS

Estoy buscando una manera de usar una resolución de DNS personalizada para una solicitud de nodejs usando node-fetch. Creo que hay una estrella para explicar aquí: resolución de IP de solicitud de anulación de nodo, pero no puedo hacer que funcione para ninguna solicitud. Mi objetivo es utilizar un solucionador de DNS alternativo, como cloudflare (1.1.1.1) o el DNS público de Google (8.8.8.8) en lugar de la resolución de DNS predeterminada del sistema operativo/ISP.

 import http from "http"; import https from "https"; import fetch from "node-fetch"; const staticLookup = (ip: string, v?: number) => (hostname: string, _: null, cb: Function) => { cb(null, ip, v || 4); }; const staticDnsAgent = (scheme: "http" | "https", ip: string) => { const httpModule = scheme === "http" ? http : https; return new httpModule.Agent({ lookup: staticLookup(ip), rejectUnauthorized: false }); }; // Both request are not working fetch(`https://api.github.com/search/issues?q=Hello%20World`, { agent: staticDnsAgent("https", "1.1.1.1") }) fetch(`http://jsonplaceholder.typicode.com/todos`, { agent: staticDnsAgent("http", "8.8.8.8") })

Estoy luchando un poco para encontrar una manera de hacer que este ejemplo funcione, estoy bastante seguro de que tengo que usar el módulo DNS de nodejs y configurar un servidor personalizado.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Gracias a Martheen que respondió en mi primera publicación, pude lograr el resultado aquí:

 import http from "http"; import https from "https"; import dns from "dns/promises"; import fetch from "node-fetch"; // Cloud flare dns dns.setServers([ "1.1.1.1", "[2606:4700:4700::1111]", ]); const staticLookup = () => async (hostname: string, _: null, cb: Function) => { const ips = await dns.resolve(hostname); if (ips.length === 0) { throw new Error(`Unable to resolve ${hostname}`); } cb(null, ips[0], 4); }; const staticDnsAgent = (scheme: "http" | "https") => { const httpModule = scheme === "http" ? http : https; return new httpModule.Agent({ lookup: staticLookup() }); }; fetch(`https://api.github.com/search/issues?q=Hello%20World`, { agent: staticDnsAgent("https") }) fetch(`http://jsonplaceholder.typicode.com/todos`, { agent: staticDnsAgent("http") })
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda