快手直播间提取工具,采集直播间弹幕评论点心,最新开源框架【仅供学习参考】

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
MSE Nacos 企业版免费试用,1600元额度,限量50份
简介: 这是一套快手直播弹幕接收与用户信息查询的源码,原本为客户提供定制服务,现分享出来供学习参考。代码基于 `.版本 2` 开发,支持 WebSocket 客户端连接、解析直播间数据、接收弹幕消息及用户操作(如点亮爱心),并展示在线观众数量和用户详细信息。包含多个子程序实现功能模块化,如头像获取、性别判断等。

下载地址:https://pan38.com/share.php?code=yavRA 提取码:1999
之前是给客户定制的,存哈了源码,现在留着没用,看能用就给大家分享出来吧,仅供学习参考使用!!!
源码部分【仅供学习参考】
```.版本 2
.支持库 e2ee
.支持库 iext
.支持库 spec
.支持库 EThread

.程序集 窗口程序集_启动窗口
.程序集变量 WSS, WebSocket客户端
.程序集变量 cookie, 文本型
.程序集变量 liveStreamId, 文本型
.程序集变量 弹幕数量, 整数型

.子程序 _启动窗口创建完毕

写到文件 (取运行目录 () + “\gzip.dll”, #gzip)
WSS.初始化 (&WSS客户端收到消息, &WSS客户端连接成功, &WSS客户端连接失败, &WSS客户端断开连接)

.子程序 连接
.局部变量 是否成功, 逻辑型
.局部变量 token十六进制, 文本型
.局部变量 liveStreamId十六进制, 文本型
.局部变量 局结果, 字节集
.局部变量 局
返回, 文本型
.局部变量 直播间链接, 文本型
.局部变量 返回Cookie, 文本型
.局部变量 局_提交数据, 文本型
.局部变量 json, 类_json
.局部变量 token, 文本型
.局部变量 webSocketUrls, 文本型

cookie = 编辑框1.内容
直播间链接 = 编辑框直播间地址.内容
.如果真 (直播间链接 = “”)
信息框 (“请输入直播间链接”, 0, “提示”,
启动窗口.取窗口句柄 ())
按钮连接.禁止 = 假
按钮
断开.禁止 = 假
返回 ()
.如果真结束

局_返回 = 编码_Utf8到Ansi (网页GZIP解压 (网页访问对象 (直播间链接, 0, , , 返回Cookie, #协议头, , , , , , , , , , , , , )))
liveStreamId = 文本
取出中间文本 (局返回, #常量2, #常量3, , )
.如果真 (liveStreamId = “”)
信息框 (“你输入的直播间链接不存在或无法访问或检查cookie是否失效或不可用”, 16, “提示”,
启动窗口.取窗口句柄 ())
按钮连接.禁止 = 假
按钮
断开.禁止 = 假
返回 ()
.如果真结束

局_返回 = 编码Utf8到Ansi (网页访问_对象 (“https://live.kuaishou.com/live_api/liveroom/websocketinfo?liveStreamId=” + liveStreamId, 0, , cookie, , #协议头, , , , , , , , , , , , , ))
json.解析 (局返回)
token = json.取通用属性 (“data.token”)
webSocketUrls = json.取通用属性 (“data.websocketUrls[0]”)
json.清除 ()
.如果真 (token = “”)
信息框 (“获取进房token失败,请查看cookie是否失效或不可用”, 16, “提示”,
启动窗口.取窗口句柄 ())
按钮连接.禁止 = 假
按钮
断开.禁止 = 假
返回 ()
.如果真结束
是否成功 = WSS.连接 (webSocketUrls, 真, )
token十六进制 = 字节集字节集到十六进制 (到字节集 (token))
liveStreamId十六进制 = 字节集
字节集到十六进制 (到字节集 (liveStreamId))

.判断开始 (是否成功 = 真)
WSS.发送字节集 (字节集十六进制到字节集 (“08C8011ADC010AAC01” + token十六进制 + “120b” + liveStreamId十六进制 + “3a1e4a334c6f3455367a37556a4967676e345f31363830373137333030373036”))
时钟1.时钟周期 = 20000
按钮
断开.禁止 = 假
.默认
信息框 (“WSS进房失败”, 16, “提示”, 启动窗口.取窗口句柄 ())
按钮
断开.禁止 = 假
.判断结束

.子程序 WSS客户端_收到消息
.参数 消息类型, 整数型
.参数 消息句柄, 整数型
.局部变量 索引, 整数型
.局部变量 消息数据, 字节集
.局部变量 消息文本, 文本型
.局部变量 Protobuf, _UnProtobuf
.局部变量 是否解析成功, 整数型
.局部变量 i, 整数型
.局部变量 key数量, 整数型
.局部变量 用户信息, 个人信息

消息数据 = WSS.取回消息数据 (消息句柄)
Protobuf.解析 (消息数据)
key数量 = Protobuf.getCount (“3.5”)
.如果真 (key数量 > 0) ' 弹幕
.计次循环首 (key数量, i)
弹幕数量 = 弹幕数量 + 1
用户信息.英文ID = Protobuf.getText (“3.5.2.1”, i)
用户信息.昵称 = Protobuf.getText (“3.5.2.2”, i)
用户信息.操作描述 = Protobuf.getText (“3.5.3”, i)
用户信息.头像 = 子_取头像 (用户信息.英文ID)
索引 = 超级列表框1.插入表项 (, , , , , )
超级列表框1.置标题 (索引, 0, 用户信息.昵称) ' 昵称
超级列表框1.置标题 (索引, 1, 用户信息.英文ID) ' ID
超级列表框1.置标题 (索引, 2, 用户信息.操作描述) ' 弹幕
超级列表框1.置标题 (索引, 3, 用户信息.头像) ' 头像
超级列表框1.保证显示 (索引)
标题 = 到文本 (弹幕数量)
.计次循环尾 ()
.如果真结束

key数量 = Protobuf.getCount (“3.2”)
.如果真 (key数量 ≠ 0)
标签1.标题 = “在线观众:” + Protobuf.getText (“3.1”)
.如果真结束

key数量 = Protobuf.getCount (“3.8”)
.如果真 (key数量 > 0)
.计次循环首 (key数量, i)
弹幕数量 = 弹幕数量 + 1
用户信息.昵称 = Protobuf.getText (“3.8.2.2”, i)
用户信息.英文ID = Protobuf.getText (“3.8.2.1”, i)
用户信息.操作描述 = “点亮了爱心”
用户信息.头像 = 子_取头像 (用户信息.英文ID)

    索引 = 超级列表框1.插入表项 (, , , , , )
    超级列表框1.置标题 (索引, 0, 用户信息.昵称)
    超级列表框1.置标题 (索引, 1, 用户信息.英文ID)
    超级列表框1.置标题 (索引, 2, 用户信息.操作描述)
    超级列表框1.置标题 (索引, 3, 用户信息.头像)  ' 头像
    超级列表框1.保证显示 (索引)
    标题 = 到文本 (弹幕数量)
.计次循环尾 ()

.如果真结束

.子程序 WSS客户端_连接成功

调试输出 (“WSS_连接成功”)

.子程序 WSS客户端_连接失败

调试输出 (“WSS_连接失败”)

.子程序 WSS客户端_断开连接

时钟1.时钟周期 = 0
调试输出 (“WSS_断开连接”)

.子程序 按钮连接_被单击

按钮连接.禁止 = 真
按钮
断开.禁止 = 真
启动线程 (&连接, , )

.子程序 按钮断开_被单击

WSS.断开 ()
按钮_连接.禁止 = 假

.子程序 用户ID取头像, 文本型
.参数 ID, 文本型
.局部变量 头像地址, 文本型
.局部变量 json, 类_json

头像地址 = 编码Utf8到Ansi (网页访问_对象 (“https://live.kuaishou.com/live_api/baseuser/userinfo/byid?principalId=” + ID, , , cookie, , #协议头))
json.解析 (头像地址)
返回 (json.取通用属性 (“data.userInfo.avatar”))

.子程序 时钟1周期事件

WSS.发送字节集 (字节集_十六进制到字节集 (“08011a0708afb4c294f530”))

.子程序 超级列表框1左键单击表项
.局部变量 返回内容, 文本型
.局部变量 英文ID, 文本型
.局部变量 json, 类_json
.局部变量 用户信息, 个人信息

英文ID = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
查询资料_1 (英文ID)

.子程序 查询资料_1, , , 个人中心
.参数 英文ID, 文本型
.局部变量 返回内容, 文本型
.局部变量 json, 类_json
.局部变量 用户信息, 个人信息

返回内容 = 编码Utf8到Ansi (网页访问_对象 (“https://live.kuaishou.com/live_api/baseuser/userinfo/sensitive?principalId=” + 英文ID, , , cookie, , #协议头))
json.解析 (返回内容)
用户信息.英文ID = 英文ID
用户信息.头像 = json.取通用属性 (“data.sensitiveUserInfo.avatar”)
用户信息.昵称 = json.取通用属性 (“data.sensitiveUserInfo.name”)
用户信息.数字ID = json.取属性 (“data.sensitiveUserInfo.originUserId”).取数据文本 ()
用户信息.签名 = json.取通用属性 (“data.sensitiveUserInfo.description”)
用户信息.地区 = json.取通用属性 (“data.sensitiveUserInfo.cityName”)
用户信息.性别 = json.取通用属性 (“data.userInfo.sex”)
.判断开始 (用户信息.性别 = “F”)
用户信息.性别 = “女”
.判断 (用户信息.性别 = “M”)
用户信息.性别 = “男”
.默认
用户信息.性别 = “保密”
.判断结束

图片框1.图片 = 网页访问对象 (用户信息.头像)
标签2.标题 = “昵称:” + 用户信息.昵称
标签3.标题 = “英文ID:” + 英文ID
标签6.标题 = “数字ID:” + 用户信息.数字ID
标签4.标题 = “性别:” + 用户信息.性别
标签7.标题 = “地区:” + 用户信息.地区
标签5.标题 = “签名:” + 用户信息.签名

.子程序 查询资料_2, , , 直播名片
.参数 英文ID, 文本型
.局部变量 返回内容, 文本型
.局部变量 json, 类_json
.局部变量 用户信息, 个人信息

返回内容 = 编码Utf8到Ansi (网页访问_对象 (“https://live.kuaishou.com/live_api/baseuser/userinfo/byid?principalId=” + 英文ID, , , cookie, , #协议头))
json.解析 (返回内容)
用户信息.英文ID = 英文ID
用户信息.头像 = json.取通用属性 (“data.userInfo.avatar”)
用户信息.昵称 = json.取通用属性 (“data.userInfo.name”)
用户信息.数字ID = json.取属性 (“data.userInfo.originUserId”).取数据文本 ()
用户信息.签名 = json.取通用属性 (“data.userInfo.description”)
用户信息.地区 = json.取通用属性 (“data.userInfo.cityName”)
用户信息.性别 = json.取通用属性 (“data.userInfo.sex”)
.判断开始 (用户信息.性别 = “F”)
用户信息.性别 = “女”
.判断 (用户信息.性别 = “M”)
用户信息.性别 = “男”
.默认
用户信息.性别 = “保密”
.判断结束

图片框1.图片 = 网页访问对象 (用户信息.头像)
标签2.标题 = “昵称:” + 用户信息.昵称
标签3.标题 = “英文ID:” + 英文ID
标签6.标题 = “数字ID:” + 用户信息.数字ID
标签4.标题 = “性别:” + 用户信息.性别
标签7.标题 = “地区:” + 用户信息.地区
标签5.标题 = “签名:” + 用户信息.签名

.子程序 点心, 逻辑型
.局部变量 data, 文本型
.局部变量 返回内容, 文本型

data = 子文本替换 (#点心, “[ID]”, liveStreamId, , , 真)
返回内容 = 编码Utf8到Ansi (网页访问_对象 (“https://live.kuaishou.com/live_api/liveroom/like”, 1, data, cookie, , #协议头, , , , 编码_Ansi到Utf8 (data)))
.如果 (返回内容 = “{” + #引号 + “data” + #引号 + “:true}”)
返回 (真)
.否则
返回 (假)
.如果结束

.子程序 网页取头像1, 文本型
.参数 英文ID, 文本型
.局部变量 局
网址, 文本型
.局部变量 局提交数据, 文本型
.局部变量 ADD
协议头, 类POST数据类
.局部变量 局
提交协议头, 文本型
.局部变量 局结果, 字节集
.局部变量 局
返回, 文本型
.局部变量 json, 类_json

调试输出 (1)
网址 = “https://www.kuaishou.com/graphql”
提交数据 = “{” + #引号 + “operationName” + #引号 + “:” + #引号 + “visionProfile” + #引号 + “,” + #引号 + “variables” + #引号 + “:{” + #引号 + “userId” + #引号 + “:” + #引号 + 英文ID + #引号 + “},” + #引号 + “query” + #引号 + “:” + #引号 + “query visionProfile($userId: String) {\n visionProfile(userId: $userId) {\n result\n hostName\n userProfile {\n ownerCount {\n fan\n photo\n follow\n photo_public\n typename\n }\n profile {\n gender\n user_name\n user_id\n headurl\n user_text\n user_profile_bg_url\n typename\n }\n isFollowing\n typename\n }\n typename\n }\n}\n” + #引号 + “}”
局_提交数据 = 编码gb2312到utf8 (局提交数据)
ADD协议头.添加 (“Host”, “www.kuaishou.com”)
ADD
协议头.添加 (“Connection”, “keep-alive”)
ADD协议头.添加 (“accept”, “/”)
ADD
协议头.添加 (“User-Agent”, “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36”)
ADD协议头.添加 (“content-type”, “application/json”)
ADD
协议头.添加 (“Origin”, “https://www.kuaishou.com”)
ADD协议头.添加 (“Sec-Fetch-Site”, “same-origin”)
ADD
协议头.添加 (“Sec-Fetch-Mode”, “cors”)
ADD协议头.添加 (“Sec-Fetch-Dest”, “empty”)
ADD
协议头.添加 (“Referer”, “https://www.kuaishou.com/profile/3xi9cj4qnixaaug”)
ADD协议头.添加 (“Accept-Language”, “zh-CN,zh;q=0.9”)
提交协议头 = ADD协议头.获取协议头数据 ()
结果 = 网页访问对象 (局网址, 1, , cookie, , 局提交协议头, , , , 到字节集 (局提交数据), , , , , , , )
返回 = 到文本 (编码编码转换对象 (局结果))
json.解析 (局_返回)
返回 (json.取通用属性 (“data.visionProfile.userProfile.profile.headurl”))

.子程序 网页_取头像2, 文本型
.参数 英文ID, 文本型
.局部变量 返回内容, 文本型
.局部变量 json, 类_json
.局部变量 用户信息, 个人信息

调试输出 (2)
返回内容 = 编码Utf8到Ansi (网页访问_对象 (“https://live.kuaishou.com/live_api/baseuser/userinfo/byid?principalId=” + 英文ID, , , cookie, , #协议头))
json.解析 (返回内容)
用户信息.头像 = json.取通用属性 (“data.userInfo.avatar”)
返回 (用户信息.头像)

.子程序 网页_取头像3, 文本型
.参数 英文ID, 文本型
.局部变量 返回内容, 文本型
.局部变量 json, 类_json
.局部变量 用户信息, 个人信息

调试输出 (3)
返回内容 = 编码Utf8到Ansi (网页访问_对象 (“https://live.kuaishou.com/live_api/baseuser/userinfo/sensitive?principalId=” + 英文ID, , , cookie, , #协议头))
json.解析 (返回内容)
用户信息.头像 = json.取通用属性 (“data.sensitiveUserInfo.avatar”)
返回 (用户信息.头像)

.子程序 网页取头像4, 文本型
.参数 英文ID, 文本型
.局部变量 局
网址, 文本型
.局部变量 局提交cookie, 文本型
.局部变量 局
提交协议头, 文本型
.局部变量 局结果, 字节集
.局部变量 局
返回, 文本型

调试输出 (4)
网址 = “https://www.kuaishou.com/profile/” + 英文ID
提交协议头 = “Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9” + #换行符 + “Accept-Encoding: gzip, deflate, br” + #换行符 + “Accept-Language: zh-CN,zh;q=0.9” + #换行符 + “Cache-Control: max-age=0” + #换行符 + “Connection: keep-alive” + #换行符 + “Host: www.kuaishou.com” + #换行符 + “Sec-Fetch-Dest: document” + #换行符 + “Sec-Fetch-Mode: navigate” + #换行符 + “Sec-Fetch-Site: none” + #换行符 + “Sec-Fetch-User: ?1” + #换行符 + “Upgrade-Insecure-Requests: 1” + #换行符 + “User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36”
网页访问S (局网址, 0, , cookie, , 局提交协议头, , , , , , , , , , , 局结果, , , , )
局_结果 = 网页GZIP解压 (局结果)
局_返回 = 编码Utf8到Ansi (局结果)
返回 = 文本取出中间文本 (局返回, “<img src=#引号”, “#引号 class=”)
返回 (局
返回)

.子程序 子取头像, 文本型
.参数 参
英文ID, 文本型
.局部变量 返回信息, 文本型

返回信息 = 网页取头像1 (参英文ID)
.如果真 (返回信息 = “”)
返回信息 = 网页取头像2 (参英文ID)
.如果真结束
.如果真 (返回信息 = “”)
返回信息 = 网页取头像3 (参英文ID)
.如果真结束
.如果真 (返回信息 = “”)
返回信息 = 网页取头像4 (参英文ID)
.如果真结束

返回 (返回信息)

```

image.png

相关文章
|
19天前
|
人工智能 运维 自然语言处理
技术思辨|AI Coding:经验壁垒正在失效,工具进化重塑编程
本文探讨AI Coding对传统研发模式的影响,总结5大变化趋势。AI虽降低技术门槛,但专业性并未消失,而是向更高维度转移,如问题定义与批判性思维。高效专注、可复用性及架构设计仍为核心,全栈开发与领域专家角色并存。测试与研发左移减少信息损耗,提升效率。那10%的核心技能包括长程规划、决策制定、创造性解决问题、协作沟通及持续学习能力,是AI时代开发者的关键竞争力。最后强调“老师傅”的经验依然重要,需转变价值体现方式以适应新时代需求。
技术思辨|AI Coding:经验壁垒正在失效,工具进化重塑编程
|
12天前
|
人工智能 安全 Java
AI 播客 + AI 博客,Nacos3.0 首个线下沙龙回顾总结
本文介绍了如何利用 AI 工具高效总结线下活动内容,涵盖两种回顾形式:7 分钟音频总结与多视角文字总结,并探讨了如何通过大模型提取视频内容,助力活动复盘。
74 29
|
1天前
|
数据采集 存储 数据可视化
数据分析都要会BI?No!不是所有企业都应该上BI
BI工具已成为数据分析行业的标配,广泛应用于企业决策支持。本文深入解析了BI的重要性、演进历程,并探讨企业是否真正具备实施BI的条件,帮助读者理性评估需求,避免盲目跟风。
|
23天前
|
机器学习/深度学习 人工智能 并行计算
基于昇腾适配蛋白质序列模型ProteinMPNN
ProteinMPNN是一种基于深度学习的蛋白质序列设计模型,核心目标是解决“逆向折叠问题”(inverse folding problem),即根据给定的蛋白质三维结构,设计出能够折叠成该结构的氨基酸序列。ProteinMPNN在计算和实验测试中都有出色的性能表现,不同位置的氨基酸序列可以在单链或多链之间偶联,从而广泛的应用于当前蛋白质设计上。ProteinMPNN不仅在天然蛋白质序列恢复率上面性能要高于传统的Rosetta方法,并且可以恢复先前设计失败的蛋白质。通过前沿AI技术突破科学研究的效率瓶颈,对于蛋白质工程、药物设计、酶设计等领域有极其重要的意义。
基于昇腾适配蛋白质序列模型ProteinMPNN
|
23天前
|
人工智能 移动开发 JavaScript
AI + 低代码技术揭秘(一):概述
VTJ.PRO 是一个基于 AI 的 Vue3 低代码开发平台,支持 Vue 单文件组件(SFC)与领域特定语言(DSL)之间的双向转换。它构建于 monorepo 架构之上,提供同步版本控制和全面的软件包生态系统,涵盖可视化设计、代码生成及多平台部署功能,同时兼容现有 Vue 3 工作流。平台特点包括双向代码流、AI 集成、Vue 3 基础支持、多平台适配以及低学习门槛等。通过模块化架构与智能工具,VTJ 加速开发流程并保持灵活性,适用于 Web、移动及跨平台项目。当前版本为 0.12.40,源码托管于 Gitee。
70 8
AI + 低代码技术揭秘(一):概述
|
12天前
|
监控 前端开发 JavaScript
HarmonyOSNext 崩溃急救指南:全局监听+同步退出 = 优雅保命!
本文介绍了HarmonyOS Next中Ark Ts的错误管理技巧,通过全局监听和同步退出机制实现应用崩溃保护。涵盖单线程、Promise及主线程卡死监控方案,并提供实战代码与避坑指南,帮助开发者优雅处理异常,保障用户体验。
122 65
|
22天前
|
缓存 Java 索引
2025 年 Java 面试必备最常见 200 + 面试题及答案解析
这是一份针对Java面试的综合技术方案与应用实例文档,涵盖Java基础(JDK/JRE、字符串、IO流)、容器(ArrayList/LinkedList、HashMap)、多线程(线程创建、同步、线程池)、数据库(MySQL索引、Redis缓存穿透)及Spring框架(IOC容器、热部署)等核心模块。通过详细解析常见面试题,帮助读者深入理解并掌握Java核心技术,为应对面试提供全面指导。此外,还涉及反射、设计模式、JVM调优等进阶内容,助力开发者全面提升技能。代码示例可从提供的链接下载。
104 6
|
12天前
|
存储 运维 JavaScript
《HarmonyOSNext应用崩溃自救指南:零数据丢失的故障恢复黑科技》
本文详解HarmonyOS Next应用崩溃时如何实现零数据丢失的故障恢复机制,涵盖API差异、核心接口与实战代码,助开发者提升App稳定性和用户体验。
123 65