hse365平台-mobile365官网是多少-英国365网站最近怎么了

斗鱼直播直播间没宝箱?

斗鱼直播直播间没宝箱?

一、斗鱼直播直播间没宝箱?如果在斗鱼直播中的直播间中你发现没有宝箱,可能有以下几种情况:

1. 主播并没有开启“开启宝箱”功能,你可以在直播间的信息栏或主播的个人主页中查看相关信息。如果主播开启了宝箱功能,那么相应的宝箱图标会出现在直播间的左下角。

2. 主播可能已经领取了所有宝箱奖励,或者宝箱奖励已经被其它观众领取。一般而言,斗鱼直播的宝箱在打开后只能领取一次,如果已经被领取则需要等待宝箱的下一次开启。

3. 当前宝箱可能已经过期,宝箱到期后主播需要手动重新开启开启。你可以在直播间的信息栏或主播的个人主页中查看宝箱有效期,或者向主播咨询。

需要注意的是,斗鱼直播中的宝箱领取以及奖励设置都属于直播间运营方案中的一种形式,宝箱权益可能在不同直播间之间存在差异。

二、斗鱼直播怎么注销直播间?1 斗鱼直播可以注销直播间。2 用户可以在直播内点击右上角的“设置”图标,选择“管理直播间”,在弹出的窗口中选择“注销直播间”,确认后即可完成注销操作。3 注销直播间后,原本的直播间信息和粉丝会被清空,不可恢复,需要谨慎操作。

三、lol小马为什么不直播?因为一些工作需求的原因,所以PDD也是让小马退出了直播这个行业,让小马担任起了自己的YM战队的经理的职位。就在前一段时间当中PDD曾经在直播当中说过自己有可能让小马回来直播,但是一切的决定都是要让小马自己来决定,所以这次PDD向观众们带来了小马不会回来直播的消息,并且跟观众们解释道小马当战队经理比做直播赚的钱要多得多

四、lol小马为啥不直播了?小马是大主播pdd旗下的人,是一位主玩上单的高分主播,而之所以他后来不直播,是因为他升官了,pdd让他担任自己战队ym战队经理的职务!

五、在斗鱼直播美服lol是否有劣势?大多数人愿意看韩服直播。 dopa,the shy。

甚至丑开骚猪。 仔细一想,dopa被称为和faker 55开的路人王 而the shy是韩服第一锐雯 豹女

丑开骚猪前职业选手,这群实力派选手(尽管我将骚猪丑开当娱乐看)在韩服直播的确很火。

在国服也有直播很火的 例如 文森特、骚男等

而作为LOL玩家之前有幸看到了腐肉根的直播。

而在中国大陆甚至港台地区,直播平台发展迅速。从当时的虎牙到熊猫. 直播不会像原先一样,无人问津。

尽管直播之路很困难,但是在大陆 如同手游一样.

pc、主机平台即使是多么爆炸,4K VR,甚至还不如手中一个小手机加上一个知乎

在现在大陆下,大多数人愿意回家一个葛优躺,抱着手机进被窝。 所以直播在中国不像以前了,日益壮大。

所以我想表达的观点是,如果有足够的技术,或者足够的幽默感、反应力,那么可能直播不仅仅是国服玩家,还有可能吸引欧美爱好者的观看。

而且现在韩服 国服直播烂大街了,如果欧美直播,甚至还能开拓欧美直播的热潮?!

至少我对欧美直播,表示十分期望。 欧美直播对我来说,可能还要比韩服更具活力。

六、怎么在斗鱼直播LOL?首先下载直播的软件:

要直播lol,直播的软件是肯定要安装的。不同的直播网站也许有不同的自己研发的直播软件,不过还是建议大家下载OBS,一方面是稳定,一方面不同的网站可以通用。

检查电脑的配置:

LOL属于比较大型的游戏了,特别是开了特效之后,配置比较低的电脑就会有卡顿,所以在打算直播之前,先检查一下自己电脑的配置,可以考虑一下是不是要升级。

安装lol的游戏程序:

这点相信大家都可以不用做了,打算直播lol的人,应该是lol的忠实玩家,每天都有进行游戏,如果需要安装的话,建议大家放在空间比较大的磁盘。

准备摄像头和麦克风:

要直播麦克风是肯定需要的,要讲嘛,要和观众去交流,特别是LOL,要讲解这个英雄 心得,以及玩法。至于摄像头是可以有可以没有的,有的话,也许过来看的观众会多一些。

足够的带宽:

刚刚讲到直播lol因为游戏的特效等原因,需要比较高的电脑配置,而观众在观看你的视频的时候,出现卡顿,那就是你网络的问题了,一般来讲直播lol至少需要几十兆的带宽网速。

对直播软件进行设置:

下载了OBS之后,我们需要对直播软件进行设置,根据带宽来调整参数,抓取的窗口可以选择从游戏抓取,或者直接抓取电脑屏幕也是可以的,不在直播的时候进行私人的聊天就可以了。

有直播的房间(资格)和稳定的直播时间:

电脑和网络都搞定了,直播的软件也设置好了,lol的游戏和账号也准备就绪,接下来就剩下直播间了,点击直播间进行设置,然后就可以开播了,记得每天挤出一点时间来哦,稳定的直播时间,可以快速的积累你的粉丝哦。

七、如何获取斗鱼直播间的弹幕信息?Update 20160609 : 更新Python客户端,修复由于斗鱼网页版面修改带来的小问题,直接开启海量弹幕模式(请大家不要问我为什么端午节这一天为什么闲着没事更新代码,这个真的和情人节是同一个原因). GitHub - twocucao/danmu.fm: douyutv danmu 斗鱼TV 弹幕助手

Update 20160220 : 更新Python客户端,增加直播视频的Live获取,以及Mac平台下面的Mplayer的视频播放.代码均放在Github上面. GitHub - twocucao/danmu.fm: douyutv danmu 斗鱼TV 弹幕助手

Update 20160214 : 更新Python和Ruby客户端(请大家不要问我为什么情人节这一天为什么闲着没事更新代码)

由于zhihu没有法子贴动态图,那只好移步到我的博客一看了.(看博客之前记得点赞╮(╯_╰)╭)

Python程序员如何优雅的看斗鱼TV===================优雅的看斗鱼TV的分割线==================================

-1.如果不想看长文,直接使用.则在安装好Python3或者Ruby2.0以上版本.#安装Python客户端

pip3 install danmu.fm

# 比如主播的直播间

danmu.fm http://www.douyutv.com/16789

#或者

danmu.fm 16789

#安装Ruby客户端

gem install danmu

#使用

danmu douyu [room_id/url]

#比如

danmu douyu qiuri

danmu douyu http://www.douyutv.com/13861就可以看到如下结果咯

0.前言

前几天(寒假前咯)闲着无聊,看到舍友们都在看斗鱼TV,虽然我对那些网络游戏都不是非常感兴趣,但是我突然间想到,如果我可以获取上面的弹幕内容,不就有点意思了么?

1.分析阶段

如果我想要抓取网页上面的东西,无非就是两种方法

使用浏览器,手工(自己点击)或者非手工(使用JS脚本),存取我想要的东西。编写HTTP客户端(斗鱼无HTTPS通讯)第一种方法是万能的,但显然是不行的, 原因如下:

手动保存实在是不可行,程序员不为也。浏览器与本地交互有限,换而言之,也就是即使我抓取了对应的弹幕,我也没有办法解决持久化的问题。假设你选择的是Chrome或者firefox浏览器,也不是不能实现持久化,但这需要写扩展,Chrome扩展没有写过,也不是很感兴趣。第二种方法显然是一个正常的程序员的做法。

语言选用Ruby

写一个客户端,也就是写一个小爬虫,使用的场景:

用户在终端执行命令

gem install danmu

danmu douyu [room_id/url]

#比如

danmu douyu qiuri

danmu douyu http://www.douyutv.com/13861然后就可以在终端欣赏弹幕咯.

回想一下抓取网站的方法

四步走:请求网页(原始数据) - 提取数据(提纯数据) - 保存数据 - 分析数据

很显然,只要解决了请求网页,其他的也就无非解析和SQL语句什么的。

1.1.斗鱼TV弹幕抓取的思路确定

如果是像我上面说的那么简单,也就不必再写一篇文章。毕竟,网页小爬虫没有什么技术含量。分布式爬虫才有。

通常情况下的网页小爬虫无非要解决如下问题:

请求,如果对方有一定策略的反爬虫,那需要反反爬虫。比如,

header带上host,带上refer,带上其他需要验证,那就申请用户名和密码,然后登陆如果在登录时期有防跨站机制,那就先获取一次登录页面,然后解析出token,带上对应的token然后登陆。在程序中加入Log,并且存到本地。防止出现各种各样的反爬虫机制ban掉了程序,从而方便进行下一步防反爬虫对策。并且,由于请求响应机制的存在,通常情况下,每一个请求对应一个响应,如果出错了,要么超时,要么有状态码,所以普通的web爬虫也相对而言比较容易些。

那么,斗鱼TV的站点是不是这样子的就能够容易爬取呢?

你猜到了,答案是“不是”。

由于弹幕具有实时性,就决定了斗鱼TV的弹幕无法通过保存完整指定时间端弹幕的XML(比如BILIBILI的一个视频弹幕是存在一段xml中的)或者Json数据来显示弹幕。要不然的话,那主播操作很出色的时候,观众的弹幕岂不是无法实时显示了么?

那么,肯定就是WebSocket了,于是,我一如既往的打开F12,查看网络流量。

正如你想到的那样,没有任何的弹幕流量来往。一个WebSocket的消息都没有。

那么,消息肯定是有的,但是消息并不是通过HTTP协议或者WebSocket协议传输的,那么问题会出在哪呢?

分析前端的代码,找出获取弹幕的JS代码,苦于代码太多,找了很久没有找到。那也就是执行逻辑可能在flash里面。

于是祭出大杀器WireShark,抓一下流量。终于看到弹幕的样子了。

是这样的。

原来使用的是Flash的Socket功能。

那么,我们只需要模拟Socket的每一条消息就好了.

多分析几组数据,但还是对发送消息内容缺乏把握,特别是在用户认证,用户接收弹幕这一块。在搜索引擎上搜索了一阵,发现知乎上有个帖子,读完终于解了我的疑惑。

地址为: 如何获取斗鱼直播间的弹幕信息? - Python

在此基础上,省略若干消息分析过程。

总结后得出斗鱼TV网站的服务器分布。

1.2.房间信息和弹幕认证服务器获取

首先我们拿随便一个主播房间来说,比如,qiuri

Ta的房间链接分为两种

直播互动赢点卡 暴雪游戏闹新春http://www.douyutv.com/id][房间对这个主播房间页面请求,正常,所有的有用信息都不是放在HTML中渲染出来,而是有一条放在HTML中内置的JS脚本中,这是为了减少服务器渲染HTML的压力?可是渲染放在JS里面不也一样需要渲染?(不明白)总之,就是程序先加载没有具体数据填充页面,然后JS更新数据。

内置的两段JS脚本,JS脚本中有两个变量,该变量很容易转换成JSON数据,也就是两段JSON数据,一个是关于主播的个人信息,另一个是关于弹幕认证服务器的列表(该列表中的任意一个服务器均可以认证,但每一次请求主播页面得到的认证服务器列表都不一样)

通过这步,我们就拿到了主播的信息以及弹幕服务器的认证地址,端口。

1.3.发送Socket消息的流程简介

我们通过抓包,分析那一大坨数据包,可以确定以下通过以下的流程便可以获取弹幕消息。(分析过程比较繁琐)

首先建立两个Socket。一个用于认证(@danmu_auth_socket),另一个用户获取弹幕(@danmu_client)。

步骤1: @danmu_auth_socket 发送消息登陆,获取消息1解析出匿名用户的用户名,再获取消息2解析出gid步骤2: @danmu_auth_socket 发送qrl消息,获取两个没有什么用的消息步骤3: @danmu_auth_socket 发送keeplive消息步骤4: @danmu_socket 发送伪登陆消息(所有匿名用户都一样只需要输入步骤一中用户名就行了,因为认证已经在上面做过了)步骤5: @danmu_socket 发送join_group消息需要步骤一中国的gid步骤6: @danmu_socket 不断的recv消息就可以获取弹幕消息了后面会详细解释

2.1.消息Socket消息格式以及发送一条消息

既然是发消息,那么每条消息总是有些格式的。

斗鱼的消息格式大致如下:

每一条消息并遵循下面的格式:

1.通信协议长度,后四个部分的长度,四个字节2.第二部分与第一部分一样3.请求代码,发送给斗鱼的话,内容为0xb1,0x02, 斗鱼返回的代码为0xb2,0x024.发送内容5.末尾字节

# -*- encoding : utf-8 -*-

class Message

# 向斗鱼发送的消息

# 1.通信协议长度,后四个部分的长度,四个字节

# 2.第二部分与第一部分一样

# 3.请求代码,发送给斗鱼的话,内容为0xb1,0x02, 斗鱼返回的代码为0xb2,0x02

# 4.发送内容

# 5.末尾字节

#pack('c*')是字节数组转字符串的一种诡异的转化方式

def initialize(content)

@length = [content.size + 9,0x00,0x00,0x00].pack('c*')

@code = @length.dup

@magic = [0xb1,0x02,0x00,0x00].pack('c*')

@content = content

@end = [0x00].pack('c*')

end

def to_s

@length + @code + @magic + @content + @end

end

end经过封装,我们仅仅关注那些可见的字符串,也就是Content部分就可以了。content部分,也就是发送消息的内容,在文章后面将会详解。

开启两个Socket,一个用户认证,另一个用于弹幕的获取。

用于用户弹幕认证的,是2.1中所说的认证服务器列表中任意一个。挑选出来一组ip和端口

@danmu_auth_socket = TCPSocket.new @auth_dst_ip,@auth_dst_port

用户获取弹幕的只要为

danmu.douyutv.com:8601

danmu.douyutv.com:8602

danmu.douyutv.com:12601

danmu.douyutv.com:12602四组域名:端口均可以作为如下的DANMU_SERVER和PORT

@danmu_socket = TCPSocket.new DANMU_SERVER,DANMU_PORT

发送一条消息只需如此

data = "type@=loginreq/username@="+@username+"/password@=1234567890123456/roomid@=" + @room_id.to_s + "/"

all_data = message(data)

@danmu_socket.write all_data把需要传输的字符串放进去就好了.

接下来,我们需处理上面说的六个步骤

2.2.发送消息详细流程之步骤一

发送消息内容为:

type@=loginreq/username@=/ct@=0/password@=/roomid@=156277/devid@=DF9E4515E0EE766B39F8D8A2E928BB7C/rt@=1453795822/vk@=4fc6e613fc650a058757331ed6c8a619/ver@=20150929/

我们需要注意的内容如下:

type 表示消息的类型登陆消息为loginreq

username 不需要,请求登陆以后系统会自动的返回对应的游客账号。

ct 不清楚什么意思,默认为0并无影响

password 不需要

roomid 房间的id

devid 为设备标识,无所谓,所以我们使用随机的UUID生成

rt 应该是runtime吧,时间戳

vk 为时间戳+"7oE9nPEG9xXV69phU31FYCLUagKeYtsF"+devid的字符串拼接结果的MD5值(这个是参考了一篇文章,关于这一处我也不大明白怎么探究出来的)

ver 默认通过这一步,我们可以获取两条消息,并从消息中使用正则表达式获取对应的用户名以及gid

str = @danmu_auth_socket.recv(4000)

@username= str[/\/username@=(.+)\/nickname/,1]

str = @danmu_auth_socket.recv(4000)

@gid = str[/\/gid@=(\d+)\//,1]2.3.发送消息详细流程之步骤二

发送的消息内容为

"type@=qrl/rid@=" + @room_id.to_s + "/"

无需多说,类型为qrl,rid为roomid,直接发送这条消息就好。返回的两条消息也没有什么价值。

data = "type@=qrl/rid@=" + @room_id.to_s + "/"

msg = message(data)

@danmu_auth_socket.write msg

str = @danmu_auth_socket.recv(4000)

str = @danmu_auth_socket.recv(4000)2.4.发送消息详细流程之步骤三

发送的消息内容为

"type@=keeplive/tick@=" + timestamp + "/vbw@=0/k@=19beba41da8ac2b4c7895a66cab81e23/"

直接发送。无太大意义。

data = "type@=keeplive/tick@=" + timestamp + "/vbw@=0/k@=19beba41da8ac2b4c7895a66cab81e23/"

msg = message(data)

@danmu_auth_socket.write msg

str = @danmu_auth_socket.recv(4000)前三步,也就是2.2-2.3-2.4三步骤,也就是使用@danmu_auth_socket 完成获取username和gid的重要步骤。获取这两个字段以后,也就完成了它存在的使命。

接下来的就是@danmu_socket获取弹幕的时候了!

2.5.发送消息详细流程之步骤四

消息内容为:"type@=loginreq/username@="+@username+"/password@=1234567890123456/roomid@=" +@room_id.to_s + "/"

和上面2.2中略有不同。但是,需要注意的是

username 为2.2中所得到的username

password 的值得变化 data = "type@=loginreq/username@="+@username+"/password@=1234567890123456/roomid@=" + @room_id.to_s + "/"

all_data = message(data)

@danmu_socket.write all_data

str = @danmu_socket.recv(4000)2.6.发送消息详细流程之步骤五

接下来就是完成认证的最后一步了,join_group的消息内容为

"type@=joingroup/rid@=" + @room_id.to_s + "/gid@="+@gid+"/"

gid为2.2中所得到的gid。

data = "type@=joingroup/rid@=" + @room_id.to_s + "/gid@="+@gid+"/"

msg = message(data)

@danmu_socket.write msg2.7.发送消息详细流程之步骤六

获取弹幕,并且打印出来。

danmu_data = @danmu_socket.recv(4000)

type = danmu_data[danmu_data.index("type@=")..-3]

puts type.gsub('sui','').gsub('@S','/').gsub('@A=',':').gsub('@=',':').split('/')后三步,则是@danmu_socket 获取弹幕的步骤。

于是,通过这些步骤,就可以完成了简单的danmu的核心代码,接下来的步骤就是完善,重构这些代码了。

总结痛点一,至今还没有解决rtmp地址的获取

找了很久没有办法解决rtmp地址的自动获取:

路径如下

http://www.douyutv.com/swf_api/room/301712?cdn=&nofan=yes&_t=24243097&sign=3b2efb130cb25a85e621f477f95c7341

这一处的请求不是XHR,也就是不是JS脚本通过XMLHttpRequest异步加载;那么,八成是flash通过http协议获取的。我估计八成执行逻辑应该是在flash之中。也就不方便获取其中的sign值.故,暂时无法解析rtmp视频流地址了

效果图和代码

效果图:

我擦,居然不能传输gif图片.

请移步到这里查看吧.

记一次斗鱼TV弹幕爬虫经历(Ruby版本)代码的地址为:

GitHub - twocucao/danmu: douyutv弹幕助手

技术浅薄,还请轻拍。

参考链接

PS:如果有问题可以在下方留言或者发送email到twocucao@gmail.com给我。

八、斗鱼直播间怎么踢人?直播间没有踢人的功能,但是如果直播间内有人传播不良信息的话,房管是可以将此人禁言。

九、斗鱼怎么分享直播间?点击直播间的右上角的分享就可以了

十、斗鱼直播间是什么?斗鱼直播间就是给网民看的直播平台,有游戏,唱歌,跳舞等等