Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

368
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!