某站js逆向之播放量刷取

JS逆向 -- 分析某站buvid3和_uuid的加密过程 三、重新清除cookie,刷新页面,全局搜索_uuid的值,并在关键处下断,这里是一个三元运算符,如果空值,就赋值Object(l.a)()五、将该函数复制到js编辑器,然后再找a函数和s函数,a函数又用到了o函数,正好都在附近,最终js代码加密如下。一、通过抓包,发现buvid3值存在与该链接的响应cookie中。四、进入Object(l.a)()函数。二、Python代码实现。 阅读详情
AI摘要

本文讲述了通过抓包分析Bilibili视频播放,获取buvid4、buvid3、b_nut等cookie,并处理h5时间问题,为上百万播放提供技术支持。,

 1,播放量抓包分析

1.1,播放包的捕获

1.1.1,发现少了对应的几个包

其中now的cookei的值包含这些

而h5的有,多了一个响应值,而bobo的包,只是一个响应播放的图片,就不用管。

2,分析now的cookei

2.2,多次抓包发现变换的值有这些

2.3,开始逐个分析

buvid4的获取,发现在spi请求里面有,用python获取

2.4,获取buvid3,以及b_nut

2.4.1,发现是用buvid4作为cookie发送之后拿到的响应cookei

2.5,拿取b_lsid

2.5.1,全局搜索一眼就看出来赋值位置

2.5.2,找加密就行了,额挺尬尴的就在上面

2.5.3,就不一一找位置,太简单了,简单的扣就行了,直接python改写

2.6,获取_uuid

2.6.1,全局搜索,找到生成位置,控制台输出是obj生成的,是一个自调用方法,一样的进去找生成方法就行了,很简单,直接python改写,记得存入seesion

2.7,拿取sid,在v2找到有响应头,但是他携带表单有变化值,所以,要先拿到aid。cid,的值

2.7.1,主页直接拿源码正则提取出来

2.7.2,直接发送请求获取sid

3,发送now请求,发现播放量没有涨

4,发现h5携带时间问题,对h5发起模拟请求

后续可以上线程池,和代理,实现上百万播放,自此完结撒花*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

import requests
import re
import time
import execjs
seesion = requests.Session()
py_url = 'https://www.bilibili.com/video/BV168411B7dp/?spm_id_from=444.41.list.card_archive.click'
xxxxx = py_url.split('/')[-2]
header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.35'
    }
def buvid4():
    url = 'https://api.bilibili.com/x/frontend/finger/spi'
    header = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.35'
        }
    resp = seesion.get(url).text
    buvid4 = re.search('"b_4":"(?P<buvid4>.+?)"}', resp).group('buvid4')
    return buvid4
buvid4 = buvid4()
seesion.cookies.set('buvid4',buvid4)

def buvid3():
    resp = seesion.get(py_url,headers=header)
    buvid3_cookie = resp.cookies
    return buvid3_cookie
resp = buvid3()
buvid3 = resp['buvid3']
b_nut = resp['b_nut']
seesion.cookies.set('buvid3',buvid3)
seesion.cookies.set('b_nut',b_nut)
def b_lisd():
    xx = str(int(time.time() * 1000))
    with open("b_lisd.js") as f:
        js_code = f.read()

    jscode = execjs.compile(js_code)
    b_lisd = jscode.call("get", xx)

    return b_lisd
b_lisd =b_lisd()
seesion.cookies.set('b_lisd',b_lisd)

def _uuid():
    with open("uuid.js") as f:
        js_cod = f.read()

    jscod = execjs.compile(js_cod)
    uuid = jscod.call("n")
    return uuid
uuid = _uuid()
seesion.cookies.set('_uuid',uuid)
def ids():
    url_cid_aid = 'https://www.bilibili.com/video/%s/'%(xxxxx)
    resp = requests.get(url=url_cid_aid, headers=header).text
    ret = re.search('"stat":\{"aid":(?P<aid>\d+),"view":(?P<view>\d+),"danmaku',resp)

    aid = ret.group("aid")

    bfl = ret.group("view")
    cidco = re.search('"dynamic":"","cid":(?P<cid>\d+),"dimension"',resp) #bvid":"BV1x84y1W7vC"
    cid = cidco.group('cid')
    bvid = re.search('"videoData":\{"bvid":"(?P<bvid>.*?)","aid"',resp)
    bvid = bvid.group('bvid')
    seesion.cookies.set('cid', cid)
    seesion.cookies.set('aid', aid)
    seesion.cookies.set('bvid', bvid)
    seesion.cookies.set('bfl', bfl)
    return cid, aid, bvid, bfl
res = ids()

def sid():
    cid, aid, bvid, bfl = ids()

    url = "https://api.bilibili.com/x/player/wbi/v2"
    sj = str(int(time.time()))
    headers = {
        "authority": "api.bilibili.com",
        "accept": "application/json, text/plain, */*",
        "accept-language": "zh-CN,zh;q=0.9",
        "cache-control": "no-cache",
        "origin": "https://www.bilibili.com",
        "pragma": "no-cache",
        "referer": "https://www.bilibili.com/video/BV1x84y1W7vC/?spm_id_from=333.337.search-card.all.click&vd_source=80ee6b726db01708ed69d633b9c295a7",
        "sec-ch-ua": "\"Chromium\";v=\"116\", \"Not)A;Brand\";v=\"24\", \"Google Chrome\";v=\"116\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-dest": "empty",
        "sec-fetch-mode": "cors",
        "sec-fetch-site": "same-site",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"
    }
    params = {
        "aid": aid,
        "cid": cid,
        "web_location": "1315873",
        "w_rid": 'dab758539068282025b1e9401a06fb02',
        "wts": sj
    }
    sid = seesion.get(url, headers=headers,params=params)
    re = sid.cookies
    return re
re = sid()
sid = re['sid']
seesion.cookies.set('sid', sid)
#剩下固定不变的cookie的整合
sj = str(int(time.time()))
seesion.cookies.set('CURRENT_FNVAL',"4048")
seesion.cookies.set('bili_ticket','eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTQzMTUyMDgsImlhdCI6MTY5NDA1NjAwOCwicGx0IjotMX0.f_DfrhMsLhBGfM9aKWYzBO7jVbgVWgFG5fJrGu8BDlA')
seesion.cookies.set('buvid_fp','a6312429b8aaf9721fbd12dc4dd94e4b')
seesion.cookies.set('bili_ticket_expires',sj)

import random
aid =res[1]
cid =res[0]
qb = res[3]
print('初始播放量', qb)
h5_url = 'https://api.bilibili.com/x/click-interface/click/web/h5'
ctime = int(time.time())
data = {
    "aid": aid,
    "cid": cid,
    "part": "1",
    "mid": "0",
    "lv": "0",
    "ftime":str(ctime - random.randint(100,500)),
    "stime": str(ctime),
    "jsonp": "jsonp",
    "type": "3",
    "sub_type": "0",
    "from_spmid": "333.999.0.0",
    "auto_continued_play": "0",
    "refer_url":"" ,
    "bsource":"" ,
    "spmid": "333.788.0.0",
}
ret = seesion.post(h5_url,headers=header,data=data).json()
print(ret)
qb = res[3]

print('h5请求后的播放',qb)
B站buvid3和_uuid加密逆向实战:从抓包到Python复现完整流程 本文详细解析了B站buvid3和_uuid加密参数的逆向过程,从浏览器调试到Python实现的全流程。通过抓包分析和JS逆向技术,揭示了这两个关键参数的生成逻辑,并提供了完整的Python复现代码,帮助开发者突破反爬机制,构建稳定的数据采集方案。 阅读详情

相关推荐

B站刷播放逆向

在v2这个数据包的响应头中发现了sid的值,则我们只需要对v2数据包进行请求发送,则可以在其response中提取到sid的值即可!now数据包中已经有了buvid3这个值,因此buvid一定是在now前面的某个数据包的响应中、响应头中或者是js中生成的。重新刷新请求,再次捕获now数据包,提取cookie和上次的cookie最比对,通过比对发现,如下几个键值对是动态变化的。该数据包存在两个请求参数,且都是固定值。思考:目前在抓包工具中now数据包中,看到的所有的cookie都是属于这个now数据包的吗?

Al_lover的博客 2872

某站增加视频播放量-逆向分析

记录 简单的JS逆向, 刷b站播放量

m0_58659180的博客 5100

搜狐视频数据接口逆向分析:批量获取播放量与下载地址实战

在数据采集和自动化处理领域,网络爬虫是获取公开信息的核心技术。其工作原理在于模拟浏览器行为或直接调用网站后端接口,以程序化方式提取结构化数据。这项技术的核心价值在于将繁琐、重复的手动操作转化为高效、准确的自动化流程,广泛应用于市场分析、竞品研究和内容聚合等场景。面对搜狐视频这类采用动态渲染技术的主流平台,直接解析静态HTML往往无法获取关键数据。通过浏览器开发者工具进行网络请求分析,定位并逆向其数据接口,成为高效解决方案。本文聚焦于接口逆向这一技术路径,详细拆解了如何从播放页URL中提取视频ID(vid)、

weixin_34050005的博客 450

js逆向播放量增加,增加视频热度,uuid,sid,buvid3,aid,b_lsid, b_nut 还原实现过程

本次记录尝试你想某视频平台播放量:主要思路:(不断debug,观察代码设计还原实现)1.播放量增加必定是点击播放后的记录2.清空监视器,点击播放开始debug,截取到的就代表包含了增加播放量的包3.验证截取到的包,测试看哪一个是包含增加播放量的4.还原模拟发送请求浏览器逆向debug没有捷径只能不断练习找感觉。懂Java、js越多越好,虽然看的都是经过混淆的代码,但还是能看到实现的过程(本人也还在学习阶段)测试了超级久太多内容了,这里我也就只能记录还原实现的过程吧。

weixin_47481982的博客 2147

【APP逆向】央视频播放量增加,逆向全过程解密

APP逆向:刷x视频的播放量

景天科技苑 2万+

短视频平台数据抓取与分析——快手/B站等平台、弹幕分析、播放量趋势、创作者数据与多平台对比

/ 出现时间(毫秒)// 弹幕模式// 用户ID哈希// 弹幕内容// 发送时间本文完整阐述了短视频多平台数据采集与分析的技术体系,从统一架构设计、B站弹幕Protobuf解析、快手sig签名逆向、播放量趋势预测到多平台对比可视化,形成了一条完整的技术链路。统一适配器架构:一套代码支持抖音、快手、B站三大平台B站弹幕Protobuf解析:完整还原Brotli压缩+Protobuf编码的弹幕数据快手sig签名逆向:HMAC-SHA256算法还原与滑块验证码处理。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 140

B站新番时间表与热度监控:Python API逆向实战

在网站数据采集过程中,面对动态加载页面和反爬机制,直接解析HTML往往效率低下且维护成本高。通过API接口逆向,模拟浏览器签名逻辑,可以更稳定地获取结构化数据。以B站为例,其Web端接口普遍采用wbi签名校验,需要还原密钥生成规则才能正常请求。本文基于Python实现了一套完整的监控方案,从wbi签名还原到定时采集,覆盖新番时间表与热度数据存储。该方案适用于追番更新提醒、内容素材整理以及视频热度趋势分析等场景,为个人开发者提供了一个低成本的工程实践参考。

weixin_30983353的博客 105

抖音刷播放量.rar是什么?揭秘刷量骗局与真正提升播放量的底层逻辑

在短视频运营中,播放量是衡量内容效果的核心指标,但许多人误以为通过第三方工具就能“刷”出高数据。实际上,平台推荐算法的核心并非单一播放量,而是完播率、点赞率、评论率的比值关系。刷量工具通过脚本模拟用户行为,不仅无法获得推荐权重,反而会被风控系统标记为低质量流量,导致账号降权甚至封禁。理解算法的基本原理后,才能明白播放量是内容质量的副产品,而非运营手段。真正可持续的做法是:通过差异化定位精准匹配目标人群,用强钩子提升完播率,并通过数据复盘持续优化选题。从概念到原理,从技术价值到应用场景,本文为你拆解刷量工具背

weixin_42528902的博客 225

视频播放量的变化逻辑

以此文记录爬虫逆向学习思路代理ip+cookie来刷播放缺陷:据说破站这方面的检测很严格了,这种刷播放的方式,不会真的观看视频,就是点播一下,如果很多播放量都是这种点播而且还都是游客播放b站是能检测到的,检测到就刷了也没用播放量也不会涨的。

nobestnobest的博客 2465

Python抓取抖音播放量:接口逆向与数据落库实战

网络请求与数据持久化是数据采集的核心技术。通过HTTP协议模拟客户端请求,解析JSON响应,并利用SQLite实现结构化存储,可构建稳定的数据管道。在内容运营中,批量获取视频播放量、点赞等指标,能支撑趋势分析与选题决策。本文以抖音为例,详解从接口逆向到数据落库的完整路径,涵盖请求构造、字段解析、批量任务及避坑指南,助你高效搭建播放量监控系统。

weixin_26908317的博客 225

深度拆解某音刷播放量协议源码:从加密参数到风控反作弊实战

在短视频生态中,播放量是衡量内容价值的关键指标,也催生了围绕“协议源码”的灰色交易。刷播放量的本质是模拟客户端上报事件,其技术链路通常由加密参数、设备指纹、代理IP三件套构成,任何一环缺失都可能导致脚本失效。理解这条链路,不仅有助于识别源码真伪,更能将其反向应用于平台风控与反作弊。通过静态文件盘点、接口定位、日志特征分析等方法,可以有效区分正常流量与伪造流量。本文从逆向协议视角切入,结合TLS证书、设备注册、行为验证码等实战门槛,讲解如何利用pandas和最小风控校验实现播放异常检测,为安全从业者与技术开发

weixin_29325515的博客 262

逆向爬虫32 某视频刷播放

用扣JS+补环境的方式做某视频

weixin_40743639的博客 1552

抖音播放量上报协议解析与风控对抗原理

播放量上报是短视频平台内容分发的核心埋点机制,其背后涉及设备指纹、动态签名、行为序列建模等多重安全校验。理解该协议并非为了绕过风控,而是掌握平台如何通过`device_id`、`iid`、`sign`等字段构建实时反作弊体系。这类技术原理广泛应用于流量真实性验证、SDK合规集成及AB测试归因分析等工程场景,尤其在内容运营效果评估、真机集群行为模拟和开放平台API对接中具有关键价值。本文基于抖音v30.5.0真实抓包数据,拆解`aweme/stats`接口结构与三重动态防御逻辑,帮助开发者从协议逆向走向合法归

weixin_42706667的博客 359

Python采集法外狂徒张三所有视频【含jS逆向解密】

传说中,有人因为只是远远的看了一眼法外狂徒张三就进去了😂

轻松学python的博客 1261

TPAMI 2025新作LRFormer复现笔记:我的Windows 11 + RTX 4090配置全流程

本文详细记录了在Windows 11系统下使用RTX 4090显卡复现TPAMI 2025顶会论文LRTransformer的完整流程,包括硬件配置、系统优化、Python环境搭建及模型训练中的常见问题解决方案。特别针对Windows平台特有的路径管理、CUDA版本冲突和显存优化等关键技术细节提供了实用指南,帮助开发者高效完成环境搭建和模型训练。

weixin_29094301的博客 411

智能客服系统知识库数据清洗

数据清洗(Data Cleaning)是确保智能客服知识库高效运行的重要环节,主要涉及。| 分类 & 标签优化 | 重新组织 FAQ,创建关键字索引 || 定期更新 | 结合用户反馈,每 1-3 个月优化 |才能提供更优质、正确的回答,提升客户满意度!、Zendesk、Intercom 等)中,: FAQ 或客服回答中可能存在。,会影响 AI 匹配的准确性。是一个持续优化的过程,

z1941563559的博客 2098

B站接口逆向:buvid3与_uuid生成逻辑及Node.js复现

在爬虫工程中,接口参数校验往往是绕过访问限制的关键一环。很多站点会通过动态生成的设备标识与会话参数来识别请求来源,这些参数看似随机,实则由前端JS按照特定规则产出。理解其生成原理,不仅能提升请求的通过率,更是掌握JS逆向基础能力的有效路径。以B站web端为案例,其请求头中的buvid3本质是设备指纹,由buvid4经过字符清理与MD5加工而来;URL中的_uuid则采用带特征位的随机字符串拼装逻辑。通过浏览器定位JS函数并对照格式特征,可用Node.js精确复现这两类参数,从而稳定构造出合法请求,应用于公开

weixin_28835583的博客 248

用C#语言实现记事本

本次程序设计作业为用C#语言设计一个记事本,设计的记事本应与电脑系统自带的记事本类似,最后实现的界面及功能应类似于下图。

qq_57738695的博客 2847

JS逆向排行榜接口:签名算法还原与数据采集工程实践

在前端Web应用中,排行榜数据通常通过异步接口返回,并借助参数排序、时间戳和摘要算法生成签名,用于校验请求合法性。理解签名生成原理,有助于掌握JS逆向、接口分析、反爬策略与数据采集的通用方法。其技术价值在于把浏览器运行时逻辑还原为可维护的工程代码,应用于内容趋势观察、榜单监控、数据看板与选题分析等场景。围绕排行榜接口的签名参数定位、MD5还原、请求头与Cookie处理、限速分页和增量落库,逐步构建稳定可维护的采集流程。

weixin_33100393的博客 298

​​EMC设计实战:BCI(大电流注入)硬件设计规范

LIN接口:集成TVS管(如PESD5V0S1BL)与共模电感,耐压等级≥20V(8kV HBM)。输入滤波:10μF电解电容(100kHz截止)+ 0.1μF陶瓷电容(10MHz截止)。​:全频段(1MHz-400MHz)注入200mA电流,LIN通信误码率<0.01%。对敏感电路(如传感器)采用隔离电源(如ADuM5000),隔离电压≥3kVrms。​:连续波(CW)与调幅波(AM,调制深度80%)组合,覆盖全频段干扰场景。​:选择低频段(1-100MHz)感量≥100μH的绕线电感,抑制共模电流。

m0_50833886的博客 1929

DaVinciCFG实战:从ARXML配置到ADC代码生成全解析

本文详细解析了使用DaVinciCFG工具进行ADC模块配置的全过程,从ARXML文件处理到代码生成与集成。重点介绍了关键参数配置、ARXML语法规则、常见错误排查及代码优化技巧,帮助开发者掌握AUTOSAR架构下ADC驱动开发,提升汽车电子系统的可靠性。

f9g0h的博客 378

js逆向——刷某站视频播放量

代码效果图:

2201_75894542的博客 846

BMP390L数字大气压传感器原理图设计,已量产(压力传感器)

在工业设备的室内定位、地下设施监测这类 GPS 信号盲区场景里,气压高度检测的 “靠谱程度” 直接决定了系统的可用性 —— 毕竟谁也不想在地下停车场导航时,设备把 1 楼误判成 3 楼。最近在项目里基于博世 BMP390L 做了硬件电路设计,正好聊聊这款工业级数字气压传感器的硬实力,以及原理图里的那些关键设计细节。

不脱发的程序猿 344
上一篇: 下载爬取到的图片链接
下一篇: 某鸟竞技sign逆向
重生之铁窗泪
博客等级 码龄4年 217粉丝 9原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值