接口什么都是对接易语言的,易语言源码,然后最主要它不调用本地浏览器,所以说你有技术基础的话可以实现多线程采集的效果,我这个仅仅只是源码,多余功能就没有了,当然支持匿名奥。
框架设计图:
采集效果图:
易语言源码:【核心代码】
===================================================
.版本 2
.支持库 EThread
.支持库 spec
.程序集 窗口程序集_窗口1, , , 744894369
.子程序 _窗口1_创建完毕
.局部变量 pe, 整数型
模块初始化_421 ()
客户端_全局初始化 (真)
客户端_全局绑定事件 (&WS连接成功, &WS将被断开, &WS消息到达, &WS连接错误)
.子程序 WS连接成功, 整数型
.参数 连接ID, 整数型, , 连接ID
id = 连接ID
输出调试文本 (“WS连接事件: ” + 到文本 (连接ID))
启动线程 (&hear, , )
返回 (0)
.子程序 WS将被断开, 整数型
.参数 连接ID, 整数型, , 连接ID
.参数 错误类型, 整数型, , enOperation(#SO_ 开头常量)
.参数 错误代码, 整数型
调试输出 (“WS断开事件: ” + 到文本 (连接ID), 错误类型, 错误代码)
返回 (#HR_OK)
.子程序 WS连接错误, 整数型
.参数 连接ID, 整数型
.参数 iErrorCode, 整数型
.参数 lpszErrorDesc, 文本型
调试输出 (“WS连接错误: ” + 到文本 (连接ID), iErrorCode, lpszErrorDesc)
返回 (#HR_OK)
.子程序 WS消息到达, 整数型
.参数 连接ID, 整数型, , 连接ID
.参数 数据指针, 整数型, , 这里的 数据指针 只能使用 客户端_取回文本 客户端_取回数据
.参数 数据长度, 整数型, , 使用 指针到字节集会崩溃哦
.局部变量 操作码, 字节型, , , 操作码:0x0 - 0xF (0=连续消息分片 1=文本消息分片 2=二进制消息分片 8=连接关闭 9=心跳Ping 10=心跳Pong)
.局部变量 str, 文本型
.局部变量 bin, 字节集
.局部变量 掩码, 整数型
.局部变量 rsv, 字节型
.局部变量 jsonData, 文本型
.局部变量 json, 类_json
.局部变量 max, 整数型
.局部变量 i, 整数型
.局部变量 t, 文本型
客户端_取回消息状态 (连接ID, , rsv, 操作码, 掩码, )
.判断开始 (操作码 = 2)
bin = 客户端_取回数据 (数据指针, 数据长度)
bin = 取字节集右边 (bin, 取字节集长度 (bin) - 寻找字节集 (bin, { 31, 139, 8, 0, 0, 0, 0, 0, 0 }, ) + 1)
bin = 网页_GZIP解压 (bin)
jsonData = 编码_utf8到gb2312 (PB转JSON (bin))
json.解析 (jsonData)
max = json.成员数 (“”)
.计次循环首 (max, i)
t = 到文本 (i - 1)
.如果真 (json.取通用属性 (“[” + t + “].value[0].value”) = “WebcastChatMessage”)
调试输出 (json.取通用属性 (“[” + t + “].value[1].value[1].value[2].note”), json.取通用属性 (“[” + t + “].value[1].value[2].note”))
编辑框2.加入文本 (json.取通用属性 (“[” + t + “].value[1].value[1].value[2].note”), json.取通用属性 (“[” + t + “].value[1].value[2].note”) + #换行符)
.如果真结束
.计次循环尾 ()
.判断 (操作码 = 8)
返回 (#HR_ERROR) ' 断开
.判断 (操作码 = 9)
返回 (#HR_IGNORE)
.默认
.判断结束
返回 (#HR_OK)
.子程序 PB转JSON, 文本型, 公开
.参数 PB数据, 字节集
.局部变量 p, 整数型
.局部变量 s, 文本型
p = PbToJson (PB数据, 取字节集长度 (PB数据))
s = 指针到文本 (p)
Cfree (p)
返回 (s)
.子程序 字节集倒序, 字节集
.参数 bin, 字节集
.局部变量 bin1, 字节集
.局部变量 x, 整数型
.局部变量 max, 整数型
bin1 = bin
max = 取字节集长度 (bin)
.计次循环首 (max, x)
bin1 [x] = bin [max - x + 1]
.计次循环尾 ()
返回 (bin1)
.子程序 JSON转PB, 字节集, 公开
.参数 PB数据, 文本型
.局部变量 p, 整数型
.局部变量 len, 整数型
.局部变量 bin, 字节集
len = 取文本长度 (PB数据)
p = JsonToPB (PB数据, len)
.如果真 (p = 0)
返回 ({ })
.如果真结束
bin = 字节集倒序 (指针到字节集 (p, 8))
len = 取字节集数据 (bin, #长整数型, )
返回 (指针到字节集 (p + 8, len))
.子程序 _按钮2_被单击
.局部变量 bool, 逻辑型
.局部变量 erro, 文本型
.局部变量 ret, 文本型
.局部变量 wss, 文本型
ret = 编码_Utf8到Ansi (网页_访问 (编辑框1.内容)) ' 交流群:744894369
wss = Get_Wss (ret)
id = 客户端_连接 (wss, q_ck, , , , erro)
.如果真 (id = 0)
输出调试文本 (“连接失败”, erro)
返回 ()
.如果真结束
输出调试文本 (“连接成功: ” + 到文本 (id))
.子程序 hear
.局部变量 a, 整数型
.计次循环首 (99999999, a)
程序_延时 (10 × 1000)
客户端_发送消息体数据 (id, 编码_BASE64解码 (“OgJoYg==”, ))
.计次循环尾 ()
=====================================================
标签:bin,局部变量,字节,接口协议,整数型,连接,源码,文本,截流 From: https://blog.51cto.com/u_16349335/8378698