bilibili哔哩哔哩弹幕网bv号转av号方法总结

😂 这篇文章最后更新于1487天前,您需要注意相关的内容是否还可用。
目录导航
  • JS脚本方式 或 浏览器控制台获取
  • 用Py脚本方式
  • 哔哩哔哩API
  • PHP写法
  • JS写法
  • 哔哩哔哩今天宣布av全面全成bv号引起一众哗然,这就是我们逝去的青春?然而很多地方也出现了还原av号的方法。

    JS脚本方式 或 浏览器控制台获取

    首先让我们看一段油猴脚本代码:

    function() {
        'use strict';
        const av = window.__INITIAL_STATE__.aid || (window.__INITIAL_STATE__.videoData && window.__INITIAL_STATE__.videoData.aid) || window.aid;
        if (av) history.replaceState(null, '', `https://www.bilibili.com/video/av${av}${window.location.search}`);
    }

    这里很明显了,其实av号都是从网页中获取到的aid,然后拼接到av号后边,并没实现从算法上的破解。其实在浏览器调试模式(即F12)下输入window.aid即可。另几个代表

    window.bvid  //BV号
    window.cid    //弹幕cid

    用Py脚本方式

    来自知乎mcfx:https://www.zhihu.com/question/381784377/answer/1099438784

    table='fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF'
    tr={}
    for i in range(58):
    	tr[table[i]]=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[i]]]*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[i]]=table[x//58**i%58]
    	return ''.join(r)
    
    print(dec('BV17x411w7KC'))
    print(dec('BV1Q541167Qg'))
    print(dec('BV1mK4y1C7Bz'))
    print(enc(98791488))
    print(enc(455017605))
    print(enc(882584971))

    可在Python在线运行器上编译运行:https://c.runoob.com/compile/6

    哔哩哔哩API

    使用哔哩哔哩官方API也可用其获取aid:

    https://api.bilibili.com/x/web-interface/view?bvid=BV1f741117jx

    PHP写法

    <?php
    class Bilibili{
        protected $table = "fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF";
        protected $tr = [];
        protected $s = [11, 10, 3, 8, 4, 6];
        protected $xor = 177451812;
        protected $add = 8728348608;
    
        public function __construct($id=null)
        {
            for ($i = 0; $i < 58; $i++) {
                $this->tr[$this->table[$i]] = $i;
            }
        }
    
        public function dec($id){
            $r = 0;
            for ($i = 0; $i < 6; $i++) {
                $r += $this->tr[$id[$this->s[$i]]] * 58 ** $i;
            }
            return ($r - $this->add) ^ $this->xor;
        }
    
        public function enc($id){
            $id = ($id ^ $this->xor) + $this->add;
            $r = str_split('BV1  4 1 7  ');
            for ($i = 0; $i < 6; $i++) {
                $r[$this->s[$i]] = $this->table[floor($id / 58 ** $i) % 58];
            }
            return implode("",$r);
        }
    }
    ?>

    JS写法

    https://bv2av.193193.xyz/

    上述网址进去保存网页即可查看源码


    哔哩哔哩升级原文:

    尊敬的各位用户:

    一直以来,AV号都是B站视频稿件的重要标识,在视频的传播和分享中起到了关键作用。

    为了保护稿件信息安全,容纳更多投稿,维护UP主的权益,自 2020 年 3 月 23 日起,AV号将全面升级为BV号。与纯数字的AV号不同,BV号是一段由数字和大小写字母组成的字符串,经过算法自动生成。未来将统一使用BV号作为稿件标识。

    同时, 2020 年 3 月 23 日前生成AV号的相关功能保持不变。例如,已分享的稿件链接,AV号搜索,以及动态、评论、私信中的高亮跳转。

    此外,用户在复制BV号或者包含BV号的链接后,打开B站APP的同时会自动跳转至该视频。

    更多详细规则说明请见链接FAQ:https://www.bilibili.com/blackboard/activity-BV-PC.html

    BV号将继续见证UP主们在这个舞台上创造无限的可能。陪伴大家的每一次灵感迸发,为每一个创意而干杯喝彩!