专利解释了一般过程,这是我发现的。
这是一项较新的专利 http://www.freepatentsonline.com/20180181849.pdf
使用 Spotify 代码生成器时,网站会发出请求https://scannables.scdn.co/uri/plain/[格式]/[十六进制背景颜色]/[文本中代码颜色]/[大小]/[spotify-URI] https://scannables.scdn.co/uri/plain/%5Bformat%5D/%5Bbackground-color-in-hex%5D/%5Bcode-color-in-text%5D/%5Bsize%5D/%5Bspotify-URI%5D.
使用 Burp Suite,当通过 Spotify 扫描代码时,应用程序会向 Spotify 的 API 发送请求:https://spclient.wg.spotify.com/scannable-id/id/[代码]?format=json https://spclient.wg.spotify.com/scannable-id/id/%5BCODE%5D?format=json其中 [CODE] 是您要查找的媒体参考。此请求可以通过 python 发出,但只能使用通过应用程序生成的 [TOKEN],因为这是获取正确范围的唯一方法。应用令牌将在大约半小时后过期。
import requests
head={
"X-Client-Id": "58bd3c95768941ea9eb4350aaa033eb3",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"App-Platform": "iOS",
"Accept": "*/*",
"User-Agent": "Spotify/8.5.68 iOS/13.4 (iPhone9,3)",
"Accept-Language": "en",
"Authorization": "Bearer [TOKEN]",
"Spotify-App-Version": "8.5.68"}
response = requests.get('https://spclient.wg.spotify.com:443/scannable-id/id/26560102031?format=json', headers=head)
print(response)
print(response.json())
返回:
<Response [200]>
{'target': 'spotify:playlist:37i9dQZF1DXcBWIGoYBM5M'}
因此 26560102031 是您的播放列表的媒体参考。
该专利指出,该代码首先被检测,然后可能使用格雷表转换为 63 位。例如,361354354471425226605 被编码为 010 101 001 010 111 110 010 111 110 110 100 001 110 011 111 011 011 101 101 000 111。
然而,发送到 API 的代码是 6875667268,我不确定媒体引用是如何生成的,但这是查找表中使用的数字。
该参考包含整数 0-9 与 0-7 的灰色表相比,这意味着已经使用了使用普通二进制的算法。该专利谈到使用卷积码,然后使用维特比算法进行纠错,因此这可能是其输出。如果没有我相信的状态,就不可能重现某些东西。不过,如果您能更好地解释该专利,我会很感兴趣。
该媒体编号为 10 位数字,但其他媒体编号为 11 或 12 位。
以下是原始距离的另外两个示例,即灰表二进制和媒体参考:
1.
022673352171662032460
000 011 011 101 100 010 010 111 011 001 100 001 101 101 011 000 010 011 110 101 000
67775490487
2.
574146602473467556050
111 100 110 001 110 101 101 000 011 110 100 010 110 101 100 111 111 101 000 111 000
57639171874
edit:
一些额外的信息:
网上有一些帖子描述了如何将任何文本(例如,spotify:playlist:HelloWorld)编码为代码,但这不再有效。
我还通过代理发现,您可以使用域来获取代码上方曲目的专辑封面。这表明 Spotify 的 API 和此可扫描 URL 的集成比以前想象的更紧密。因为它不仅存储 URI 及其代码,还可以验证 URI 并返回更新的专辑封面。
https://scannables.scdn.co/uri/800/spotify%3Atrack%3A0J8oh5MAMyUPRIgflnjwmB https://scannables.scdn.co/uri/800/spotify%3Atrack%3A0J8oh5MAMyUPRIgflnjwmB