python爬取B站弹幕&B站弹幕逆向&B站弹幕采集&B站弹幕解析

bilibili发送弹幕 前言 媳妇儿玩起了bilibili直播,我就顺便研究下利用python发送弹幕,以表支持~,主要思路通过发送http请求。 发送弹幕 1. 查询http请求 首先登录b站,进入直播间,打开开发者工具,先在直播间发送一条弹幕。 可以看到请求的url地址,请求方式是post,以及请求的表单数据: 2. 查询自己账号cookie和user-agent信息 打开开发者工具,进入个人中心/首页: 3. ... 阅读详情

文章声明

本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与文章作者无关,若有侵权,请联系我立即删除!

概要

- 记录一下B站 protobuf 的解析
- 该篇文章是基于弹幕接口的分析
- 用到的工具 360浏览器 notepad++
- 这个东西很久之前我就遇到过,奈何当初不懂,也是网上找的解决方案,所以现在回过头来继续研究

逆向目标

解析出弹幕的信息, 查看字段的映射表

开始整活

抓包

打开F12 选择XHR请求 定位到搜索数据包, 选择url过滤 seg

在这里插入图片描述

分析

这是个什么东西?

  • 要说乱码,他有中文,要说数据正常,他也让人看不懂
  • 请求数据都是正常的,为什么响应看不懂
  • 其实就是一个Protocol Buffer类型的
  • 官方网址: https://protobuf.dev/getting-started/

什么是Protocol Buffer?

  • 这篇文章不详细讲,因为东西太多了…

b站弹幕新版API数据格式规格研究 前言 b站近期更新了弹幕接口返回的数据结构,我通过逆向JS代码进行研究,下面是研究成果。 API调用 GET https://api.bilibili.com/x/v2/dm/web/seg.so 参数: 键 值 oid 分P编号,也称为cid type 1 segment_index 1 返回 请求正确:二进制数据流,需要解析后才能查看。 请求错误:JSON格式,结构是b站标准API数据结构。并附有错误信息。 返回数据流解析 应进行逐个字节解析。数据包以单条弹幕为单位。 以下 阅读详情

相关推荐

JS逆向加密——B 站弹幕 protobuf 分析

B 站弹幕 protobuf 数据分析

含笑 1728

Python Requests 2.31.0 实战:B站弹幕API逆向与网易云音乐JS混淆解析

本文详细介绍了如何使用Python Requests 2.31.0进行B站弹幕API逆向与网易云音乐JS混淆解析。通过实战案例,展示了如何获取B站弹幕数据、解析网易云音乐加密参数,并提供了高级技巧与异常处理方案,帮助开发者高效应对反爬机制,优化数据采集性能。

weixin_33984032的博客 453

Python爬取B站热榜与在线人数数据分析实战

网络爬虫作为数据采集的核心技术,通过模拟HTTP请求获取目标数据,结合异步IO和多线程可显著提升采集效率。在数据分析领域,Pandas和可视化工具能有效处理时间序列数据并生成直观趋势图表。本文以B站平台为例,详细解析如何通过aiohttp异步请求获取API数据,使用Pandas进行热度权重计算和时段对比分析,并利用Pyecharts实现动态可视化。该方案特别适用于内容平台的流量监控和用户行为分析,其中异步采集方案较同步方式效率提升4倍以上,热榜数据结合在线人数统计可为运营决策提供关键指标。

weixin_30781433的博客 455

B站爬虫核心:逆向buvid3与_uuid生成算法,突破反爬机制

在网络爬虫与数据采集领域,反爬机制是开发者必须面对的核心挑战。其基本原理是通过校验请求头、Cookie等客户端标识,区分正常用户与自动化脚本,以保护数据安全。理解并模拟这些标识的生成逻辑,对于构建稳定、高效的爬虫系统具有关键的技术价值。尤其在视频、社交等数据密集型平台的应用场景中,如自动化获取公开的评论、弹幕信息用于舆情分析或内容研究,掌握核心参数的逆向能力至关重要。本文聚焦于B站爬虫实践中两个至关重要的Cookie参数——buvid3和_uuid,通过JavaScript逆向工程,深入解析其作为设备指纹与

weixin_27966471的博客 1113

Python爬虫实战:逆向解析B站新版弹幕接口,构建高效弹幕采集系统

弹幕,作为一种独特的评论形式,早已超越了其“飞行字幕”的原始功能,成为了视频内容不可或缺的组成部分,甚至形成了一种“弹幕文化”。print(f"[成功] 分片 #{segment_index} 获取到 {len(danmaku_list)} 条弹幕,已保存。print(f"[解析错误] 解析分片 {segment_index} 的Protobuf数据时发生错误: {e}")print(f"[HTTP错误] 获取分片 {segment_index} 弹幕时发生错误: {e}")接口的方法已经基本失效。

2201_76125261的博客 1251

突破B站弹幕限制:用Python爬虫解析用户互动背后的数据秘密

从"前方高能"到"一键三连",从"保护"到"泪目",B站弹幕的每一个高频词、每一次刷屏,都是用户之间心照不宣的互动密码。通过爬虫突破获取限制,再用数据解析工具解码这些密码,不仅能帮UP主理解观众喜好,更能让我们看清:在虚拟的视频世界里,用户如何用文字构建属于自己的"共鸣社区"。但请记住:技术的价值在于理解而非滥用。爬取弹幕时多一份克制(控制频率、尊重规则),数据才会真正产生有温度的价值。你想分析哪类视频的弹幕?评论区留下BV号,我来帮你拆解其中的互动秘密!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 881

[特殊字符] 实战:Python异步爬取B站视频弹幕(Ajax接口)——从零到高并发采集

logger.info(f"完成批次 {i//batch_size + 1}/{(total_segments-1)//batch_size + 1}")"Referer": f"https://www.bilibili.com/video/BV1xx411c7mD", # 可动态传入。logger.info(f"P{page.get('page')} cid={cid} 共{seg_count}段")logger.warning(f"段{seg_idx}状态码{resp.status}")

2201_76125261的博客 39

超详细Python爬虫实战:异步爬取B站UP主全方位数据(粉丝、视频、弹幕)并可视化分析

本篇博客详细介绍了如何使用最新的Python异步技术栈(httpxasyncio)构建一个高效的B站UP主数据爬虫。我们不仅爬取了UP主的基本信息和视频列表,还深入到了弹幕层面,并完成了初步的数据可视化。项目亮点:技术新颖:全面采用异步编程,极大提升I/O密集型爬虫任务的效率。接口稳定:重点使用了的接口,绕开了复杂的WBI签名,更加稳定可靠。结构清晰:采用模块化设计,代码可读性和可维护性高。功能完整:覆盖了从数据获取、持久化到可视化的完整数据分析流程。进一步探索的方向:构建分布式爬虫:使用Celery。

2201_76125261的博客 829

爬取 bilibili 视频弹幕,深入B站弹幕爬虫:从零构建一个高性能的B站弹幕采集系统

这是整个爬虫开发中最折磨人的部分。B站没有公开弹幕的protobuf定义文件,我们得自己逆向出来。这是最需要耐心的环节。通过分析多个弹幕请求的响应数据,结合网上零散的资料,我最终整理出了这个protobuf定义:protobuf这个定义文件告诉我们:弹幕包主要由对象列表组成,每个弹幕包含弹幕ID、出现时间(progress,单位毫秒)、模式(滚动/顶部/底部)、字号、颜色、内容、发布时间戳等信息。重点说明。

2201_76125261的博客 55

Python爬虫新纪元:逆向解析B站API,高效抓取与深度分析视频数据

B站作为中国Z世代聚集的文化社区和视频平台,其内容生态独特且活跃。

2201_76125261的博客 1788

Python爬虫实战:视频网站弹幕爬取与情感分析系统

本文详细介绍了一个基于Python的视频网站弹幕爬取与情感分析系统的设计与实现。系统采用最新的异步爬虫技术、API逆向分析方法,结合自然语言处理技术,实现了弹幕数据的高效采集、存储、清洗和情感分析。文章从系统架构设计、技术选型、核心代码实现到数据分析可视化进行了全面阐述,为网络视频弹幕数据分析提供了完整的解决方案。关键词:Python爬虫、弹幕分析、情感分析、异步爬虫、数据可视化。

2201_76125261的博客 883

B站弹幕与评论爬取可视化全链路:从协议逆向到PyQt播放器

弹幕和评论作为典型的UGC实时文本数据,是网络舆情分析与用户行为研究的基础素材。其采集涉及HTTP请求调度、动态页面解析、WebSocket协议逆向、分页游标机制及时间轴对齐等关键技术原理。掌握这类结构化爬取方法,不仅能支撑词云生成、情感分析、热力图绘制等可视化任务,还可延伸至视频情绪拐点识别、互动密度建模等高阶应用场景。本文聚焦B站平台,系统梳理弹幕(protobuf+WebSocket)与评论(cursor分页)双轨采集策略、SQLite增量存储设计,以及基于PyQt5的本地化弹幕播放器实现,为数据初学

weixin_28686915的博客 328

Python实现飞书机器人定时发送文本、图片等群消息

python实现飞书群自动发送告警消息

tyh_keephunger的博客 2万+

萤石摄像头批量下载视频后FFmepg拼接

本文描述萤石摄像头,如何批量下载视频,然后把视频片段拼接为一个完整的视频,亲测有效。有问题,可以下面留言

烤鱼哥哥的博客 1202

【02】【VisionMaster V4.0.0 】安装教程—— 授权文件更新报错:应用程序与本地LM通讯出错(怀疑电脑加密 和 上网受限 造成的 )

本文详细介绍了海康VisionMaster 4.0试用版的安装流程及常见问题解决方案。主要内容包括:1)从官网下载基础安装包、试用补丁和授权文件;2)按顺序安装主程序、补丁和授权文件;3)针对授权失败问题提供两种解决方案(更换未加密电脑或使用加密狗);4)说明试用版的功能限制(30天试用期、2个流程限制等)。文章特别指出电脑加密可能导致授权失败,并提供了安装报错时的处理建议,为初次使用者提供了完整的安装指导。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 7175

高通平台 5G RF调试总结

目录: 1.QRCT4的使用 2.RFC配置 3.5G CA 配置概括 4.RFPD 运行及错误分析 5.CA吞吐率问题分析

嘿v小米的博客 9680

AGX Orin设计-外围电路设计之一

AGX ORIN是英伟达Jetson系列中算力规格最高端的模组,其高达200TOPS/275TOPS的算力可以为各类场景提供澎湃的算力支持,本篇文章针对AGX ORIN的常规外围电路设计做分析描述。

zhiyuchenkeji的博客 4481

医用超声图像模拟系统算法:空间分辨率详解

医用超声图像模拟系统中的空间分辨率,是连接物理原理、信号处理算法和最终图像质量的桥梁。通过精确模拟从声场发射、组织相互作用到信号接收和图像重建的全链条过程,并运用先进的波束形成、解卷积和超分辨率算法,我们可以不断逼近并突破物理极限,为开发下一代高分辨率超声成像系统提供强大的算法验证平台和数据集来源。未来的趋势将是更高保真度的物理模拟、更智能的自适应算法与数据驱动方法的深度融合。

alxraves的博客 702

Ansys Lumerical FDTD仿真加速策略与高性能硬件选型指南

本文深入探讨了Ansys Lumerical FDTD仿真的核心加速策略,涵盖算法优化与硬件选型两大维度。通过合理运用非均匀网格、对称边界条件等算法技巧,并精准匹配CPU/GPU计算资源与高性能硬件配置,可显著提升仿真效率,将计算时间从数天缩短至数小时。

a0b1c2d3的专栏 611

60、新型共轴直升机建模与事件触发积分强化学习研究

本文研究了新型共轴直升机的动力学建模与控制方法,基于牛顿-欧拉方程建立了6自由度非线性模型,并设计了四通道闭环控制器实现稳定飞行。同时,提出一种事件触发积分强化学习方法,用于解决非零和博弈中的最优跟踪控制问题,在减少通信开销的同时保证系统性能。通过仿真验证了控制器的轨迹跟踪能力,并证明了算法下跟踪误差与神经网络权重估计误差的一致最终有界性。两种方法协同可提升飞行器的自主性与鲁棒性,未来可拓展至多智能体协作、智能交通等复杂系统应用。

rl6adventurer的博客 118

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

上一篇: 自动化工具DrissionPage的使用(二)
下一篇: 安卓base64 编(解)码源代码
dh_浩开玩笑
博客等级 码龄6年 131粉丝 17原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dh_浩开玩笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值