抖音直播间弹幕采集软件,可提取UID抖音号安全码礼物评论,易语言源码分享

发布时间 2023-11-14 21:21:55作者: 新壳软件

用精易浏览器的接口开发的,易语言源码,但是支持匿名数据采集,比较稳定,源码下面会分享,包括接口,需要具备一定的技术才能整合哈。

下面是采集效果图:【我只是把功能做出来了,但是界面比较丑】

 

下面是核心代码易语言【程序集】:

================================================

.版本 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], 到整数 (&接收回调函数地址))

.如果真结束

 

===============================================

下面是核心代码易语言【程序集】:

================================================

.版本 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], 到整数 (&接收回调函数地址))

.如果真结束

 

===============================================