JS 版本 get_sign 函数的 key 参数是什么?APP KEY?
1c7 opened this issue · 7 comments
fython 你好~
我想做的事情是根据视频地址拿到 interface 地址。
根据
http://www.bilibili.com/video/av4371609/
获取到
http://interface.bilibili.com/playurl?cid=7076936&player=1&ts=1460728450&sign=705c096777c7ed41d5cee161913c35be
思路是先手抓一个,然后去用程序跑,看看地址是否一样。
碰到的问题是根据文档里的代码,没成功,想问问咋回事。如题。
手抓的:
http://www.bilibili.com/video/av4371609/
cid 7076936
http://interface.bilibili.com/playurl?cid=7076936&player=1&ts=1460728450&sign=705c096777c7ed41d5cee161913c35be
### 程序
<script type="text/javascript" src="http://static.hdslb.com/js/md5.js"></script>
<script type="text/javascript">
function get_sign(params, key)
{
var s_keys = [];
for (var i in params)
{
s_keys.push(i);
}
s_keys.sort();
var data = "";
for (var i = 0; i < s_keys.length; i++)
{
// encodeURIComponent 返回的转义数字必须为大写( 如 %2F )
data+=(data ? "&" : "")+s_keys[i]+"="+encodeURIComponent(params[s_keys[i]]);
}
return {
"sign":hex_md5(data+key),
"params":data
};
}
p = {
"cid" : "7076936",
'player' : '1',
'ts': '1460728588'
};
/*
# cid = 7076936
# player = 1
# ts = 1460728588
*/
a = get_sign(p, '85eb6835b0a1034e');
console.log(a);
</script>
然后 console(a) 的结果:
// Object { sign: "3a85837f235a317906016f1f6b86dd37", params: "cid=7076936&player=1&ts=1460728588" }
结果应该是 705c096777c7ed41d5cee161913c35be // 因为相同时间戳的那个手抓结果就是这个
但是程序是 3a85837f235a317906016f1f6b86dd37
APPKEY 85eb6835b0a1034e 来源网上的一篇博客。
非常感谢~
- 用我的APPKEY前和我说一声啊。
- 我的APPKEY被你们这群货玩死了。现在我都没key可用了。
- 签名看Biligrab的代码。再简单没有了。
另:他的开放平台和SWF的签名流程不一样。swf我就懒得拆了。
@cnbeining 谢谢回复。
另外, APPKEY 我是在这里: https://www.blackglory.me/bilibili-video-source-get/ 找到的,不知道是你的,以为既然公开了拿来测几次没问题的。非常抱歉。
@cnbeining 还想问一下是不是B站官方开过API一阵子,后来关了。你是哪里申请的APPKEY?
是的。
我当时存了一个KEY。。
@cnbeining 好。谢谢。真不好意思啊。
心疼,还好我的没有提交上 Github。
高考完不知道能不能抽出时间重开我的客户端轮子……