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

哔哩哔哩今天宣布 av 全面全成 bv 号引起一众哗然,这就是我们逝去的青春?然而很多地方也出现了还原 av 号的方法。

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

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

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

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 主们在这个舞台上创造无限的可能。陪伴大家的每一次灵感迸发,为每一个创意而干杯喝彩!


目录
  • JS 脚本方式 或 浏览器控制台获取
  • 用 Py 脚本方式
  • 哔哩哔哩 API
  • PHP 写法
  • JS 写法
  • 目录
  • JS 脚本方式 或 浏览器控制台获取
  • 用 Py 脚本方式
  • 哔哩哔哩 API
  • PHP 写法
  • JS 写法
  • 手机扫描二维码访问

    本文标题:《bilibili 哔哩哔哩弹幕网 bv 号转 av 号方法总结》作者:极四维博客
    原文链接:https://cway.top/post/657.html
    特别注明外均为原创,转载请注明。

    分享到微信

    扫描二维码

    可在微信查看或分享至朋友圈。

    相关文章

    发表评论:

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

    «    2024年10月    »
    123456
    78910111213
    14151617181920
    21222324252627
    28293031

    搜索

    控制面板

    您好,欢迎到访网站!
      查看权限

    最新留言

    文章归档

    • 订阅本站的 RSS 2.0 新闻聚合