开启辅助访问
 找回密码
 立即注册

如何看待 2020 年 3 月 23 日哔哩哔哩将稿件的「av 号」变更 ...

倚芸 回答数5 浏览数666
今天 Bilibili 把以前 av + 数字的稿件地址格式更换为 BV + 字母数字的格式 ,类似 Youtube 的稿件编码方式:
尊敬的各位用户:
一直以来,AV 号都是 B 站视频稿件的重要标识,在视频的传播和分享中起到了关键作用。
为了保护稿件信息安全,容纳更多投稿,维护 UP 主的权益,自 2020 年 3 月 23 日起,AV 号将全面升级为 BV 号。与纯数字的 AV 号不同,BV 号是一段由数字和大小写字母组成的字符串,经过算法自动生成。未来将统一使用 BV 号作为稿件标识。
同时,2020 年 3 月 23 日前生成 AV 号的相关功能保持不变。例如,已分享的稿件链接,AV号搜索,以及动态、评论、私信中的高亮跳转。
此外,用户在复制 BV 号或者包含 BV 号的链接后,打开 B 站 APP 的同时会自动跳转至该视频。
更多详细规则说明请见链接 FAQ:
【升级公告】AV号全面升级至BV号

BV 号将继续见证 UP 主们在这个舞台上创造无限的可能。陪伴大家的每一次灵感迸发,为每一台创意而干杯喝彩!
<hr/>经测试,通过 API 仍能获取原数字格式的 AId。
各位如何看待这次大改动?
使用道具 举报
| 来自黑龙江 用Deepseek满血版问问看
bluefire_81 | 来自北京
只说一句,优点没发现,缺点倒是有不少。


av

bv
用Deepseek满血版问问看
回复
使用道具 举报
小未 | 来自北京
table='fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF'
tr={}
for i in range(58):
        tr[table]=i
s=[11,10,3,8,4,6]
xor=177451812
add=8728348608

def dec(x):
        r=0
        for i in range(6):
                r+=tr[x[s]]*58**i
        return (r-add)^xor

def enc(x):
        x=(x^xor)+add
        r=list('BV1  4 1 7  ')
        for i in range(6):
                r[s]=table[x//58**i%58]
        return ''.join(r)

print(dec('BV17x411w7KC'))
print(dec('BV1Q541167Qg'))
print(dec('BV1mK4y1C7Bz'))
print(enc(170001))
print(enc(455017605))
print(enc(882584971))互相转换脚本,如果算法没猜错,可以保证在 av 号  时正确,同时应该在  时也是正确的。此代码以 WTFPL 开源。
UPD:之前的代码中,所有数位都被用到是乱凑的,实际上并不需要,目前只要低 6 位就足够了。(更大的 av 号需要 64 位整数存储,但是 b 站现在使用的应该还是 32 位整数,所以应该还要很久)

发现的方法:
首先从各种渠道的信息来看,应该是 base58 编码的。设 x 是一个钦定的 av 号,查询  这些 av 号对应的 bv 号,发现 bv 号的第 12、11、4、9、5 位分别会变化。所以猜测这些是 58 进制下的相应位。
但是直接 base58 是不行的,所以猜测异或了一个大数,并且 base58 的字符表可能打乱了。经过实验,bv 号最低位相同的数,av 号的奇偶性相同,这一定程度上印证了之前的猜想。
接下来找了一些 av 号 x,满足 x 和 x+1 对应 bv 号的第 11 位不同。设异或的数为 X,那么  (   表示异或)。
由于 av 号(除了最新的少量视频)最多只有 27 bits,所以可以设  。然后可以发现  只和  和  有关,那么可以枚举这两个值(一共  种情况)然后使用上面的式子检查,就能得到若干可能的  和  。
这里我得到的可能值如下:(左边是  ,右边是  )
22 90983642
22 90983643
50 43234084
50 43234085有奇有偶是因为异或 1 之后也能找到轮换表。而  则使得模 58 的余数刚好变成  减它。
我取了 b=43234084,然后处理最低位,可以得到一个字符表,即 fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF。
对于更高位,实际上还需要知道  ,这些值也可以 枚举 58 次得到,最后我得到的值是  。
这时我发现,每一位的字符表是相同的(实际上只对 b=43234084 是这样的),然后再微调一下参数(上面代码中的两个 magic number 就相当于这里的  ),最后处理了一下  的情况就得到了这份代码。
回复
使用道具 举报
TANGMINGXIANG | 来自北京
举个例子 av7→BV1xx411c9m9
从简单好记的数字变成了一大堆花里胡哨的数字+字符(区分大小写)
说是维护UP主权益,但也有可能是为了删视频更隐蔽,毕竟有删楼层的先例在
av170001这种烂梗可能又会重生一段时间吧,不霸占每个热评不罢休:(
无限循环祭这个节目也不知道会不会再办下去了
总而言之,这次改动还是挺令人惋惜的
回复
使用道具 举报
5962 | 来自北京
2020.3.29 13:34更新:
自从昨晚19:45一个和琪露诺(⑨)有关的视频占据了av99999999,这也意味着八位av号的结束。今天再来看看新视频的BV号转换为av号后的数字,会发现自从av号突破一亿后,编号方式将不再是顺延,而是随机从九位数里面选取(有点像QQ号注册时随机安排一串数,而不是顺延一样)。这意味着,从九位数开始,av号代表“顺序”的传统彻底不再。
同时,在地址栏中输入视频对应的九位av号,仍然可以跳转到同一个视频,而并没有显示视频不见。这意味着,实际上av号仍然在沿用,换汤不换药罢了。
所以,我猜在此之前出现的突然跳进九位数av号,其实更像是在试水。
注:之所以我认为是在九位数里面选取,是因为我翻了好几个最新视频(超过10个),里面出现了8亿多、9亿多的av号,却仍然没有出现十位数。
注2:据小道消息称,目前的新视频,大多数视频是随机选取的av/BV号,但仍有小部分视频仍然从一亿开始顺延。此消息存疑。
注3:目前很多av号是九位数的新视频,其百万位及十万位(即左数第3、4位)均为0,但并不是所有都这样,具体原因及机制尚未明了。
-
2020.3.24 14:02更新:
既然规律出来了,我又测试了一下今天上午11点才投稿的视频的BV号。


为避免广告嫌疑,末两位已打码

结果发现转化成av号以后,仍然是目前的9800多万号,并没有像传言中的做到“完全随机”。坐等什么时候出现BV1y7411Q743,那会我仍然要去弹幕和评论区打卡。


-
19:40更新:
感谢评论区,真相出来了
mcfx:如何看待2020年3月23日bilibili将稿件av号变更为字母数字格式的"BV号"?规律大概就是av号异或某个随便选择的数,再随便加一个数,最后再转化成58进制,其数位顺序是打乱的,其代表0~57的数字/字母也是乱的。原来“异或”就是产生二进制纹理的根本原因啊,这一招真高明。
从这里能看出,那里不变的“1”、“411”、“7”并不是永久不变的,只不过它们对应的很高的数位,在目前B站av号存量来看,不足以让它们产生变化。其中“目前最高位”的第5位扎堆的那几个字符,在58进制转换表里大概也是扎堆的——大概在中后的位置。
目前看来这套系统能存储58^10≈4.3E17个视频。
-
17:40更新:


根据倍步长跳的实验显示:其变动的优先级为:
后两位>第4位(每4096一变,但是由于58×58<4096,肯定又要借用其他位的变化)>第9位(每131072一变,相当于第4位每变32次第9位才会变)>第5位(每2097152一变)。
这也能解释为什么第5位排布不均匀——没排完啊!
-
17:07更新:
可以看出,以64个av号为一组,这一组内倒数第二位基本上不会变——但是偶尔会有几个例外,这些例外的分布……老实说很难找到规律,但是至少看起来像是连续的,就像一颗大葡萄干镶嵌在面包里的那种感觉吧。


-
16:52更新:再次印证和十六进制有关。
av67108862 BV1z4411C7zc
av67108863 BV1z4411C7zF
av67108864 BV1bJ411N768
av67108865 BV1bJ411N76b
67108864是2的26次方,在这前后BV号完全面目全非,说明的确是把AV号转换成十六进制才转换为BV的。
-
16:47更新:
看了一下av20199999~av20200084区间对应的BV号,大致可以下这样的结论:每16个av号为一组,从16k~16k+15,除最后一位外都是相同的。猜测和十六进制有关,有待进一步试验。


-
截至目前(20200323 16:17),BV号有几位是固定的
BV1??411?7??
其中开头的BV1、中间的411和倒数第三位的7都是不变的,只有五个问号处是可变的。抛砖引玉,静待更多大佬解密规律。
-
16:29更新:


观察第5位的那几个频率较高的字符:
E到J相差5,W到b相差5(WXYZab),s到x也相差5,这或许是一个线索。
如果去掉I、O、l、0的话,剩下58个字符,如果按照数字、小写、大写:
123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ
分别对应1~58的话,
4 7 b p s t x E J W
分别是
4 7 11 24 27 28 32 39 43 55
静待更多大佬挖掘规律。
-
原回答:
截至目前(20200323 16:17),BV号有几位是固定的
BV1??411?7??
其中开头的BV1、中间的411和倒数第三位的7都是不变的,只有五个问号处是可变的。抛砖引玉,静待更多大佬解密规律。
回复
使用道具 举报
sldxlx | 未知
刚刚又遇到了个场景 特地录个屏
————
半夜再更新一波,移动端概念版一切正常,包括评论区楼层号也回来了。
———
简单写了个脚本,发现BV号就自动替换为av号。并在视频页标题下方显示av号。
欢迎汇报问题和建议
v1.0.1 大幅优化代码逻辑 测试性增加稍后再看页面支持
v0.3 直接替换地址栏网站不进行跳转;恢复评论跳转功能
v0.2b 调整av号加载顺序从而避免播放器消失 并添加稿件链接
v0.2a 紧急修复分P跳转


<a href="http://link.zhihu.com/?target=https%3A//greasyfork.org/zh-CN/scripts/398526-give-me-av-not-bv" data-draft-node="block" data-draft-type="link-card" class=" wrap external" target="_blank" rel="nofollow noreferrer">Give me AV not BV<hr/>
这么巨大的改变,bug至少要持续三个月
短链接的地址http://acg.tv目前(北京时间23日17:11)还不支持BV号跳转 但新视频的av号可以
<hr/>下面这个bug已经修复了,但是23日下午刚刚切换的时候确实存在。


<hr/>这张图是我看周刊时候的常见流程 直接开一个win10的便签记av号然后去看。改动后可能就只能去评论区看传送门了,要么就得打关键词搜索,麻烦太多了。虽然可能就像客户端改版之类的 过几个月会习惯新的流程 但是我真的挺为这种改动感到遗憾的。


======================
4点左右新过审稿件av号生成规则改为随机。如av455017605(BV1Q541167Qg)
喜提4e av号
ps 目测bv两个字母已经改为小写
=====================
一张图告诉你这玩意儿多坑爹 简直像在发度盘或者磁力链接一样……


============================


===================
移动端目前(23日北京时间15:27)看到最新稿件是第一时间有av号显示然后瞬间又刷掉了。似乎还是在测试阶段。这样感觉上稿件aid也就是av号应该还是作为索引保留 并且能被检索到的
===================
刚刚测试了一下 规则似乎就是对原av号进行了简单编码 也没有像油管一样加入下划线
比如
98359901->BV1xE411F7yq
98359903->BV1xE411F7yv
04->BV1xE411F71a
=====================
目前想到的理由

  • 稿件编号位数过长影响体验 或者数据库不好储存
  • 纯数字形式非常容易被遍历从而抓取数据
  • 与Youtube和其他视频网站保持一致
感觉可能2的理由更大一点(划掉)好吧官宣了
其实个人层面来说直接复制一串数字分享视频要比分享一大串随机字符或者一长串网址优雅和方便得多。
这一改动可能就直接切断了记忆数字记录稿件地址的方式
最简单的例子 我看周刊的时候 一般是直接开个便签 看到想看的就把av号直接敲到便签里去看
改动过后可能只能直接去评论区看整理好的链接了 因为敲这一堆随机数字字母并不现实
回复
使用道具 举报
快速回复
您需要登录后才可以回帖 登录 | 立即注册

当贝投影