用精易浏览器的接口开发的,易语言源码,但是支持匿名数据采集,比较稳定,源码下面会分享,包括接口,需要具备一定的技术才能整合哈。
下面是采集效果图:【我只是把功能做出来了,但是界面比较丑】
下面是核心代码易语言【程序集】:
================================================
.版本 2
.支持库 spec
.支持库 EThread
.支持库 e2ee
.程序集 窗口程序集_启动窗口
.程序集变量 浏览框, Edge浏览框
.程序集变量 框架, Edge页面框架
.程序集变量 参数, Edge参数
.程序集变量 cookies, 文本型
.程序集变量 URL, 文本型
.程序集变量 集_验证码初始化, 逻辑型
.子程序 __启动窗口_创建完毕
.局部变量 默认配置地址, 文本型
URL = “https://live.douyin.com/”
参数.无痕模式 = 真
参数.缓存目录 = 取运行目录 () + “\cache”
' 参数.弹出窗口模式 = 1
WebView2_全局初始化 ()
WebView2_添加拦截资源 (URL + “*”, “Request”)
' WebView2_添加拦截资源 (URL + “*”, “Response”)
.如果真 (WebView2_创建 (浏览框, 画板1.取窗口句柄 (), URL, 参数))
调试输出 (“创建成功”)
.如果真结束
.子程序 _取框架选择器, 框架选择器
.局部变量 框架, 框架选择器
框架.二级框架选择器 = “”
返回 (框架)
.子程序 _按钮1_被单击
.局部变量 t, 逻辑型
t = 浏览框.WebSocket接管_开启 (, , )
启动线程 (&线程启动websocket, , )
.如果真 (t)
列表框2.插入项目 (0, “websocket已完成接管!”, )
.如果真结束
浏览框.刷新网页 ()
' 浏览框.访问网页 (“https://live.douyin.com/812195156626”)
.子程序 线程启动websocket
.局部变量 websocket_ids, 整数型, , "0"
浏览框.事件_载入完毕 (到整数 (&载入直播完毕))
.子程序 接收回调函数地址
.参数 edge浏览框指针, 整数型
.参数 函数名称, 文本型
.参数 参数1, 文本型
.局部变量 json, 类_json
.局部变量 res, 文本型
.局部变量 json1, 类_json
.局部变量 ret, 文本型
.局部变量 特征码, 文本型
.局部变量 len, 整数型
.局部变量 txt, 文本型
.局部变量 data, 字节集
.局部变量 n, 整数型
.局部变量 i, 整数型
.局部变量 msg, 文本型
.局部变量 json2, 类_json
json.解析 (参数1)
res = 字节集_字节集到十六进制 (编码_BASE64解码 (json.取通用属性 (“data”)))
特征码 = “1F8B080”
len = 寻找文本 (res, 特征码, , 真)
txt = 取文本中间 (res, len, 取文本长度 (res) - len)
data = 字节集_十六进制到字节集 (txt)
data = GZIP解压数据 (data)
txt = 编码_utf8到gb2312 (PB转JSON (data))
' 调试输出 (txt)
置剪辑板文本 (txt)
' 调试输出 (txt)
.如果真 (json1.解析 (txt))
n = json1.成员数 ()
.计次循环首 (n, i)
msg = json1.取通用属性 (“[” + 到文本 (i - 1) + “]”, 真)
' 调试输出 (msg)
' 列表框1.插入项目 (0, msg, )
' 列表框1.置顶端可见项目 (0)
json2.解析 (msg)
.如果真 (寻找文本 (msg, “WebcastMemberMessage”, , 假) ≠ -1)
列表框1.插入项目 (0, “加入直播间:” + json2.取通用属性 (“value[1].value[1].value[2].note”), )
调试输出 (json2.取通用属性 (“value[1].value[1].value[2].note”))
.如果真结束
.如果真 (寻找文本 (msg, “WebcastGiftMessage”, , 假) ≠ -1)
列表框3.插入项目 (0, “送礼物:” + json2.取通用属性 (“value[1].value[0].value[5].note”), )
.如果真结束
.如果真 (寻找文本 (msg, “WebcastLikeMessage”, , 假) ≠ -1)
列表框3.插入项目 (0, “点赞:” + json2.取通用属性 (“value[1].value[3].value[2].note”), )
.如果真结束
.如果真 (寻找文本 (msg, “WebcastChatMessage”, , 假) ≠ -1)
列表框2.插入项目 (0, “评论:” + json2.取通用属性 (“value[1].value[2].note”), )
' 调试输出 (msg)
.如果真结束
.计次循环尾 ()
.如果真结束
.子程序 PB转JSON, 文本型, 公开
.参数 PB数据, 字节集
.局部变量 p, 整数型
.局部变量 s, 文本型
p = PbToJson (PB数据, 取字节集长度 (PB数据))
s = 指针到文本 (p)
Cfree (p)
返回 (s)
.子程序 JSON转PB, 字节集, 公开
.参数 PB数据, 文本型
.局部变量 p, 整数型
.局部变量 len, 整数型
len = 取文本长度 (PB数据)
p = JsonToPB (PB数据, len)
.如果真 (p = 0)
返回 ({ })
.如果真结束
返回 (指针到字节集 (p, len))
.子程序 载入直播完毕
.局部变量 websocket_ids, 整数型, , "0"
重定义数组 (websocket_ids, 假, 0)
浏览框.WebSocket接管_初始化 ()
浏览框.WebSocket接管_绑定 (, websocket_ids)
调试输出 (websocket_ids)
.如果真 (取数组成员数 (websocket_ids) > 0)
浏览框.WebSocket接管_拦截接收 (websocket_ids [1], 到整数 (&接收回调函数地址))
.如果真结束
===============================================
标签:websocket,局部变量,整数型,value,抖音,msg,文本,弹幕,源码 From: https://blog.51cto.com/u_16349335/8379061