视频播放的权限校验方法及装置与流程

文档序号:11591065阅读:332来源:国知局
视频播放的权限校验方法及装置与流程

本发明涉及互联网技术领域,尤其涉及一种视频播放的权限校验方法及装置。



背景技术:

随着计算机技术和网络技术的发展,观看视频直播的用户越来越多,网络视频直播得到了广泛的普及。视频直播是利用互联网及流媒体技术进行直播,直播网站通过从视频内容的提供服务器获取视频流地址,以根据视频流地址获取视频内容,实现视频内容的网络直播。

实际应用中,视频流地址存在被第三方平台获取的风险,进而导致第三方平台可以不通过直播网站直接观看视频内容,即绕过了直播网站的视频播放器提供的视频播放。这种行为不仅直接侵犯了视频直播提供方的权益,减少了视频网站的用户流量,而且还会给直播用户带来个人信息泄露的风险,从而给个人财产带来安全隐患。目前的大多数视频网站都会对视频流地址进行加密保护,以确保视频播放过程的安全性。常用方式是通过对视频流地址进行一次校验,校验通过后则可以完整的获取整个视频流,使得第三方平台不能轻易的获取视频流地址。但是,考虑到性能和用户体验,由于客户端在请求时不能产生太大时延,所以加密算法不能够太复杂,为此,大多数的视频网站采取的是比较简单的且常用的校验方法,进而导致加密算法比较容易被黑客或第三方平台破解,从而盗取了视频流地址,使得视频播放过程依然存在安全风险。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的视频播放的权限校验方法及装置,能够有效地实现对视频流地址的鉴权验证,提高视频直播过程的安全性,提升用户体验。

本发明的一个方面,提供了一种视频播放的权限校验方法,包括:

向客户端发送预先配置的lua脚本文件,以供所述客户端通过执行所述lua脚本文件对客户端的校验信息进行加密,以生成视频流地址的客户端请求校验码;

接收客户端发送的视频流地址请求消息,所述视频流地址请求消息中携带有所述客户端请求校验码以及所述校验信息;

采用与所述lua脚本文件对应的加密算法对所述校验信息进行加密,生成服务器校验码;

若所述服务器校验码与所述客户端请求校验码一致,则确定权限校验成功,向所述客户端返回所请求的视频流地址。

可选地,所述校验信息包括客户端随机字符串和客户端信息;

所述客户端随机字符串为所述客户端生成的随机字符串;

所述客户端信息包括用户信息和直播服务器返回的token值,所述用户信息包括客户端的设备标识、客户端的ip地址、直播间id和/或所述客户端生成所述校验信息的时间。

可选地,在所述向客户端发送预先配置的lua脚本文件之前,所述方法还包括:

根据预设的多种加密算法分别生成相应的多个lua脚本文件。

可选地,所述向客户端发送预先配置的lua脚本文件,包括:

根据预设的文件选取规则从所述多个lua脚本文件中选取一个lua脚本文件,并将所述选取的lua脚本文件发送到所述客户端。

可选地,所述方法还包括:

定时更新生成的所述多个lua脚本文件和/或所述文件选取规则。

可选地,所述向客户端发送预先配置的lua脚本文件,包括:

对所述lua脚本文件进行加密,向所述客户端发送加密后的lua脚本文件,以供所述客户端根据约定秘钥进行解密后执行所述lua脚本文件。

本发明的另一个方面,提供了一种视频播放的权限校验装置,包括:

发送模块,用于向客户端发送预先配置的lua脚本文件,以供所述客户端通过执行所述lua脚本文件对客户端的校验信息进行加密,以生成视频流地址的客户端请求校验码;

接收模块,用于接收客户端发送的视频流地址请求消息,所述视频流地址请求消息中携带有所述客户端请求校验码以及所述校验信息;

第一生成模块,用于采用与所述lua脚本文件对应的加密算法对所述校验信息进行加密,生成服务器校验码;

校验模块,用于当所述服务器校验码与所述客户端请求校验码一致时,确定权限校验成功,并向所述客户端返回所请求的视频流地址。

可选地,所述装置还包括:

第二生成模块,用于在所述向客户端发送预先配置的lua脚本文件之前,根据预设的多种加密算法分别生成相应的多个lua脚本文件;

所述发送模块,具体用于根据预设的文件选取规则从所述多个lua脚本文件中选取一个lua脚本文件,并将所述选取的lua脚本文件发送到所述客户端。

可选地,所述装置还包括:

更新模块,用于定时更新所述第二生成模块生成的所述多个lua脚本文件和/或所述文件选取规则。

可选地,所述发送模块,具体用于对所述lua脚本文件进行加密,向所述客户端发送加密后的lua脚本文件,以供所述客户端根据约定秘钥进行解密后执行所述lua脚本文件。

本发明实施例提供的视频播放的权限校验方法及装置,通过使用lua脚本文件实现对视频流地址的鉴权,由于lua是一种脚本语言,不需要编译可以直接执行,进而可以通过频繁的对lua脚本文件的更新,以实现对视频流地址鉴权方式的更新,增加鉴权过程中加密算法的破解难度,从而能够有效地实现对视频流地址的鉴权验证,提高视频直播过程的安全性,提升用户体验。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本发明实施例的一种视频播放的权限校验方法的流程图;

图2为本发明实施例的一种视频播放的权限校验装置的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。

为解决现有技术中在用户刚开始请求视频流地址时对视频流地址的加密算法过于复杂,影响用户体验,或,加密算法过于简单,不能够有效地实现对视频流地址的鉴权验证的问题。本发明实施例通过使用lua脚本文件来实现对视频流地址的鉴权,当客户端登陆直播平台服务器后,服务器将流地址的鉴权算法的lua脚本文件发送给客户端,客户端通过执行lua脚本文件来生成视频流地址的客户端请求校验码key,通过将该key发送到服务器进行权限校验,来请求视频流地址。本发明实施例通过使用lua脚本实现对视频流地址的鉴权验证,可以通过频繁的对lua脚本文件的更新,实现对视频流地址鉴权方式的更新,增加鉴权过程中加密算法的破解难度。

图1示意性示出了本发明一个实施例的视频播放的权限校验方法的流程图。参照图1,本发明实施例的视频播放的权限校验方法具体包括以下步骤:

步骤s11、向客户端发送预先配置的lua脚本文件,以供所述客户端通过执行所述lua脚本文件对客户端的校验信息进行加密,以生成视频流地址的客户端请求校验码。

其中,lua是一个轻量级的脚本语言,lua只包括一个精简的核心和最基本的库。这使得lua体积小、启动速度快,从而适合嵌入在客户端播放器的程序中。而且,lua可配置性、可扩展性,虽然其并不象其它许多"大而全"的语言那样,包括很多功能,比如网络通讯、图形界面等。但是lua可以很容易地被扩展:由宿主语言(通常是c或c++)提供这些功能,lua可以使用它们,就像是本来就内置的功能一样。此外,lua由标准c编写而成,几乎在所有操作系统和平台上都可以编译,运行,具体良好的兼容性。

在实际应用中,当用户打开一个直播间进行视频直播观看时,首先客户端会去向服务器发送视频流地址请求消息,以获取直播房间的视频流地址。为了保护视频流地址的安全有效,在请求的时候需要客户端在请求消息中携带上客户端的校验信息。本实施例中的所述校验信息包括客户端随机字符串和客户端信息。其中,客户端随机字符串为所述客户端生成的随机字符串;客户端信息包括用户信息和直播服务器返回的token值,所述用户信息包括客户端的设备标识、客户端的ip地址、直播间id和/或所述客户端生成所述校验信息的时间。

步骤s12、接收客户端发送的视频流地址请求消息,所述视频流地址请求消息中携带有所述客户端请求校验码以及所述校验信息;

步骤s13、采用与所述lua脚本文件对应的加密算法对所述校验信息进行加密,生成服务器校验码;

步骤s14、若所述服务器校验码与所述客户端请求校验码一致,则确定权限校验成功,向所述客户端返回所请求的视频流地址,以供所述客户端基于所述视频流地址进行视频播放。

其中,视频流地址的有效性为首次有效,即一次有效地址,该地址只能使用一次,下次再使用同样的视频流地址获取视频流,则被视为无效,进而有效地避免黑客或恶意第三方获取该地址后,任意的拉取视频流。进一步地,本发明实施例中的视频流地址算法使用了用户登录时的tocken作为客户端请求校验码key计算的一部分,同样使得用户必须登录后才能拉取视频流地址,使得盗取流地址的黑客或恶意第三方必须实现网站的登录功能,从而增加了其实现门槛。同时为了进一步的保护视频流地址,本发明实施例中,还使用了客户端的一些个人用户信息作为技术key值的一部分,其中包括客户端的ip地址、设备唯一id、服务器穿给客户端的随机key值,以及所述客户端生成所述校验信息的时间等,进而可以极大的保护视频流地址的安全性。

本发明实施例提供的视频播放的权限校验方法,通过使用lua脚本文件实现对视频流地址的鉴权,由于lua是一种脚本语言,不需要编译可以直接执行,进而可以通过频繁的对lua脚本文件的更新,实现对视频流地址鉴权方式的更新,增加鉴权过程中加密算法的破解难度,从而能够有效地实现对视频流地址的鉴权验证,提高视频直播过程的安全性,提升用户体验。

在一个具体实施例中,服务器向客户端发送预先配置的lua脚本文件之后,客户端首先随机的生成一个32位的客户端随机字符串randkey,并获取本地的客户端信息。具体的,获取的信息包括,客户端登录直播网站时获取到的直播服务器返回的token值,客户端请求的视频流的直播间id(roomid),客户端的设备id,客户端的ip地址,客户端生成所述校验信息的时间time。获取到这些信息后,将这些信息拼接成一个字符串。然后使用lua脚本文件中的加密算法,如tea算法,来对拼接后的字符串进行加密。

其中,使用tea算法来对拼接后的字符串进行加密,其中tea加密算法会使用一个key值,本实施例中使用客户端随机字符串randkey作为算法的key值。具体实现如下:

video_key=tea.encrypt(randkey,token+roomid+id+ip+time);

其中video_key则是客户端计算出来的客户端请求校验码。

然后,客户端向服务器请求视频流地址,同时会将客户端随机字符串以及客户端信息(客户端登录获取的token、房间号roomid、设备id、电脑ip、所述客户端生成所述校验信息的时间time)和计算的video_key发送到服务器,服务器也会使用同样的lua脚本来根据客户端发送的校验信息计算视频流地址的服务器校验码key,从而校验客户端上报的客户端请求校验码是否正确,如果正确,则确定权限校验成功,并向所述客户端返回所请求的视频流地址,以供所述客户端基于所述视频流地址进行视频播放,否则,确定权限校验失败。

进一步地,为了进一步加强鉴权过程中加密算法的破解难度,还可以在将客户端随机字符串以及客户端信息(客户端登录获取的token、房间号roomid、设备id、电脑ip、所述客户端生成所述校验信息的时间time)和计算的video_key发送到服务器时,再使用另一套对称的加密算法来进行加密传输。

需要说明的是,客户端随机字符串randkey可以由客户端生成,也可以由客户端和服务器共同生成。

其中,客户端随机字符串randkey由客户端和服务器共同生成的实现流程如下:服务器生成服务器随机数,将服务器随机数作为触发信号发送到客户端,以供客户端根据所述触发信号生成客户端随机数,客户端返回客户端随机数到服务器,客户端根据服务器随机数和客户端随机数生成客户端随机字符串。同时,服务器接收客户端返回的客户端随机数,根据服务器随机数和客户端随机数采用与客户端相同算法生成服务端随机字符串。此时,客户端随机字符串和服务端随机字符串相同,因此,在后续处理过程中,无需客户端将客户端随机字符串随同视频流地址请求消息一起发送到服务器,服务器也可以实现权限校验。

本发明实施例中,在所述向客户端发送预先配置的lua脚本文件之前,所述方法还包括:根据预设的多种加密算法分别生成相应的多个lua脚本文件。相应的,所述向客户端发送预先配置的lua脚本文件,具体包括:

根据预设的文件选取规则从所述多个lua脚本文件中选取一个lua脚本文件,并将所述选取的lua脚本文件发送到所述客户端。在具体实现在,可以从多个lua脚本文件中随机选取一个lua脚本文件,并将所述选取的lua脚本文件发送到所述客户端。

进一步地,所述方法还包括:定时更新生成的所述多个lua脚本文件和/或所述文件选取规则。

在一个可选实施例中,使用lua脚本来编写一个视频流地址的key的加密算法,其中使用的加密算法和算法中使用的key值可以经常的进行更换,进而可以通过更新加密算法和/或算法中使用的key值,实现更新lua脚本文件的目的。

在实际应用中,服务器可以事先编写好多种变换的视频流地址的加密算法,并且可以隔一段时间后进行更新,根据得到的多种加密算法分别生成相应的多个lua脚本文件。当客户端登录直播网站时,将lua脚本下发到客户端,供客户端生成待请求视频流地址的客户端请求校验码。同时服务器也会使用同样的lua脚本来计视频流地址的服务器校验码key,从而校验客户端上报的是否正确。由于lua是一种脚本语言,所以不需要进行重新编译,发到客户端则可以直接运行,从而比较好的可以做到动态更新。

在本发明的一个可选实施例中,所述向客户端发送预先配置的lua脚本文件,包括:对所述lua脚本文件进行加密,向所述客户端发送加密后的lua脚本文件,以供所述客户端根据约定秘钥进行解密后执行所述lua脚本文件。

本实施例中,服务器预先与客户端约定好解密lua脚本文件的秘钥,当服务器向客户端发送lua脚本文件时,预先对下发给客户端的lua脚本使用加密算法进行加密,然后在发送到客户端,进一步加强鉴权过程中加密算法的破解难度,从而也可以从代码层次进行保护。

本发明实施例中,客户端播放器中设置有用于执行所述lua脚本文件的调用接口。具体步骤实现步骤如下:

通过动作脚本actionscript在客户端播放器中创建用于加载所述lua脚本文件的loader类;

通过动作脚本actionscript在所述loader类中创建用于获取所述lua脚本文件的地址请求接口;

在loader类中添加事件注册接口,通过所述事件注册接口注册第一回调函数,当所述lua脚本文件加载完成后,通过调用所述回调函数执行所述lua脚本文件,所述第一回调函数的关联事件为lua脚本文件加载完成事件。

在实际应用中,直播网站的客户端观看视频基本都是采用flash作为播放器。下面以flash作为客户端播放器对本发明技术方案进行解释说明。若采用flash作为播放器,则其视频流地址的鉴权逻辑也在flash中。本发明实施例通过在flash中来调用lua脚本文件来实现对视频播放的权限校验。具体实现如下:

1、首先定义一个actionscript的loader实例。

在actionscript中提供了一个loader类用来加载swf文件,或者是图片jpg,gif动画,或者是lua文件等。

具体实现如下:

varswfloader:loader=newloader();

并且设置swfloader.dataformat=urlloaderdataformat.text;

为text格式的文件。

2、注册swf加载完成的回调函数。

在actionscript中添加一个loader实例的接口,用来注册事件,当loader加载完成一个swf文件后,会回调这个注册的回调函数,以告诉他swf文件已经加载完成。

在loader中提供了一个addeventlistener接口用来注册事件。

接口具体原型如下:

其中,第一个参数type:string用来表示注册的事件类型,对应于本文则是event.complete,表示注册swf加载完成事件;第二个参数listener:function用来表示注册的完成事件完成后的回调函数,用于触发回调函数执行;第三个参数priority:int用于标示事件的优先级,使用默认值0;第四个参数useweakreference:boolean指定回调函数是弱应用还是强引用,使用默认值false。

3、创建请求swf的接口urlrequest。

actionscript在所述loader类中创建用于获取所述lua脚本文件的地址请求接口,具体接口如下:

urlrequest(url:string=null)

其中,参数url:string标示传入的url地址或者本地路径。对于本文则是lua文件的url地址。

4、调用loader实例的接口来loader请求的swf文件。

通过调用loader的接口来加载swf文件。具体接口如下:

load(request:urlrequest,context:loadercontext=null)

其中参数request:urlrequest就是加载的请求对象,就是步骤3创建的urlrequest对象。

其中参数context:loadercontext用来设置域信息,本文使用默认值空null。

5、编写回调函数swfloadcompletehandler。

编写回调函数swfloadcompletehandle,此函数即是上面调用的注册完成事件填入的回调函数。

当文件加载完成后,会调用该回调函数,通过回调函数调用lua脚本文件。具体如下:

首先定义一个varlua:luaalchemy=newluaalchemy();在flash中调用lua的组件。

然后设置lua的执行上下文为当前类的上下文。

lua.setglobal("this",this);

若对服务器对lua脚本文件进行了加密,还所以在下载完成后可以使用对应的解密算法解密lua脚本文件,

decode(swfloader.data);

最后调用组件的接口执行所述lua脚本文件,lua.dostring(swfloader.data);实现从服务器下载lua文件来执行对视频流地址的鉴权。

对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

图2示意性示出了本发明一个实施例的视频播放的权限校验装置的结构示意图。参照图2,本发明实施例的视频播放的权限校验装置具体包括发送模块201、接收模块202、第一生成模块203以及校验模块204,其中:

所述的发送模块201,用于向客户端发送预先配置的lua脚本文件,以供所述客户端通过执行所述lua脚本文件对客户端的校验信息进行加密,以生成视频流地址的客户端请求校验码。本实施例中,所述校验信息包括客户端随机字符串和客户端信息。其中,客户端随机字符串为所述客户端生成的随机字符串;客户端信息包括用户信息和直播服务器返回的token值,所述用户信息包括客户端的设备标识、客户端的ip地址、直播间id和/或所述客户端生成所述校验信息的时间。

所述的接收模块202,用于接收客户端发送的视频流地址请求消息,所述视频流地址请求消息中携带有所述客户端请求校验码以及所述校验信息;

所述的第一生成模块203,用于采用与所述lua脚本文件对应的加密算法对所述校验信息进行加密,生成服务器校验码;

所述的校验模块204,用于当所述服务器校验码与所述客户端请求校验码一致时,确定权限校验成功,并向所述客户端返回所请求的视频流地址。

在本发明的一个可选实施例中,所述装置还包括附图中未示出的第二生成模块,所述的第二生成模块,用于在所述向客户端发送预先配置的lua脚本文件之前,根据预设的多种加密算法分别生成相应的多个lua脚本文件。

相应的,所述发送模块201,具体用于根据预设的文件选取规则从所述多个lua脚本文件中选取一个lua脚本文件,并将所述选取的lua脚本文件发送到所述客户端。在具体实现在,所述发送模块201,具体可以从多个lua脚本文件中随机选取一个lua脚本文件,并将所述选取的lua脚本文件发送到所述客户端。

本实施例中,所述装置还包括:

更新模块,用于定时更新所述第二生成模块生成的所述多个lua脚本文件和/或所述文件选取规则。

在本发明的一个可选实施例中,所述发送模块201,具体用于对所述lua脚本文件进行加密,向所述客户端发送加密后的lua脚本文件,以供所述客户端根据约定秘钥进行解密后执行所述lua脚本文件。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

此外,本发明另一实施例还提供了一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,所述电路板安置在所述壳体围成的空间内部,所述处理器和所述存储器设置在所述电路板上;所述电源电路,用于为所述电子设备的各个电路或器件供电;所述存储器用于存储可执行程序代码;所述处理器通过读取所述存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行以下步骤:向客户端发送预先配置的lua脚本文件,以供所述客户端通过执行所述lua脚本文件对客户端的校验信息进行加密,以生成视频流地址的客户端请求校验码;接收客户端发送的视频流地址请求消息,所述视频流地址请求消息中携带有所述客户端请求校验码以及所述校验信息;采用与所述lua脚本文件对应的加密算法对所述校验信息进行加密,生成服务器校验码;若所述服务器校验码与所述客户端请求校验码一致,则确定权限校验成功,向所述客户端返回所请求的视频流地址,以供所述客户端基于所述视频流地址进行视频播放。

本发明实施例提供的视频播放的权限校验方法及装置,通过使用lua脚本文件实现对视频流地址的鉴权,由于lua是一种脚本语言,不需要编译可以直接执行,进而可以通过频繁的对lua脚本文件的更新,实现对视频流地址鉴权方式的更新,增加鉴权过程中加密算法的破解难度,从而能够有效地实现对视频流地址的鉴权验证,提高视频直播过程的安全性,提升用户体验。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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