视频直播网站基于页面心跳事件生成白名单的系统及方法
技术领域
本发明涉及视频直播领域,具体是涉及一种视频直播网站基于页面心跳事件生成白名单的系统及方法。
背景技术
视频直播是指利用互联网及流媒体技术进行直播,视频因融合了图像、文字、声音等丰富元素,声形并茂,效果极佳,逐渐成为互联网的主流表达方式。在线视频直播是指利用互联网网络资源进行的现场视频直播服务,通过现场的视频拍摄同步发布到网络上,用户可以同一时间在网络上看到实时的现场情况。
在视频直播过程中,直播间的主播可能会与进入直播间的用户进行互动。为了保证互动活动的有效进行,服务器需要对参与直播互动活动的用户进行限定,只有进入白名单中的用户才允许参与互动。但是,由于无法限制非活跃用户和作弊用户参与主播的互动活动,难以保证互动活动的有效进行。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种视频直播网站基于页面心跳事件生成白名单的系统及方法,能够限制非活跃用户和作弊用户参与主播的互动活动,保证互动活动的有效进行。
本发明提供一种视频直播网站基于页面心跳事件生成白名单的系统,该系统包括客户端和服务器,所述服务器包括分布式的若干实时计算单元,用户在客户端观看视频直播的过程中,客户端的当前直播页面按照一定的时间粒度产生页面心跳事件,客户端的浏览器将含有加密的设备识别码的页面心跳事件数据,组装成一种轻量级的数据交换格式JSON格式的字符串,然后对JSON格式的字符串进行BASE64编码,将编码后的页面心跳事件数据发送到服务器;
服务器对客户端发来的页面心跳事件数据进行缓存并预处理,丢弃格式不符合要求的页面心跳事件数据;
服务器按照时间粒度或者固定大小数据片的批量方式,将缓存中的页面心跳事件数据提交给分布式的若干实时计算单元;
实时计算单元对页面心跳事件数据进行解析:
首先,对页面心跳事件数据中的设备识别码进行解密处理,然后取出设备识别码中的时间戳和唯一设备ID,分别校验设备识别码中的时间戳是否在合理范围、设备识别码中的唯一设备ID是否符合规范,如果设备识别码验证失败,直接丢弃页面心跳事件数据;如果设备识别码校验成功,实时计算单元根据页面心跳事件数据的页面心跳事件ID,验证页面心跳事件数据的有效性:
对于每个用户的单次观看心跳,页面心跳事件ID是连续递增的序列值,在允许的范围内,如果页面心跳事件数据符合规则,则验证有效,将用户ID加入白名单中;如果验证无效,则直接丢弃页面心跳事件数据;
服务器将得到的白名单通过Restful接口或者远程过程调用RPC接口,提供给其他应用使用。
在上述技术方案的基础上,所述客户端的浏览器发送到服务器的页面心跳事件数据中包含若干用于识别页面行为的标识:页面统一资源定位符URL、页面心跳事件ID、页面事件类型、表示用户唯一性的ID和按照特定规则生成的设备识别码。
在上述技术方案的基础上,所述设备识别码的生成规则是:时间戳+设备应用编程接口API获取的唯一设备ID+随机数,客户端生成的设备识别码是固定长度,对设备识别码进行加密处理。
在上述技术方案的基础上,所述格式不符合要求是指:页面URL非法、页面心跳事件ID无效、页面事件类型枚举值非法、用户编号为空、不符合数据字段类型、时间戳格式不对、客户端类型标识非法。
在上述技术方案的基础上,所述服务器按照指定页面心跳事件数据ID Hash的策略,将页面心跳事件数据分配给指定的实时计算单元处理,具体实现方式是:对页面心跳事件数据分配一个随机的UUID,然后对实时计算单元的个数取模,获得实时计算单元的ID,向该实时计算单元提交页面心跳事件数据。
本发明还提供一种适用于上述系统的视频直播网站基于页面心跳事件生成白名单的方法,包括以下步骤:
S1、用户在客户端观看视频直播的过程中,客户端的当前直播页面按照一定的时间粒度产生页面心跳事件,客户端的浏览器将含有加密的设备识别码的页面心跳事件数据,组装成一种轻量级的数据交换格式JSON格式的字符串,然后对JSON格式的字符串进行BASE64编码,将编码后的页面心跳事件数据发送到服务器;
S2、服务器对客户端发来的页面心跳事件数据进行缓存并预处理,丢弃格式不符合要求的页面心跳事件数据;
S3、服务器按照时间粒度或者固定大小数据片的批量方式,将缓存中的页面心跳事件数据提交给分布式的若干实时计算单元;
S4、实时计算单元对页面心跳事件数据进行解析:
首先,对设备识别码进行解密处理,然后取出设备识别码中的时间戳和唯一设备ID,分别校验设备识别码中的时间戳是否在合理范围、设备识别码中的唯一设备ID是否符合规范,如果设备识别码验证失败,直接丢弃页面心跳事件数据;如果设备识别码校验成功,转到步骤S5;
S5、实时计算单元根据页面心跳事件数据的页面心跳事件ID,验证页面心跳事件数据的有效性:对于每个用户的单次观看心跳,页面心跳事件ID是连续递增的序列值,在允许的范围内,如果页面心跳事件数据符合规则,则验证有效,将用户ID加入白名单中;如果验证无效,则直接丢弃页面心跳事件数据,转到步骤S6;
S6、服务器将得到的白名单通过Restful接口或者远程过程调用RPC接口,提供给其他应用使用。
在上述技术方案的基础上,步骤S1中,客户端的浏览器发送到服务器的页面心跳事件数据中包含若干用于识别页面行为的标识:页面统一资源定位符URL、页面心跳事件ID、页面事件类型、表示用户唯一性的ID和按照特定规则生成的设备识别码。
在上述技术方案的基础上,所述设备识别码的生成规则是:时间戳+设备应用编程接口API获取的唯一设备ID+随机数,客户端生成的设备识别码是固定长度,对设备识别码进行加密处理。
在上述技术方案的基础上,步骤S2中,所述格式不符合要求是指:页面URL非法、页面心跳事件ID无效、页面事件类型枚举值非法、用户编号为空、不符合数据字段类型、时间戳格式不对、客户端类型标识非法。
在上述技术方案的基础上,步骤S3中,服务器按照指定页面心跳事件数据ID Hash的策略,将页面心跳事件数据分配给指定的实时计算单元处理,具体实现方式是:对页面心跳事件数据分配一个随机的UUID,然后对实时计算单元的个数取模,获得实时计算单元的ID,向该实时计算单元提交页面心跳事件数据。
与现有技术相比,本发明的优点如下:
(1)本发明基于正常的用户页面心跳事件生成白名单,能够限制非活跃用户和作弊用户参与主播的互动活动,保证互动活动的有效进行。
(2)本发明生成的白名单,能够在多个重要场景中过滤无效用户账号。
附图说明
图1是本发明实施例中视频直播网站基于页面心跳事件生成白名单的方法的流程图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
本发明实施例提供一种视频直播网站基于页面心跳事件生成白名单的系统,该系统包括客户端和服务器,服务器包括分布式的若干实时计算单元。
参见图1所示,本发明实施例提供一种视频直播网站基于页面心跳事件生成白名单的方法,包括以下步骤:
S1、用户在客户端观看视频直播的过程中,客户端的当前直播页面按照一定的时间粒度产生页面心跳事件,客户端的浏览器将含有加密的设备识别码的页面心跳事件数据,组装成JSON(JavaScript Object Notation,一种轻量级的数据交换格式)格式的字符串,然后对JSON格式的字符串进行BASE64编码,将编码后的页面心跳事件数据发送到服务器。
页面心跳事件数据的数据格式形如:"heart_beat_id":"3",表示第三次心跳,时间粒度为30s时,也就是观看了90s直播后上报的页面心跳事件。
客户端的浏览器发送到服务器的页面心跳事件数据中包含若干用于识别页面行为的标识:页面URL(Uniform Resource Locator,统一资源定位符)、页面心跳事件ID(即当次观看的页面的心跳次数编号)、页面事件类型、表示用户唯一性的ID和按照特定规则生成的设备识别码。
设备识别码的生成规则是:时间戳+设备API(Application ProgrammingInterface,应用编程接口)获取的唯一设备ID+随机数,客户端生成的设备识别码是固定长度,对设备识别码进行加密处理。
JSON是基于JavaScript编程语言ECMA-262 3rd Edition-December 1999标准的一种轻量级的数据交换格式,主要用于跟服务器进行交换数据。
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,Base64编码可用于在HTTP(HyperText TransferProtocol,超文本传送协议)环境下传递较长的标识信息。
S2、服务器对客户端发来的页面心跳事件数据进行缓存并预处理,丢弃格式不符合要求的页面心跳事件数据,格式不符合要求是指:页面URL非法、页面心跳事件ID无效、页面事件类型枚举值非法、用户编号为空、不符合数据字段类型、时间戳格式不对、客户端类型标识非法。
预处理之后的页面心跳事件数据格式如下:
S3、服务器按照时间粒度或者固定大小数据片的批量方式,将缓存中的页面心跳事件数据提交给分布式的若干实时计算单元。
例如,服务器按照指定页面心跳事件数据ID Hash的策略,将页面心跳事件数据分配给指定的实时计算单元处理,目的是为了提高实时计算单元的水平扩展能力,这样,服务器端可以根据数据量的规模来相应增减参与计算的实时计算单元的数量。
具体实现方式是:对页面心跳事件数据分配一个随机的UUID(UniversallyUnique Identifier,通用唯一识别码),然后对实时计算单元的个数取模,获得实时计算单元的ID,然后向该实时计算单元提交页面心跳事件数据。
时间粒度、固定大小数据片根据实际需要设定,在实际应用中,可以将时间粒度设定为1秒,固定大小数据片设定为1MB。
S4、实时计算单元对页面心跳事件数据进行解析:
首先,对页面心跳事件数据中的设备识别码进行解密处理,然后取出设备识别码中的时间戳和唯一设备ID,分别校验设备识别码中的时间戳是否在合理范围、设备识别码中的唯一设备ID是否符合规范,如果设备识别码验证失败,直接丢弃页面心跳事件数据;如果设备识别码校验成功,转到步骤S5;
S5、实时计算单元根据页面心跳事件数据的页面心跳事件ID,验证页面心跳事件数据的有效性:对于每个用户的单次观看心跳,页面心跳事件ID应该是连续递增的序列值,在允许的范围内(例如,允许丢失3次页面心跳事件),如果页面心跳事件数据符合规则,则验证有效,将用户ID加入白名单中;如果验证无效,则直接丢弃页面心跳事件数据,转到步骤S6。只有通过验证的页面心跳事件数据才被视为正常用户页面行为。
S6、服务器将得到的白名单通过Restful(Representational State Transfer,一种软件架构风格)接口或者RPC(Remote Procedure Call,远程过程调用)接口,提供给其他应用使用。
按照上述方法生成的白名单,能够在多个重要场景中过滤无效用户账号。
本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。
说明书中未详细描述的内容为本领域技术人员公知的现有技术。