es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Recuperar Página desde URL de Spotify en Node.js ahora resulta en un error 406 No Aceptable.

Usando el siguiente código en una función asíncrona y con la biblioteca got:

var { body: html, url } = await got('https://open.spotify.com/track/1iFwvtvFNbQVcIXKBiBRqD');

Anteriormente pude obtener una página de canción del sitio web de Spotify para extraer su metadatos con metascraper. Sin embargo, dejó de funcionar recientemente, ahora mostrando un error:

HTTPError: Código de respuesta 406 (No aceptable)
en Request.<anónimo> (/app/node_modules/got/dist/source/as-promise/index.js:117:42)
en processTicksAndRejections (node:internal/process/task_queues:96:5) {
  code: 'ERR_NON_2XX_3XX_RESPONSE',
  timings: {
    start: 1641245342392,
    socket: 1641245342394,
    lookup: 1641245342396,
    connect: 1641245342398,
    secureConnect: 1641245342407,
    upload: 1641245342408,
    response: 1641245342538,
    end: 1641245342542,
    error: undefined,
    abort: undefined,
    phases: {
      wait: 2,
      dns: 2,
      tcp: 2,
      tls: 9,
      request: 1,
      firstByte: 130,
      download: 4,
      total: 150
    }
  }
}

Dado que no soy consciente de ningún cambio que haya realizado que haya podido afectar esto, ¿qué cambió y cómo lo soluciono? Parece que el código todavía funciona para otras URL que he probado, ¿tal vez Spotify mismo cambió algo? Gracias.</anónimo>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el error es el resultado de un código de respuesta 406 del sitio web de Spotify, lo cual indica que el servidor no puede producir una respuesta que coincida con la lista de valores aceptables definidos en las cabeceras de la solicitud. Esto podría indicar que Spotify ha añadido nuevas restricciones o modificado su contenido o estructura, lo cual podría resultar en el fallo del análisis de metadatos con metascraper utilizando el mismo código.

    Para solucionar este problema, podrías intentar modificar las cabeceras de la solicitud para que coincidan con los valores aceptables definidos por Spotify. Por ejemplo, podrías incluir la cabecera User-Agent para imitar una solicitud de navegador al sitio web. Aquí tienes un ejemplo:

    const got = require('got');
    
    const url = 'https://open.spotify.com/track/1iFwvtvFNbQVcIXKBiBRqD';
    
    const response = await got(url, {
      headers: {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
      }
    });
    
    const html = response.body;
    

    Esto agregará una cabecera User-Agent a la solicitud, la cual especifica el tipo de dispositivo y navegador que realiza la solicitud. Esto debería hacer que la solicitud parezca más como una solicitud regular de navegador y potencialmente evitar cualquier restricción nueva añadida por Spotify.

    Alternativamente, podrías intentar utilizar una biblioteca de análisis diferente que sea más compatible con los cambios realizados por Spotify.

Comments are closed.