B 站点 bv 与 av 互转

2020-03-24 09:29:02 +08:00
 justin2018

来源:

1.https://www.zhihu.com/question/381784377/answer/1099438784

2.TG:PinTG

/*
方案一:
来自 https://www.zhihu.com/question/381784377/answer/1099438784
*/
var table = "fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF",
  tr = new Object();
for (var i = 0; i < 58; i++) {
  tr[table[i]] = i;
}
var s = [11, 10, 3, 8, 4, 6],
  xor = 177451812,
  add = 8728348608;

function dec(x) {
  var r = 0;
  for (var i = 0; i < 6; i++) {
    r += tr[x[s[i]]] * 58 ** i;
  }
  return (r - add) ^ xor;
}

function enc(x) {
  x = (x ^ xor) + add;
  r = "BV1  4 1 7  ".split("");
  for (var i = 0; i < 6; i++) {
    r[s[i]] = table[Math.floor(x / 58 ** i) % 58];
  }
  return r.join("");
}

console.log(dec("BV17x411w7KC"));
console.log(enc(170001));

/*
方案二
*/
function hget(type, id) {
  $http.get({
    url: `http://api.bilibili.com/x/web-interface/archive/stat?${type}id=${id}`,
    handler: resp => {
      var data = resp.data.data;
      console.log({
        bvid: data.bvid,
        aid: data.aid
      });
    }
  });
}

hget("a", "170001");
hget("bv", "BV17x411w7KC");

13103 次点击
所在节点    分享发现
35 条回复
littleylv
2020-03-24 09:50:14 +08:00
牛逼,特别是那个 api 的
iMusic
2020-03-24 10:27:50 +08:00
爱了
Felldeadbird
2020-03-24 10:34:28 +08:00
我还以为 BV 是随机生成出来的。没想到还可以转回去 AV 号。B 站这设计神了。
pcbl
2020-03-24 10:36:31 +08:00
cv 准备中。。
amorphobia
2020-03-24 10:37:26 +08:00
方案一牛逼
x2ex
2020-03-24 10:41:33 +08:00
@pcbl #4 哈哈哈
wangxiaoaer
2020-03-24 10:43:50 +08:00
@Felldeadbird #3 搜一下 hashid
yukiloh
2020-03-24 11:00:44 +08:00
笑死了,原来不是随机 id…
learnshare
2020-03-24 11:03:41 +08:00
这就尴尬了,所谓的保护数据只是掩饰,实际上还是原来的前缀不太雅观
locoz
2020-03-24 11:08:36 +08:00
搞了半天是迷幻操作...让我想起了弹幕那个用户 id 的 crc32b😂
Kiriya
2020-03-24 11:10:50 +08:00
感觉 V 站和 B 站用户重合度很高啊
yty2012g
2020-03-24 11:33:46 +08:00
方案 1 的思路绝了!!
NotFamous
2020-03-24 11:46:17 +08:00
我就想知道方案 1 是怎么搞出来的!! 好厉害!!!
yazoox
2020-03-24 12:35:27 +08:00
你们真厉害...... 这么快就......
redeemer1001
2020-03-24 12:35:32 +08:00
方法 1 真的牛逼……
vone
2020-03-24 13:54:40 +08:00
我还以为方案一是 B 站员工写的,没想到是推理出的算法。
loveToMy1
2020-03-24 16:36:43 +08:00
真是优秀
zhuangjia
2020-03-24 17:19:12 +08:00
方案一真是厉害
ParadiseDS
2020-03-24 19:37:46 +08:00
方案一绝了,数学好真的为所欲为
1etterSong
2020-03-24 20:30:56 +08:00
@pcbl cv 早就有了。专栏。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/655569

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX