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

369
Vistas
La misma solicitud a la API externa funciona en go, postman, curl, pero no funciona en node.js

Tengo un problema extraño al realizar una solicitud a la API externa. Básicamente, obtuve una respuesta de error 403 para la solicitud HTTP, pero... solo cuando la llamé desde el entorno del nodo. Probé con curl a través de la terminal y está bien. También probé desde Postman y native go con el paquete net/http y todo está bien, obtuve 200 respuestas. Pero no importa qué herramienta use en node.js (request, axios, uniest, got) no puedo hacerlo. Me encantaría compartir la solicitud completa contigo, pero lamentablemente no puedo :(

Todo lo que puedo mostrarle son algunos detalles de la respuesta, cuando lo llamo desde el entorno node.js.

Estos son encabezados enviados por el servidor cuando obtuve 403 :

 headers: { server: 'AkamaiNetStorage', 'content-length': '228', 'content-type': 'application/json', 'x-edge-error': 'halt', 'cache-control': 'max-age=122', date: 'Thu, 21 Oct 2021 16:17:41 GMT', connection: 'close' },

Y la parte de los datos de respuesta se ve así:

 data: { edge_error: 'halt', ref_id: '18.9d6656b8.1634833061.4b9f14b', }

Soy consciente de que la pregunta es extraña y probablemente no puedas ayudarme con no tantos detalles, pero lo intentaré de todos modos. Entonces, si alguien tiene idea de lo que podría ayudar, siéntase libre de proponer una respuesta.

Saludos ;)

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Esto probablemente se deba a la huella digital TLS. Akamai puede detectar que está utilizando Node.JS en función de la información recopilada durante el protocolo de enlace TLS (conjuntos de cifrado, etc.) cuando envía una solicitud. El sitio web debe haber establecido una regla a través de Akamai para bloquear Node.

Prueba algo como esto:

 const tls = require('tls'); const https = require('https'); const defaultCiphers = tls.DEFAULT_CIPHERS.split(':'); const shuffledCiphers = [ defaultCiphers[0], // Swap the 2nd & 3rd ciphers: defaultCiphers[2], defaultCiphers[1], ...defaultCiphers.slice(3) ].join(':'); request = require('https').get('https://google.com', { ciphers: shuffledCiphers }).on('response', (res) => { console.log(res.statusCode); }); // source: https://httptoolkit.tech/blog/tls-fingerprinting-node-js/

Puede encontrar más información sobre esto aquí: https://httptoolkit.tech/blog/tls-fingerprinting-node-js/

about 4 years ago · Juan Pablo Isaza 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