Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

429
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda