SoundCloud API - "same song" 限制? / 403问题?

SoundCloud API - "same song" limitations? / 403 issue?

我刚刚更新了我的一个旧网页(最初创建于 2014 年),它使用 SoundCloud API 直接从 SoundCloud 播放一些背景音乐(参见 https://www.wothke.ch/ablaze/#/wright-and-bastard/venera)。我有一个 SoundCloud client_id 用于相应的 API - 我的实现在过去运行良好:默认情况下页面总是使用相同的歌曲 - 尽管用户可以将相应的永久链接添加到 URL 播放特定的 SoundCloud 歌曲或播放列表。

虽然 migrating/testing 我的旧页面转到 WEBGL2 和 ECMAScript 2015,但我显然反复重新加载了我的相应页面,我注意到以下令人讨厌的效果:

一开始页面播放默认歌曲没有任何问题,但在重新加载一些页面后(我猜少于 10 次)SoundCloud 似乎突然切换到“403 forbidden”错误。如果随后专门选择了不同的歌曲通过 URL,然后那首歌起初再次播放正常,但在重新加载该歌曲的一些响应后,然后也突然切换到“403 forbidden”。似乎即使在一天后 "blocked" 歌曲仍保持 "forbidden" 状态。

看起来 SoundCloud "now" 可能正在对一个客户端 (client_id) 在给定时间间隔内加载同一首歌曲的最大次数使用某种限制。 (对于为所有访问者使用相同技术 client_id 的页面,相应的限制可能会非常严重。)

有什么想法(有没有这样的限制,具体是什么)?

似乎是 f%&!# 缓存问题。SoundCloud 重定向了 将 URLs(例如 https://api.soundcloud.com/tracks/511301766/stream?client_id=[my app ID])流式传输到实际托管文件的某个 Amazon 服务器(例如 https://cf-media.sndcdn.com/AT5qm8ZFmiM0.128.mp3?Policy=[some id]&Signature=[some sig]&Key-Pair-Id=[some id])。

相应的 "Amazon" URL 似乎以 "Signature" 参数的形式带有某种到期日期。出于某种原因,我的基于 CURL 的 PHP 脚本不断获取转发的旧过期版本 URL(即第一个 "stream" 响应必须已被缓存,因此每个新的URL 会工作一段时间,直到它过期..)。我通过向 "stream URLs".

动态添加虚拟时间戳参数来解决此问题