widgets javascript html5 audio soundcloud

javascript - widgets - soundcloud widget



¿Cómo ha ocultado soundcloud la URL de transmisión de audio? (3)

Si ingresas a SoundCloud.com y abres tu depurador (Chrome es lo que estoy usando). Mire la pestaña "Red" y verá una secuencia de comandos que llama audio? Anonymous_id #########.

Esto está estructurado como una llamada REST, lo que significa que pasan una identificación a un servicio en su back-end, y que devuelve la salida de audio de forma anónima.

Intento ocultar la URL de mis transmisiones de audio para mi reproductor HTML5 y realmente estaba luchando por encontrar una manera de hacerlo y luego me di cuenta de que Soundcloud debía ocultar las URL de sus transmisiones. Así que fui a SoundCloud, abrí la consola y reproduje una pista, pero no pude ver ninguna forma obvia de que la URL esté oculta. Después de esto, eché un vistazo al árbol DOM para ver si había algún tipo de información de audio pero ¡no encontré nada! Ni siquiera hay una identificación para el reproductor / audio, así que estoy muy confundido sobre cómo lo ha hecho soundcloud.

Ahora he hecho lo mejor que puedo hasta ahora con la ocultación de la URL de audio. He puesto una identificación en el DOM para la pista, obtuve esa identificación cuando se hace clic en el botón de reproducción y recupero la URL para esa identificación de la base de datos. El problema obvio es que cualquiera que esté dispuesto puede ir a la consola y obtener la URL de los eventos de la red.

No estoy tratando de romper la seguridad de soundcloud para descargar pistas que no debería. Solo tengo curiosidad sobre cómo han ocultado la URL. Ahora también tengo curiosidad sobre cómo se distingue cada pista ya que no hay nada en el DOM que los distinga (no es lo que encontré en mi breve reseña de todos modos).

Entonces, en resumen, ¿alguien tiene alguna idea sobre cómo Soundcloud ha logrado esto o cómo se puede lograr esto?


Soundcloud es más o menos un sitio JS puro.

Como dijiste, no hay ID de la canción cargada con el HTML. La forma en que se reconocen las canciones es por la URL de la página. El se hace a través de. esta url (ejemplo):

https://api.sndcdn.com/resolve?url=https%3A//soundcloud.com/hoodinternet/joywave-tongues-hood-internet-remix&_status_code_map%5B302%5D=200&_status_format=json&client_id=YOUR_CLIENT_ID

Esto devuelve algo como esto:

{"status":"302 - Found","location":"https://api.soundcloud.com/tracks/100270342?client_id=YOUR_CLIENT_ID"}

A continuación, carga la URL de ubicación, desde el JSON anterior. Esto devuelve un montón de información sobre la pista, que incluye:

stream_url: "https://api.soundcloud.com/tracks/100270342/stream"

Luego carga esta URL:

https://api.sndcdn.com/i1/tracks/100270342/streams?client_id=YOUR_CLIENT_IT

Que devuelve una respuesta como esta:

{"http_mp3_128_url":"https://ec-media.soundcloud.com/2gNVBYiZ06bU.128.mp3?ff61182e3c2ecefa438cd021sdf02d0e385713f0c1faf3b0339595664fe070de810d30a8e3a1186eda958909e9ed97799adfeceabc135efac83aee4271217a108450591db3b88/u0026AWSAccessKeyId=AKIAsdfJ4IAZE5EOIdsf7PA7VQ/u0026Expires=1374883403/u0026Signature=%2B1%2B7dfdfLN4NWP3C3bNF3gizSEVIU%3D"}

Así es como ocultan las URL de su secuencia. La única parte no obvia es que encuentran la identificación de la canción, al presionar una API con la URL como parámetro. Lo mismo se puede hacer con las URL de descarga en las pistas que lo admiten.