一种获取弹幕的方法和相关装置与流程

文档序号:18452667发布日期:2019-08-17 01:22阅读:300来源:国知局
一种获取弹幕的方法和相关装置与流程

本申请涉及直播平台领域,尤其涉及一种获取弹幕的方法和相关装置。



背景技术:

随着网络的不断普及和发展,线上直播变的越来越受用户欢迎。观看直播的同时观看弹幕也是直播非常重要的一部分。当一个观众进入一个直播间后可以看到该直播间的所有弹幕内容。而作为直播平台,希望直播中的所有弹幕内容只有直播平台的用户通过直播平台提供的观看直播app才能进行观看。

然而,现有技术中,黑客会通过一些非法的脚本而不是通过直播app来爬取所有直播间的所有弹幕内容,以盗取直播间的所有弹幕。因此,如何更有效的防止黑客盗取直播平台的弹幕内容,以对直播平台的弹幕内容进行安全的保护,成为当前需要解决的重要问题。



技术实现要素:

本申请实施例提供了一种获取弹幕的方法和相关装置,用于保护直播平台的弹幕隐私及弹幕资源,以提高弹幕被爬取的难度。

本申请实施例的第一方面提供了一种获取弹幕的方法,包括:客户端根据当前系统时间、设备标识信息和直播间的房间号计算第一验证值;所述客户端向直播平台服务器发送http连接请求,所述http连接请求用于请求与所述直播平台服务器创建http连接,所述http连接请求包括所述第一验证值、所述当前系统时间、所述设备标识信息和所述直播间的房间号;当所述直播平台服务器验证所述http连接请求中的信息合法时,所述客户端接收所述直播平台服务器发送的http连接响应,所述http连接响应包括网关服务器的ip列表和所述直播平台服务器随机生成的密钥http_secret;所述客户端根据所述网关服务器ip列表和所述密钥http_secret,与网关服务器建立tcp连接,并接收所述网关服务器发送的tcp连接响应,所述tcp连接响应包括弹幕服务器的ip列表和所述网关服务器随机生成的密钥tcp_key;所述客户端根据所述弹幕服务器ip列表和所述密钥tcp_key连接所述弹幕服务器,并接收所述弹幕服务器发送的所述直播间对应的弹幕。

在一种可能的实施例中,所述客户端根据当前系统时间、设备标识信息和直播间的房间号计算第一验证值包括:所述客户端通过调用接口time()获取当前系统时间;所述客户端通过调用接口md4.create()加密所述当前系统时间以输出time_md4,通过调用接口sha1-256.create()加密所述设备标识信息以输出deviceid_sha,通过调用接口ripemd-256.create()加密所述房间号以输出roomid_ripemd,其中,所述接口md4.create()为信息摘要md4算法的加密接口,所述接口sha1-256.create()为安全散列sha算法的加密接口,所述接口ripemd-256.create()为ripemd算法的加密接口;所述客户端根据以下方式计算所述第一验证值:sign=md5.create(time_md4[time_no-time_length]+deviceid_sha[deviceid_no-deviceid_length]+roomid_ripemd[roomid_no-roomid_length);其中,所述sign用于表示所述第一验证值,所述time_no为所述当前系统时间的倒数第一个参数,所述time_length为所述当前系统时间的倒数第二个参数,所述deviceid_no为所述设备标识信息的第一位参数,所述deviceid_length为所述设备标识信息的倒数第二个参数,所述roomid_no为所述房间号的第三个参数,所述roomid_length为所述房间号的倒数第四个参数,所述md5.create()为所述md5算法的加密接口。

在一种可能的实施例中,所述客户端向直播平台服务器发送http连接请求包括:所述客户端通过以下加密算法对所述第一验证值、所述当前系统时间、所述设备标识信息和所述直播间的房间号进行加密:encryptdata=rc4.encrypt(current_time+deviceid+roomid+sign,key);base64_data=base64.encrypt(encryptdata);所述rc4.encrypt()为流加密算法rc4的加密接口,所述base64.encrypt()为编码格式base64算法的加密接口,所述current_time为所述当前系统时间,所述deviceid为所述设备标识信息,所述roomid为所述直播间的房间号,所述sign为所述第一验证值,所述key为所述客户端与所述直播平台服务器的共享密钥;所述客户端将携带有所述base64_data的所述http连接请求发送给所述直播平台服务器。

在一种可能的实施例中,所述客户端根据所述网关服务器ip列表和所述密钥http_secret,与网关服务器建立tcp连接包括:所述客户端通过调用接口time()获取当前系统时间;所述客户端通过调用接口sha1-256.create()加密所述当前系统时间以输出time_sha1,通过调用接口md4.create()加密所述设备标识信息以输出deviceid_md4;所述客户端通过以下方式计算第二验证值:tcp_sign=md5.create(time_sha1+deviceid_md4+http_secret);其中,所述tcp_sign表示所述第二验证值,所述md5.create()为md5算法的加密接口;所述客户端向所述网关服务器ip列表中的网关服务器发送tcp连接请求,所述tcp连接请求包括所述第二验证值、所述房间号和所述设备标识信息;当所述网关服务器验证所述tcp连接请求中的信息合法时,所述客户端与网关服务器建立所述tcp连接。

在一种可能的实施例中,所述客户端向所述网关服务器ip列表中的网关服务器发送tcp连接请求之前,所述方法还包括:所述客户端将所述tcp连接请求的包头数据的指定字段修改为非0值,其中,当所述指定字段为非0值时,用于指示所述客户端为合法客户端;当所述指定字段为全0值时,用于指示所述客户端为非法客户端。

在一种可能的实施例中,所述客户端根据所述弹幕服务器ip列表和所述密钥tcp_key连接所述弹幕服务器包括:所述客户端通过调用接口time()获取当前系统时间;所述客户端通过调用接口sha1-256.create()加密所述当前系统时间以输出time_sha2;所述客户端通过以下方式计算第三验证值:tcp_verify2=sha1-256.create(time_sha2+tcp_key);其中,所述tcp_verify2表示所述第三验证值;所述客户端将所述第三验证值发送给所述弹幕服务器ip列表中的弹幕服务器;当所述弹幕服务器验证所述第三验证值合法时,所述客户端与所述弹幕服务器建立连接,以从所述弹幕服务器获取所述直播间的弹幕。

在一种可能的实施例中,所述客户端根据所述弹幕服务器ip列表和所述密钥tcp_key连接所述弹幕服务器包括:所述客户端在连接请求中添加约定字段,所述约定字段用于指示所述客户端为合法客户端;所述客户端根据所述密钥tcp_key将所述连接请求发送给所述弹幕服务器ip列表中的弹幕服务器,以连接所述弹幕服务器来接收真实的所述直播间对应的弹幕。

本申请实施例的第二方面提供了获取弹幕的方法,包括:直播平台服务器接收客户端发送的http连接请求,所述http连接请求用于请求与所述直播平台服务器创建http连接,所述http连接请求包括第一验证值、客户端的当前系统时间、设备标识信息和直播间的房间号;所述直播平台服务器判断所述设备标识信息和所述直播间的房间是否合法,并判断所述客户端的当前时间与所述直播平台服务器的当前时间的差值是否小于预设数值;若所述设备标识信息和所述直播间的房间均合法且所述差值小于所述预设数值,则所述直播平台服务器根据所述客户端的当前系统时间、所述设备标识信息和所述直播间的房间号计算第一参考值;若所述第一参考值与所述第一验证值相等,则所述直播平台服务器随机生成密钥http_secret,并向所述客户端发送http连接响应,所述http连接响应包括所述密钥http_secret和网关服务器的ip列表,以使得所述客户端根据所述http连接响应获得所述直播间的弹幕。

本申请实施例的第三方面提供了一种客户端,包括:计算单元,用于根据当前系统时间、设备标识信息和直播间的房间号计算第一验证值;收发单元,用于向直播平台服务器发送http连接请求,所述http连接请求用于请求与所述直播平台服务器创建http连接,所述http连接请求包括所述第一验证值、所述当前系统时间、所述设备标识信息和所述直播间的房间号;所述收发单元,还用于当所述直播平台服务器验证所述http连接请求中的信息合法时,接收所述直播平台服务器发送的http连接响应,所述http连接响应包括网关服务器的ip列表和所述直播平台服务器随机生成的密钥http_secret;建立单元,用于根据所述网关服务器ip列表和所述密钥http_secret,与网关服务器建立tcp连接,并接收所述网关服务器发送的tcp连接响应,所述tcp连接响应包括弹幕服务器的ip列表和所述网关服务器随机生成的密钥tcp_key;根据所述弹幕服务器ip列表和所述密钥tcp_key连接所述弹幕服务器,并接收所述弹幕服务器发送的所述直播间对应的弹幕。

本申请实施例的第四方面提供了一种直播平台服务器,包括:收发单元,用于接收客户端发送的http连接请求,所述http连接请求用于请求与所述直播平台服务器创建http连接,所述http连接请求包括第一验证值、客户端的当前系统时间、设备标识信息和直播间的房间号;判断单元,用于判断所述设备标识信息和所述直播间的房间是否合法,并判断所述客户端的当前时间与所述直播平台服务器的当前时间的差值是否小于预设数值;计算单元,用于若所述设备标识信息和所述直播间的房间均合法且所述差值小于所述预设数值,则根据所述客户端的当前系统时间、所述设备标识信息和所述直播间的房间号计算第一参考值;所述收发单元,还用于若所述第一参考值与所述第一验证值相等,则随机生成密钥http_secret,并向所述客户端发送http连接响应,所述http连接响应包括所述密钥http_secret和网关服务器的ip列表,以使得所述客户端根据所述http连接响应获得所述直播间的弹幕。

本申请第五方面提供了一种电子设备,包括存储器、处理器,其特征在于,所述处理器用于执行存储器中存储的计算机管理类程序时实现如上述第一方面任意一项所述的验证客户端可信的方法的步骤。

本申请的第六方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

本申请的第七方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

从以上技术方案可以看出,本申请实施例具有以下优点:客户端根据当前系统时间、设备标识信息和直播间的房间号计算第一验证值;所述客户端向直播平台服务器发送http连接请求,所述http连接请求用于请求与所述直播平台服务器创建http连接,所述http连接请求包括所述第一验证值、所述当前系统时间、所述设备标识信息和所述直播间的房间号;当所述直播平台服务器验证所述http连接请求中的信息合法时,所述客户端接收所述直播平台服务器发送的http连接响应,所述http连接响应包括网关服务器的ip列表和所述直播平台服务器随机生成的密钥http_secret;所述客户端根据所述网关服务器ip列表和所述密钥http_secret,与网关服务器建立tcp连接,并接收所述网关服务器发送的tcp连接响应,所述tcp连接响应包括弹幕服务器的ip列表和所述网关服务器随机生成的密钥tcp_key;所述客户端根据所述弹幕服务器ip列表和所述密钥tcp_key连接所述弹幕服务器,并接收所述弹幕服务器发送的所述直播间对应的弹幕。本申请实施例中,在客户端与直播平台服务器进行http连接时,加入了验证过程,只有验证通过直播平台服务器才会下发网关服务器ip列表和随机密钥,因此只有直播平台的app才能连接成功进而获取到弹幕内容,保护了直播平台的弹幕隐私及弹幕资源,提高了弹幕被爬取的难度。

附图说明

图1a为本申请实施例提供的一种可能的获取弹幕的方法的流程图;

图1b为本申请实施例提供的一种可能的tcp数据包结构示意图;

图2a为本申请实施例提供的一种可能的客户端的结构示意图;

图2b为本申请实施例提供的一种可能的直播平台服务器的结构示意图;

图3a为本申请实施例提供的一种可能的电子设备的硬件结构示意图;

图3b为本申请实施例提供的另一可能的电子设备的硬件结构示意图

图4a为本申请实施例提供的一种可能的计算机可读存储介质的硬件结构示意图;

图4b为本申请实施例提供的另一可能的计算机可读存储介质的硬件结构示意图。

具体实施方式

本申请实施例提供了一种获取弹幕的方法及相关装置,用于保护直播平台的弹幕隐私及弹幕资源,以提高弹幕被爬取的难度。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

为便于更好的了解本申请实施例,以下将对弹幕的发送流程进行简要说明:观众要想观看某个直播间的弹幕时,客户端会从直播间列表信息来获取直播间的信息,包括直播间分类信息,该直播间连接网关服务器ip列表,直播间其他信息等等。此过程是客户端使用超文本传输协议(hypertexttransferprotocol,http)的短连接来来连接直播平台服务器,以从直播平台服务器拉取直播间数据。当获取到直播间数据后,客户端会使用传输控制协议(transmissioncontrolprotocol,tcp)的长连接来连接直播平台的网关服务器。客户端在连接上网关服务器后,会依据网关服务器给出的弹幕服务器ip来连接弹幕服务器,连接成功后,即可收到该直播间的弹幕内容。另外,当有用户发送弹幕时,客户端通过网关服务器发送该弹幕给直播平台服务器,直播平台服务器收到后,再发送给该直播间的弹幕服务器,弹幕服务器再向直播间的所有观众来广播该条弹幕内容。

基于上述弹幕连接流程,本申请实施例提供了一种可能的获取弹幕的方法,来防止黑客盗取所有直播间的弹幕,保护直播平台的弹幕隐私及弹幕资源,以提高弹幕爬取的安全性。请参阅图1a,为本申请实施例提供的一种可能的获取弹幕的方法的流程图,具体包括:

101、客户端根据当前系统时间、设备标识信息和直播间的房间号计算第一验证值;

从上述弹幕连接流程可以知道,要想爬取直播平台的弹幕内容,首先需要通过http接口来获取房间信息。现有技术中,客户端向直播平台服务器发送直播间的房间号、设备标识信息和客户端登录的cookie信息即可从直播平台服务器获得房间信息,该房间信息包括直播平台的网关服务器ip列表,而直播间的房间号、设备表示信息和客户端登录的cookie信息等黑客在轻易的通过抓包软件就可以抓取到对应的接口信息,故很容易被破解。有鉴于此,为了防止黑客爬取房间信息进一步得到网关服务器ip地址,本实施例中在获取房间信息的http接口中增加客户端验证的算法,从而客户端会计算出第一验证值上报到直播平台服务器,直播平台服务器会验证该第一验证值是否正确,不正确则会拒绝下发房间信息,如果正确才会下发房间信息。具体地,客户端计算第一验证值的方式如下:

步骤1、客户端通过调用接口time()获取当前系统时间,具体函数表达可为current_time=time(),其中,current_time为当前系统时间,得到当前系统时间作为参数参与到第一验证值的计算,可以保证每个时刻计算得到的第一验证值都不一致;

步骤2、客户端将当前系统时间、设备标识信息和房间号参与到第一验证值的计算中,具体地,

通过调用接口md4.create()加密当前系统时间以输出time_md4,函数表达为time_md4=md4.create(current_time),因此最终得到一个32位的字符串数据time_md4,其中接口md4.create()为信息摘要(message-digest,md)4算法的加密接口;

通过调用接口sha1-256.create()加密设备标识信息以输出deviceid_sha,函数表达为deviceid_sha=sha1-256.create(deviceid),其中deviceid用于表示设备标识信息,因此最终得到一个160位的字符串数据deviceid_sha,其中接口sha1-256.create()为安全散列(securehashalgorithm,sha)1算法的加密接口;

通过调用接口ripemd-256.create()加密房间号以输出roomid_ripemd,具体函数表达如下:roomid_ripemd=ripemd-256.create(roomid),其中roomid用于表示房间号,因此最终得到一个32位的字符串数据roomid_ripemd,其中接口ripemd-256.create()为ripemd算法的加密接口;

步骤3、在得到time_md4、deviceid_sha和roomid_ripemd后,通过在各hash算法中取几位和取哪些位来计算第一验证值,例如:

对于time_md4的取值计算如下:time_no=current_time数值的倒数第二位数字;

time_length=current_time数值的倒数第一位数字。

对于deviceid_sha的取值计算如下:deviceid_no=deviceid数值的第一位数字或者字母;

deviceid_length=deviceid数值的倒数第二位数字或者字母。

对于roomid_ripemd的取值计算如下:roomid_no=roomid数值的第三位数字或者字母;

roomid_length=deviceid数值的倒数第四位数字或者字母。

需要说明的是,各hash算法中取几位和取哪些位来计算第一验证值可以根据实际情况设置,具体此处不做限定。

步骤4、客户端根据以下方式计算第一验证值:

sign=md5.create(time_md4[time_no-time_length]+deviceid_sha[deviceid_no-deviceid_length]+roomid_ripemd[roomid_no-roomid_length);

其中,sign用于表示第一验证值,md5.create()为md5算法的加密接口。即将上述的数值拼接到一起,然后计算出md5值的结果即为第一验证值。

综上,在该步骤中,第一验证值是通过一定的算法计算得到,并且每个客户端都是不一样的,该第一验证值也会随着时间来发生变化,因此黑客通过抓包的方式是无法伪造出第一验证值的值,提高了黑客获取弹幕内容的难度。

102、客户端向直播平台服务器发送http连接请求;

客户端在计算得到第一验证值后,向直播平台服务器发送http连接请求,其中http连接请求用于请求与直播平台服务器创建http连接,http连接请求包括第一验证值、客户端的当前系统时间、设备标识信息和直播间的房间号。为了保障传输的数据内容的隐蔽和安全性,本申请实施例中,客户端可将数据打包一起加密后发送给直播平台服务器,从而通过第三方抓包工具则无法得知客户端传输了什么数据内容。具体实现如下:

encryptdata=rc4.encrypt(current_time+deviceid+roomid+sign,key);

base64_data=base64.encrypt(encryptdata);

其中,rc4.encrypt()为流加密算法(rivestcipher,rc)4的加密接口,base64.encrypt()为编码格式base64算法的加密接口,current_time为客户端的当前系统时间,deviceid为设备标识信息,roomid为直播间的房间号,sign为第一验证值,key为客户端与直播平台服务器的共享密钥。因此,本申请实施例中,对传输的数据内容依次进行了rc4和base64两次加密,提高了网络传输的安全性。因此,原本客户端发送给直播平台服务器的数据为房间号roomid和设备标识信息deviceid,本申请实施例中,客户端发给直播平台服务器的数据为base64_data。

基于上述过程,黑客通过抓包或者其他网络分析工具则无法知道客户端传输了什么数据,并且数据内容通过加密后每次都会发生变化,并且客户端的第一验证值计算非常的复杂,黑客非常难的破解,可以抵挡非常多的黑客爬虫工具来爬取直播平台的弹幕内容。

103、直播平台服务器对http连接请求中的信息进行验证;

直播平台服务器接收到客户端发送的http连接请求后,那么首先会对http连接请求中的数据进行解密得到原始数据,然后对原始数据进行验证。具体地,

然后判断数据的sign值是否正确,如果不正确则不会下发房间信息相关数据,同时再验证请求数据是否合法,如房间号是否存在,设备唯一deviceid是否合法,只有所有数据都合法才会下发房间信息,否则拒绝请求。具体验证的方式包括:

直播平台服务器对收到的http连接请求中的base64_data进行base64解密,函数表达如下:

encryptdata=base64.decrypt(base64_data);

其中base64.decrypt则是base64的解密接口。在解密完成后我们得到了encryptdata数据,其中包含了经过rc4加密算法加密后的第一验证值sign、房间号roomid、设备标识信息deviceid以及当前系统时间current_time,故再进行rc4解密,具体函数实现如下:

rc4.decrypt(encryptdata,key)=current_time+deviceid+roomid+sign;

其中rc4.decrypt则是rc4的解密接口,解密所使用的密钥key与客户端共享。故rc4解密完成后得到了原始数据,包括:第一验证值sign、房间号roomid、设备标识信息deviceid以及当前系统时间current_time。

在得到原始数据后,直播平台服务器首先验证roomid是否是合法的房间号,如果不合法则直接拒绝,然后再验证deviceid是否是合法的设备标识信息。最后再验证客户端的当前系统时间。由于客户端与直播平台服务器的时间可能不一定完全一致,所以只有客户端与直播平台服务器的时间相差在预设时间内都认为是合法的,例如该预设时间可以为1分钟或者5分钟等,否则则是非法的时间数据。因此,这些数据只要有一项验证不合法则都直接拒绝http连接请求。若这些数据都合法,直播平台服务器再验证第一验证值是否正确,具体地,直播平台服务器计算第一参考值,且计算第一参考值的方式与客户端计算第一验证值的方式一样,因此计算的结果也应该是一样的,故直播平台服务器会通过比对第一参考值与第一验证值是否一样来判断第一验证值是否合法。

具体直播平台服务器计算第一参考值的方式如下:

serversign=md5.create(time_md4[time_no-time_length]+deviceid_sha[deviceid_no-deviceid_length]+roomid_ripemd[roomid_no-roomid_length);

其中,serversign表示第一参考值,time_md4表示步骤101中加密当前系统时间后的结果,deviceid_sha表示步骤101中加密设备标识信息后的结果,roomid_ripemd表示步骤101中加密房间号后的结果,time_no=current_time数值的倒数第二位数字,time_length=current_time数值的倒数第一位数字,deviceid_no=deviceid数值的第一位数字或者字母;deviceid_length=deviceid数值的倒数第二位数字或者字母,roomid_no=roomid数值的第三位数字或者字母;roomid_length=deviceid数值的倒数第四位数字或者字母。直播平台服务器计算得到第一参考值后,与第一验证值进行比较,若两者一致则合法,即通过验证;否则非法。

104、若验证通过,直播平台服务器向客户端发送http连接响应;

若直播平台服务器验证http连接请求中的信息合法,则会向客户端发送http连接响应,该http连接响应用于指示http连接创建成功。且该http连接响应包括房间信息和直播平台服务器随机生成的随机密钥http_secret,其中,房间信息包括直播平台的网关服务器ip列表,使得客户端通过该网关服务器ip列表与直播平台服务器和后续的网关服务器进行关系串联,提高破解的难度。另外,下发到客户端的随机密钥http_secret每次都会重新生成,保障密钥只能一次有效,后续客户端连接网关服务器时会使用该随机密钥http_secret,并且直播平台服务器会记录密钥http_secret给网关服务器进行查询。

105、客户端向网关服务器发送tcp连接请求;

客户端通过直播平台服务器反馈的http连接响应来获得其中的网关服务器ip列表和随机密钥http_secret,以与网关服务器连接。现有技术中,客户端与网关服务器在连接的过程中需要携带客户端的信息,包括客户端的版本号,客户端连接的房间号,客户端的账号信息,客户端的设备唯一deviceid,具体函数表达如下:

type@=loginreq/name@=visitor/roomid@=35/deviceid@=addbbc234599800bbcdddd;

其中,type@=loginreq表示该消息的类型为登录请求,name@=visitor表示用户标识信息,roomid@=35表示房间号,deviceid@=addbbc234599800bbcdddd表示设备表示信息,这些长连接的信息,每个字段及字段的含义都比较容易通过抓包或者逆向分析来获取到,所以黑客比较容易的可以获取到直播平台的弹幕内容。因此,在本申请实施例中,会在与网关服务器的连接过程中增加客户端连接的真实性验证,从而保障所有的tcp连接都是合法的。具体实现如下:

客户端通过调用接口time()获取当前系统时间current_time,具体函数表达可为current_time=time(),将该当前系统时间作为参数参与到第二验证值的计算,保障登陆消息的验证每时每刻都在发生变化;

客户端通过调用接口sha1-256.create()加密当前系统时间以输出time_sha1,函数表达为time_sha1=sha1-256.create(current_time);

客户端通过调用接口md4.create()加密设备标识信息以输出deviceid_md4,函数表达为deviceid_md4=md4.create(deviceid);

在得到time_sha1和deviceid_md4后,客户端通过以下方式计算第二验证值:

tcp_sign=md5.create(time_sha1+deviceid_md4+http_secret);

其中,tcp_sign表示第二验证值,md5.create()为md5算法的加密接口,http_secret为直播平台服务器http连接验证通过后,下发给客户端的随机密钥。

客户端在计算得到第二验证值后,根据网关服务器ip列表中的ip地址向网关服务器发送tcp连接请求,其中tcp连接请求用于请求与网关服务器创建tcp连接,且tcp连接请求的内容较原来增加了第二验证值,具体函数实现如下:

type@=loginreq/name@=visitor/roomid@=35/deviceid@=addbbc234599800bbcdddd/sign@=tcp_sign/;

综上,本申请实施例中,将time_sha1和deviceid_md4及http_secret拼接到一起计算第二验证值tcp_sign,保证每个客户端的第二验证值都是不一样的,且该第二验证值也会随着时间来发生变化,因此黑客通过抓包的方式是无法伪造出第二验证值的值。客户端将该第二验证值携带于tcp连接请求中发送给网关服务器来进行验证,提高了客户端与网关服务器连接的安全性和黑客获取弹幕内容的难度。

106、网关服务器对tcp连接请求中的信息进行验证;

107、若验证通过,网关服务器向客户端发送tcp连接响应;

网关服务器收到客户端的tcp连接请求后,解析该登录请求协议,从中解析出协议的各个字段。那么网关服务器首先会验证tcp连接请求中各个参数的合法性,包括用户名称name,房间号roomid,设备标识信息deviceid,若这些数据都合法,网关服务器再验证第二验证值是否正确,具体地,网关服务器计算第二参考值,且计算第二参考值的方式与客户端计算第二验证值的方式一样,因此计算的结果也应该是一样的,故网关服务器会通过比对第二参考值与第二验证值是否一样来判断第二验证值是否合法。

具体网关服务器计算第二参考值的方式如下:

从客户端上报的tcp连接请求中取出客户端的当前系统时间current_time和设备标识信息deviceid,并分别对客户端的当前系统时间和设备标识信息进行hash加密得到加密结果,具体函数实现如下:

time_sha2=sha1-256.create(current_time);

deviceid_md4=md4.create(deviceid);

在得到加密结果即time_sha2和deviceid_md4后,按照如下方式计算第二参考值:

sign2=md5.create(time_sha+deviceid_md4+http_secret);

其中,sign2表示第二参考值。得到第二参考值后,网关服务器则对比第二参考值sign2与第二验证值tcp_sign是否一致,如果不一致则拒绝客户端登录。

如果一致,表示网关服务器验证tcp连接请求中的信息通过,则网关服务器会回复客户端tcp连接响应以指示登录成功,且该tcp连接响应包括一个随机密钥tcp_key,和弹幕服务器ip列表,使得客户端依据弹幕服务器列表来连接弹幕服务器。

需要说明的是,在客户端与网关服务器的tcp连接过程中,tcp的数据包格式如图1b所示,通常,黑客在抓取网络数据包时只会关注网络数据,而不会关注网络数据的包头数据,因为包头数据的各个字段都是有具体含义,而字段的具体含义和内容都和协议内容都无关,只是一些必填的数据内容,因此黑客都不会去关注包头中的数据内容。因此,客户端可以修改包头的保留字段,从而实现直播平台客户端的包头数据和非直播平台客户端的包头数据的内容不一直,故识别出哪些是非直播平台客户端,使得网关服务器可以直接觉得这些非直播平台客户端的连接请求。具体实现则是在保留字段中填入一个加密数据,而通常的客户端发送的保留字段内容都是固定一样的,全部是0,而本申请实施例中,直播平台客户端可以填入一个非0值,从而可以与其他非平台客户端进行区分。例如,保留字段通常是000,直播平台客户端发送的包头的保留字段可以为001,或者010,或者011等,只要是非全0数据即可,故具体本申请不做限定。

108、客户端向弹幕服务器发送连接请求;

客户端通过网关服务器反馈的tcp连接响应来获得其中的弹幕服务器ip列表和随机密钥tcp_key,以与弹幕服务器连接。接下来客户端需要计算出登录弹幕服务器的第三验证值,且第三验证值的计算会关系到客户端是否可以最终从弹幕服务器接收到弹幕消息,如果客户端的第三验证值通不过则无法获取直播间弹幕,从而非法的客户端无法正确计算出第三验证值,使得黑客无法爬取弹幕内容。具体客户端计算第三验证值的方式如下:

客户端通过调用接口time()获取当前系统时间current_time,具体函数表达可为current_time=time(),将该当前系统时间作为参数参与到第三验证值的计算,保障第三验证值每时每刻都在发生变化;

客户端通过调用接口sha1-256.create()加密当前系统时间以输出time_sha2,函数表达为time_sha2=sha1-256.create(current_time);

在得到time_sha2后,客户端通过以下方式计算第三验证值:

tcp_sign1=md5.create(time_sha2+tcp_key);

其中,tcp_sign1表示第三验证值,tcp_key表示登录网关服务器通过后网关服务器下发的随机密钥。

客户端在计算得到第三验证值后,根据弹幕服务器ip列表中的ip地址向弹幕服务器发送连接请求,其中连接请求用于请求与弹幕服务器创建连接,且连接请求的内容包括第三验证值和客户端的系统当前时间。

109、弹幕服务器对连接请求中的信息进行验证;

110、若验证通过,弹幕服务器向客户端发送直播间对应的弹幕。

弹幕服务器收到客户端的连接请求后,解析该连接请求,从中解析出该连接请求的各个字段。那么弹幕服务器首先会验证连接请求中各个参数的合法性,包括验证客户端的当前系统时间合法,再验证第三验证值是否正确,具体地,弹幕服务器计算第三参考值,且计算第三参考值的方式与客户端计算第三验证值的方式一样,因此计算的结果也应该是一样的,故弹幕服务器会通过比对第三参考值与第三验证值是否一样来判断第三验证值是否合法。

具体弹幕服务器计算第三参考值的方式如下:

从客户端上报的连接请求中取出客户端的当前系统时间current_time,并对客户端的当前系统时间进行hash加密得到加密结果,具体函数实现如下:

time_sha3=sha1-256.create(current_time);

在得到加密结果time_sha3后,按照如下方式计算第三参考值

sign3=md5.create(time_sha3+tcp_key);

其中,sign3表示第三参考值。得到第三参考值后,弹幕服务器则对比第三参考值sign3与第三验证值tcp_sign1是否一致,如果不一致则拒绝客户端登录。

如果一致,表示弹幕服务器验证连接请求中的信息通过,则弹幕服务器会回复客户端连接响应以指示登录成功,并向客户端发送直播间对应的弹幕。

需要说明的,在客户端与弹幕服务器的连接过程中,加入了校验的第三验证值,只有校验成功才能连上弹幕服务器。本申请实施例中,还可以在客户端加入其它的逻辑,例如,由于通常的黑客只会去破解登陆的连接验证,而本实施例可以在连接上弹幕服务器后,客户端可以预埋多套协议请求,例如客户端在一定的时间间隔会向弹幕服务器发送一个消息请求,如果弹幕服务器收到该请求则认为是正确的客户端,如果弹幕服务器没有收到该消息请求则可以认为是非法的客户端,此时弹幕服务器对没有发请求的客户端可以拒绝其连接;也可以不拒绝其连接,而是继续给该客户端发送弹幕消息,但发送的弹幕消息为干扰弹幕或者是虚假弹幕,而不是直播间的真实弹幕,从而可以骗取弹幕爬虫,使其获取信息不准确。具体实现如下:客户端向弹幕服务器发送的请求消息的函数表达如下:

type@=loginreq/name@=visitor/roomid@=35/other@=1;

其中,type@=loginreq表示该消息的类型为登录请求,name@=visitor表示用户标识信息,roomid@=35为房间号,other@=1为在登陆请求协议中增加一个约定字段,若客户端携带此约定字段到弹幕服务器,则被认为是合法客户端即直播平台的客户端,后续给该客户端发送真实的该直播间对应的弹幕;若客户端没有携带此约定字段,则弹幕服务器也不会判断为链接失败,而是标记该客户端是非法客户端,从而后续给该客户端发送一些虚假弹幕。需要说明的是,具体字段和内容则可以与之前的http请求协商,http请求响应中携带字段和数值,从而客户端可以在不发布新的版本来不断的更新此约定字段,使得隐蔽效果更好。

可选的,客户端可以在连上弹幕服务器后,一定随机时间内,给弹幕服务器发送一条新的协议,其中协议字段和内容都可以预埋到客户端版本中,从而客户端会不断的变化此字段及内容,那么服务器对总是没有发送此协议的客户端则认为是非法的客户端。例如,新增加协议可以是:type@=vx@=1;也可以是type@=vx@=2;或者type@=vm@=1;故具体的增加协议本申请不做限定。由于协议和字段的不断变化,使得弹幕服务器辨别哪些是非直播平台客户端的效果会更好,提高了直播间弹幕内容的安全性。

可选的,弹幕服务器还可以依据用户进行分组,并依据客户端的ip来做一些限制和策略。当客户端连接到一个直播间时,弹幕服务器会对大直播间的用户进行分组,每个分组只会获取直播间部分弹幕,而不会获取直播间的所有弹幕内容,那么如果只有一个客户端连接到直播间则不可能获取到直播间的所有弹幕。从而弹幕爬虫无法获取整个直播间的所有弹幕内容。如果黑客使用多个客户端来爬取同一个直播间,弹幕服务器还会依据连接的用户的ip,将相同地段的ip的客户端分在同一个组,从而阻止黑客获取直播间所有弹幕内容。因此弹幕服务器通过将直播间弹幕分发到各个分组,这样不会有任意一个分组能够爬取到所有弹幕内容,使得黑客的爬虫工具很难爬取到直播间的所有弹幕内容。

本申请实施例中,在客户端与直播平台服务器进行http连接时,加入了验证过程,只有验证通过直播平台服务器才会下发网关服务器ip列表和随机密钥,因此只有直播平台的app才能连接成功进而获取到弹幕内容,保护了直播平台的弹幕隐私及弹幕资源,提高了弹幕被爬取的难度。

上面从获取弹幕的方法的角度对本申请实施例进行了描述,下面从直播平台服务器和客户端的角度对本申请实施例进行描述。

请参阅图2a,图2a为本申请实施例提供的一种可能的客户端的实施例示意图,其中,该客户端具体包括:

计算单元201,用于根据当前系统时间、设备标识信息和直播间的房间号计算第一验证值;

收发单元202,用于向直播平台服务器发送http连接请求,所述http连接请求用于请求与所述直播平台服务器创建http连接,所述http连接请求包括所述第一验证值、所述当前系统时间、所述设备标识信息和所述直播间的房间号;

所述收发单元202,还用于当所述直播平台服务器验证所述http连接请求中的信息合法时,接收所述直播平台服务器发送的http连接响应,所述http连接响应包括网关服务器的ip列表和所述直播平台服务器随机生成的密钥http_secret;

建立单元203,用于根据所述网关服务器ip列表和所述密钥http_secret,与网关服务器建立tcp连接,并接收所述网关服务器发送的tcp连接响应,所述tcp连接响应包括弹幕服务器的ip列表和所述网关服务器随机生成的密钥tcp_key;根据所述弹幕服务器ip列表和所述密钥tcp_key连接所述弹幕服务器,并接收所述弹幕服务器发送的所述直播间对应的弹幕。

请参阅图2b,图2b为本申请实施例提供的一种可能的直播平台服务器的实施例示意图,其中,该直播平台服务器具体包括:

收发单元210,用于接收客户端发送的http连接请求,所述http连接请求用于请求与所述直播平台服务器创建http连接,所述http连接请求包括第一验证值、客户端的当前系统时间、设备标识信息和直播间的房间号;

判断单元220,用于判断所述设备标识信息和所述直播间的房间是否合法,并判断所述客户端的当前时间与所述直播平台服务器的当前时间的差值是否小于预设数值;

计算单元230,用于若所述设备标识信息和所述直播间的房间均合法且所述差值小于所述预设数值,则根据所述客户端的当前系统时间、所述设备标识信息和所述直播间的房间号计算第一参考值;

所述收发单元210,还用于若所述第一参考值与所述第一验证值相等,则随机生成密钥http_secret,并向所述客户端发送http连接响应,所述http连接响应包括所述密钥http_secret和网关服务器的ip列表,以使得所述客户端根据所述http连接响应获得所述直播间的弹幕。

请参阅图3a,图3a为本申请实施例提供的电子设备的实施例示意图。

如图3a所示,本申请实施例提供了一种电子设备,包括存储器310、处理器320及存储在存储器320上并可在处理器320上运行的计算机程序311,处理器320执行计算机程序311时实现以下步骤:客户端根据当前系统时间、设备标识信息和直播间的房间号计算第一验证值;所述客户端向直播平台服务器发送http连接请求,所述http连接请求用于请求与所述直播平台服务器创建http连接,所述http连接请求包括所述第一验证值、所述当前系统时间、所述设备标识信息和所述直播间的房间号;当所述直播平台服务器验证所述http连接请求中的信息合法时,所述客户端接收所述直播平台服务器发送的http连接响应,所述http连接响应包括网关服务器的ip列表和所述直播平台服务器随机生成的密钥http_secret;所述客户端根据所述网关服务器ip列表和所述密钥http_secret,与网关服务器建立tcp连接,并接收所述网关服务器发送的tcp连接响应,所述tcp连接响应包括弹幕服务器的ip列表和所述网关服务器随机生成的密钥tcp_key;所述客户端根据所述弹幕服务器ip列表和所述密钥tcp_key连接所述弹幕服务器,并接收所述弹幕服务器发送的所述直播间对应的弹幕。

如图3b所示,本申请实施例提供了一种电子设备,包括存储器330、处理器340及存储在存储器340上并可在处理器340上运行的计算机程序331,处理器340执行计算机程序331时实现以下步骤:直播平台服务器接收客户端发送的http连接请求,所述http连接请求用于请求与所述直播平台服务器创建http连接,所述http连接请求包括第一验证值、客户端的当前系统时间、设备标识信息和直播间的房间号;所述直播平台服务器判断所述设备标识信息和所述直播间的房间是否合法,并判断所述客户端的当前时间与所述直播平台服务器的当前时间的差值是否小于预设数值;若所述设备标识信息和所述直播间的房间均合法且所述差值小于所述预设数值,则所述直播平台服务器根据所述客户端的当前系统时间、所述设备标识信息和所述直播间的房间号计算第一参考值;若所述第一参考值与所述第一验证值相等,则所述直播平台服务器随机生成密钥http_secret,并向所述客户端发送http连接响应,所述http连接响应包括所述密钥http_secret和网关服务器的ip列表,以使得所述客户端根据所述http连接响应获得所述直播间的弹幕。

由于本实施例所介绍的电子设备为实施本申请实施例中一种直播平台服务器或者客户端所采用的设备,故而基于本申请实施例中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本申请实施例中的方法不再详细介绍,只要本领域所属技术人员实施本申请实施例中的方法所采用的设备,都属于本申请所欲保护的范围。

请参阅图4a,图4a为本申请实施例提供的一种计算机可读存储介质的实施例示意图。

如图4a所示,本实施例提供了一种计算机可读存储介质400,其上存储有计算机程序411,该计算机程序411被处理器执行时实现如下步骤:客户端根据当前系统时间、设备标识信息和直播间的房间号计算第一验证值;所述客户端向直播平台服务器发送http连接请求,所述http连接请求用于请求与所述直播平台服务器创建http连接,所述http连接请求包括所述第一验证值、所述当前系统时间、所述设备标识信息和所述直播间的房间号;当所述直播平台服务器验证所述http连接请求中的信息合法时,所述客户端接收所述直播平台服务器发送的http连接响应,所述http连接响应包括网关服务器的ip列表和所述直播平台服务器随机生成的密钥http_secret;所述客户端根据所述网关服务器ip列表和所述密钥http_secret,与网关服务器建立tcp连接,并接收所述网关服务器发送的tcp连接响应,所述tcp连接响应包括弹幕服务器的ip列表和所述网关服务器随机生成的密钥tcp_key;所述客户端根据所述弹幕服务器ip列表和所述密钥tcp_key连接所述弹幕服务器,并接收所述弹幕服务器发送的所述直播间对应的弹幕。

请参阅图4b,图4b为本申请实施例提供的一种计算机可读存储介质的实施例示意图。

如图4b所示,本实施例提供了一种计算机可读存储介质420,其上存储有计算机程序431,该计算机程序431被处理器执行时实现如下步骤:直播平台服务器接收客户端发送的http连接请求,所述http连接请求用于请求与所述直播平台服务器创建http连接,所述http连接请求包括第一验证值、客户端的当前系统时间、设备标识信息和直播间的房间号;所述直播平台服务器判断所述设备标识信息和所述直播间的房间是否合法,并判断所述客户端的当前时间与所述直播平台服务器的当前时间的差值是否小于预设数值;若所述设备标识信息和所述直播间的房间均合法且所述差值小于所述预设数值,则所述直播平台服务器根据所述客户端的当前系统时间、所述设备标识信息和所述直播间的房间号计算第一参考值;若所述第一参考值与所述第一验证值相等,则所述直播平台服务器随机生成密钥http_secret,并向所述客户端发送http连接响应,所述http连接响应包括所述密钥http_secret和网关服务器的ip列表,以使得所述客户端根据所述http连接响应获得所述直播间的弹幕。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1