最新版B站刷播放量接口协议参数(w_rid、aid、cid、buvid3、b_lsid、cookie),加密算法全流程解析

本文主要是介绍最新版B站刷播放量接口协议参数(w_rid、aid、cid、buvid3、b_lsid、cookie),加密算法全流程解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作为巨大流量池B站,有必要对其数据接口做一番全流程分析;下面梳理一下各个参数的获取方法,以作为学习交流之用。

话不多说, 先找接口 -》

根据测试和综合网上资料(经验也重要啊!)增加播放量的按钮接口在这个h5的链接, 只有访问这个链接接口,才能记作播放一次,那么接下来就是构造请求了:

看看请求参数 cookie , payload 那么参数 泪目。。 爬虫工作量还是很大的),这里面参数都要一一构造, 理论上错一个也不行啊;

那就来呗=》 先从cookie下手, cookie来源主要有一下:服务器发给客户端的,在response cookie可以找到,  根据一定条件(比如拿url中几个请求参数param)放进JS代码里面加密生成的, 客户端拿了一个cookie之后,二次发起请求向服务器获取新的cookie值的 

往上挨个链接找cookie值,幸运的是在抓包的第一次访问链接里面几个关键cookie值 ,比如buvid3,b_nut  

还有在response里面发现了参数 cid , aid  seesion等值, 好吧!进老鼠窝了, 一锅端了!

用python首条链接发起请求,获取cookie, 用正则把response里面的cid,aid ,session给它择出来。

def get_buvid3():bvid='BV1tN4y1Y7i8'response = requests.get(f'https://www.bilibili.com/video/{bvid}/', headers=headers)data_list=re.findall(r'__INITIAL_STATE__=(.+);\(function',response.text) # .表示除换行符所有字符,+ 表示一个或者多个data_dict=json.loads(data_list[0]) # 结果长得像字典, 就用python中反序列化转成json格式sessionId=re.findall(r'session":"(.+)"}</script',response.text)[0]aid=data_dict['aid']cid=data_dict['videoData']['cid']buvid3=response.cookies.get_dict()['buvid3']b_nut=response.cookies.get_dict()['b_nut'] #1704092097return {'buvid3':buvid3,'aid':aid,'cid':cid,'b_nut':b_nut,'session':sessionId}
pprint.pprint(get_buvid3())

 接着往上找参数

来到叫spi的这api接口, 在response找到了宝贵的两个参数 buvid3  buvid4 ,准备发起请求拿下这两个值,

看下构造请求参数:

好嘛! cookies里面增加了sid ,b_lsid的值,搁着玩碟中谍呢?!参数越变越多了, 现在还得把两小弟搞定,下来要开始逆向了。

 搜索b_lsid值,在log-reporter.js有出现,  在这里说一下, cookie里面的逆向有一大特点,就是最终会把生成好的cookie放在一个setCookie的函数里面,这样找起来就排除了很多干扰项,如图所示:

 找到了疑似目标位置之后好办,通过一系列断点调试,等骚操作之后(中间也是百转千回),浓缩成一段python代码来集成这个 b_lsid值,本着拿来主义, 直接上吧:

def get_b_lsid():data=""for i in range(8):v1=math.ceil(16*random.uniform(0,1))v2=hex(v1)[2:].upper()data+=v2result=data.rjust(8,"0")e=int(time.time()*1000)t=hex(e)[2:].upper()b_lsid="{}_{}".format(result,t)return b_lsid

搞定这个值之后,革命还在继续中。。

sid值 

这个值的获取是response cookie服务器返回的, 通过构造请求就可以获取, header头链接在一个叫v2?aidxxxxxx的链接中, 

payload中, 又有新成员加入, 好嘛!还在连环套中。。

w_rid , 搜索中只有JS文件中有,不用多说, 又是一轮新的JS逆向之旅了;

 在这个文件中有, 而且还是md5函数 ,出于职业敏感, 看到这种md5什么的,基本属于自报家门了!果断打上断点 

不着急,出于严谨,还有一处 ,在  core.xxxx.js这个文件也有一处类似的函数, 可别漏网之鱼呀,都打算断点, 看它走哪一处!

断点停在了这个JS中这个位置, 另外一个JS人家压根不断 !

根据打印的中,看看参数,瞧瞧返回值, 大概能看看七七八八了, 

var r = getWbiKey(t) ,r: {imgKey: '7cd084941338484aae1ad9425b84077c', subKey: '4932caff0ff746eab6f01bf08b70ac45'}

嫌疑在这, 确定imgKey ,subKey 这两个值, 可以说是本次逆向的精华所在了!

def web_rid(param):# n = "653657f524a547ac981ded72ea172057" + "6e4909c702f846728e64f6007736a338"n = imgKey+ subKeyr = []c = ''.join([n[i] for i in[46, 47, 18, 2, 53, 8, 23, 32, 15, 50, 10, 31, 58, 3, 45, 35, 27, 43, 5, 49, 33, 9, 42, 19, 29, 28, 14,39, 12, 38, 41, 13, 37, 48, 7, 16, 24, 55, 40, 61, 26, 17, 0, 1, 60, 51, 30, 4, 22, 25, 54, 21, 56,59, 6, 63, 57, 62, 11, 36, 20, 34, 44, 52]][:32])s = int(time.time())param["wts"] = "1684737775"h = []param = "&".join([f"{i[0]}={i[1]}" for i in sorted(param.items(), key=lambda x: x[0])])return hashlib.md5((param + c).encode(encoding='utf-8')).hexdigest(), s

生成w_rid的JS代码附上,  

 最后回到h5,B站播放量接口,构造完所有接口,获取响应结果跟网页返回的结果一致,基本上告一段落,最后当然还要需要代理IP加持,才能真正增加实际播放量!

有兴趣测试接口,或者获取完全完整算法的伙伴可以+q /+v  Api-hex 交流。

这篇关于最新版B站刷播放量接口协议参数(w_rid、aid、cid、buvid3、b_lsid、cookie),加密算法全流程解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/854691

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

4B参数秒杀GPT-3.5:MiniCPM 3.0惊艳登场!

​ 面壁智能 在 AI 的世界里,总有那么几个时刻让人惊叹不已。面壁智能推出的 MiniCPM 3.0,这个仅有4B参数的"小钢炮",正在以惊人的实力挑战着 GPT-3.5 这个曾经的AI巨人。 MiniCPM 3.0 MiniCPM 3.0 MiniCPM 3.0 目前的主要功能有: 长上下文功能:原生支持 32k 上下文长度,性能完美。我们引入了