[图文]易语言连接斗鱼弹幕服务器.抓取弹幕
实在不会录视频我一录视频.就不怎么会说话了.所以咱还是图文吧
斗鱼已经开放了第三方协议
终于不用去自己抓包 分析
虽然前人已经分析完毕了...
不过.要移植起来.还是很麻烦的
我先用的C++写了一次
然后用python写了一次
这次.用易语言试了一次...感觉比C++简单.但不如python方便吧 不过两者其实差不多
关于斗鱼第三方协yi的下载地址:http://dev-bbs.douyutv.com/forum.php
首先.你得知道什么是TCP协议
如果不会.自行百度补课吧
我的教程从来都不是给初学者看的
都是给进阶看的
关于易语言SOCKET编程的教程.真的太少
后面就只管取回就行了
完整代码如下
.版本 2
.支持库 spec
.支持库 iconv
.程序集 窗口程序集_启动窗口
.程序集变量 信息长度, 整数型
.程序集变量 消息类型, 短整数型
.程序集变量 保留字段1, 字节型
.程序集变量 保留字段2, 字节型
.程序集变量 内容, 文本型
.程序集变量 发送数据, 字节集
.子程序 __启动窗口_创建完毕
调试输出 (客户1.连接 (“123.150.206.162”, 8601))
消息类型 = 689
保留字段1 = 0
保留字段2 = 0
内容 = “type@=loginreq/roomid@=584854/”
信息长度 = 取文本长度 (内容) + 4 + 2 + 1 + 1 + 1
发送数据 = 到字节集 (信息长度) + 到字节集 (信息长度) + 到字节集 (消息类型) + 到字节集 (保留字段1) + 到字节集 (保留字段2) + 到字节集 (内容) + { 0 }
客户1.发送数据 (发送数据)
消息类型 = 689
保留字段1 = 0
保留字段2 = 0
内容 = “type@=joingroup/rid@=584854/gid@=-9999/”
信息长度 = 取文本长度 (内容) + 4 + 2 + 1 + 1 + 1
发送数据 = 到字节集 (信息长度) + 到字节集 (信息长度) + 到字节集 (消息类型) + 到字节集 (保留字段1) + 到字节集 (保留字段2) + 到字节集 (内容) + { 0 }
客户1.发送数据 (发送数据)
.子程序 _客户1_数据到达
.局部变量 a, 字节集
.局部变量 b, 文本型
a = 客户1.取回数据 ()
b = CG编码转换 (到文本 (取字节集中间 (a, 13, 取字节集长度 (a) - 13)), #编码_GBK, #编码_UTF_8)
调试输出 (b)
OK 教程到此结束
有问题 直接回复我即可
那也就说.翻译过来
消息长度---整数型
消息类型---短整数型
加密字段---字节型
保留字段---字节型
内容---文本型即可
那接下来就好说了
动手写即可
易语言写TCP socket相当简单
因为易语言提供了一个客户端的组件
只需要这个组件
什么模块 其他支持库 都通通靠边站吧
然后我们连接斗鱼弹幕服务器
然后发送协议中的数据
.版本 2
.支持库 spec
调试输出 (客户1.连接 (“123.150.206.162”, 8601))
消息类型 = 689
保留字段1 = 0
保留字段2 = 0
内容 = “type@=loginreq/roomid@=584854/”
信息长度 = 取文本长度 (内容) + 4 + 2 + 1 + 1 + 1
发送数据 = 到字节集 (信息长度) + 到字节集 (信息长度) + 到字节集 (消息类型) + 到字节集 (保留字段1) + 到字节集 (保留字段2) + 到字节集 (内容) + { 0 }
客户1.发送数据 (发送数据)
前3个字段就不解释了
至于内容.用字节集 或者文本型 都可以的 这个随意
然后是消息长度
也就是取内容的长度+4(长度本身)+2(消息类型)+1+1(2个保留的字段)
这个就是消息的长度了
然后就是到字节集拼接字符串
但是消息长度中.我加了3次1
然后在最后+了一个{0}
是因为这个
用C++写的时候.char型数组 结尾是'\0'
但是易语言不是.也可能是.但是谁知道呢?至少到字节集后 一定不是
所以只能自己手动+1 然后加{0}
最后.就是发送数据了
是需要发送的内容.首先发一个登陆请求过去 roomid就是房间号
返回结果如下
* 真
* “type@=loginres/userid@=0/roomgroup@=0/pg@=0/sessionid@=0/username@=/nickname@=/live_stat@=0/is_illegal@=0/ill_ct@=/ill_ts@=0/now@=0/ps@=0/es@=0/it@=0/its@=0/npv@=0/best_dlev@=0/cur_lev@=0/nrc@=3471427501/sid@=70103/”
被调试易程序运行完毕
在第三方协议中.已经申明了返回数据内容
实际上 我们接受的数据 是这样的
{224,0,0,0,224,0,0,0,178,2,0,0,116,121,112,101,64,61,108,111,103,105,110,114,101,115,47,117,115,101,114,105,100,64,61,48,47,114,111,111,109,103,114,111,117,112,64,61,48,47,112,103,64,61,48,47,115,101,115,115,105,111,110,105,100,64,61,48,47,117,115,101,114,110,97,109,101,64,61,47,110,105,99,107,110,97,109,101,64,61,47,108,105,118,101,95,115,116,97,116,64,61,48,47,105,115,95,105,108,108,101,103,97,108,64,61,48,47,105,108,108,95,99,116,64,61,47,105,108,108,95,116,115,64,61,48,47,110,111,119,64,61,48,47,112,115,64,61,48,47,101,115,64,61,48,47,105,116,64,61,48,47,105,116,115,64,61,48,47,110,112,118,64,61,48,47,98,101,115,116,95,100,108,101,118,64,61,48,47,99,117,114,95,108,101,118,64,61,48,47,110,114,99,64,61,51,52,55,49,52,50,55,53,48,49,47,115,105,100,64,61,55,48,49,48,51,47,0}
我们先来分析下发送返回的数据
224,0,0,0 对应长度 出现2次 4个字节
178,2 发送的数据 是177,2 正好符合斗鱼协yi的消息类型
0,0 刚好符合2个保留字段 各占一个字节
剩下的就是内容了
我之前在CSDN写过一篇关于C++.python如何抓取斗鱼弹幕的教程
这次换成易语言了
先看看斗鱼第三方协议的内容吧
1个字节为8位 一个字为2个字节 自行百度汇编语言
长度.4个字节 对应Int(出现2次)
消息类型.2个字节.对应short
加密字段.1个字节.对应char
保留字段.1个字节.对应char
然后就是数据内容部分了
我从CSDN找到一张图 关于易语言数据类型尺寸
感谢感谢,谢谢楼主分享 感谢感谢,谢谢楼主分享 感谢分享!! 太棒了,感谢楼主,Mrak一下 感谢感谢,谢谢楼主分享
页:
[1]
2