发明内容
本发明实施例所要解决的技术问题在于,提供一种获取网页中音/视频链接地址的方法及装置,利用钩子程序,在用户想下载网页中的音/视频文件,又找不到音/视频真实的链接地址时,能准确帮助用户找到音视频真实的链接地址。
为了解决上述技术问题,本发明实施例提供了一种获取网页中音/视频链接地址的方法,包括:
向终端的网页浏览器进程中注入钩子程序,获取所述网页浏览器向服务器发送的请求数据包,包括:建立钩子程序,所述钩子程序中具有获取所述网页浏览器向服务器发送的请求数据包的动态数据库;
根据所述请求数据包,模拟所述网页浏览器向所述服务器发送页面请求,包括:
将所述请求数据包按照各自采用的网络协议进行分类;及
根据所述请求数据包中的信息,以及该请求数据包采用的网络协议,模拟所述网页浏览器向所述服务器发送页面请求,其中,所述页面请求为文件属性的请求;
接收所述服务器反馈的应答数据包,判断所述应答数据包中携带链接地址是否为音/视频数据的链接地址;若判断为是,则获取该音/视频链接地址。
其中,所述向终端的网页浏览器进程中注入钩子程序,获取所述网页浏览器向服务器发送的请求数据包,包括:
将所述钩子程序注入所述网页浏览器的进程中,获取所述网页浏览器向服务器发送的请求数据包。
其中,所述接收所述服务器反馈的应答数据包,判断所述应答数据包中携带链接地址是否为音/视频数据的链接地址,包括:
接收所述服务器反馈的应答数据包,所述应答数据包中包括:服务器状态码、内容长度Content-Length、内容类型Content-Type、链接地址;
判断所述应答数据包中携带的Content-Type是否为音/视频类型;
若判断为是,则判定所述应答数据包中携带链接地址为音/视频数据的链接地址;否则,判定所述应答数据包中携带链接地址不是音/视频数据的链接地址。
其中,所述接收所述服务器反馈的应答数据包,判断所述应答数据包中携带链接地址是否为音/视频数据的链接地址,包括:
接收所述服务器反馈的应答数据包,所述应答数据包中包括:服务器状态码、内容长度Content-Length、内容类型Content-Type、链接地址;
判断所述应答数据包中携带的Content-Type是否为音/视频类型;若判断为否,则判定所述应答数据包中携带链接地址不是音/视频数据的链接地址;
若判断为是,则进一步判断所述Content-Length是否大于预设的数值;若判断为是,则判定所述应答数据包中携带链接地址为音/视频数据的链接地址;否则,判定所述应答数据包中携带链接地址不是音/视频数据的链接地址。
其中,所述获取该音/视频链接地址包括:
获取该音/视频链接地址,并存储在本地;
当用户需要下载对应的音/视频时,向用户提供所述音/视频链接地址。
相应的,本发明实施例还提供一种获取网页中音/视频链接地址的装置,包括:
请求数据包获取模块,用于向终端的网页浏览器进程中注入钩子程序,获取所述网页浏览器向服务器发送的请求数据包,所述请求数据包获取模块包括用于建立钩子程序的模块,所述的钩子程序中具有获取所述网页浏览器向服务器发送的请求数据包的动态数据库;
模拟请求模块,用于根据所述请求数据包获取模块所获取的请求数据包,模拟所述网页浏览器向所述服务器发送页面请求,所述模拟请求模块包括:
数据包分类单元,用于将所述请求数据包获取模块所获取的请求数据包按照其各自采用的网络协议进行分类;及
模拟请求单元,用于根据所述请求数据包中的信息,以及该请求数据包采用的网络协议,模拟所述网页浏览器向所述服务器发送页面请求,其中,所述页面请求为文件属性的请求;
链接分析及获取模块,用于接收所述服务器反馈的应答数据包,判断所述应答数据包中携带链接地址是否为音/视频数据的链接地址;若判断为是,则获取该音/视频链接地址。
其中,所述链接分析及获取模块包括:
数据包接收单元,用于接收服务器反馈的应答数据包,所述应答数据包中包括:服务器状态码、内容长度Content-Length、内容类型Content-Type、链接地址;
第一判断单元,用于判断所述应答数据包中携带的Content-Type是否为音/视频类型;若判断为是,则判定所述应答数据包中携带链接地址为音/视频数据的链接地址;否则,判定所述应答数据包中携带链接地址不是音/视频数据的链接地址。
其中,所述链接分析及获取模块包括:
数据包接收单元,用于接收服务器反馈的应答数据包,所述应答数据包中包括:服务器状态码、内容长度Content-Length、内容类型Content-Type、链接地址;
第二判断单元,判断所述应答数据包中携带的Content-Type是否为音/视频类型;若判断为否,则判定所述应答数据包中携带链接地址不是音/视频数据的链接地址;若判断为是,则交由第三判断单元进一步判断;
第三判断单元,用于判断所述Content-Length是否大于预设的数值;若判断为是,则判定所述应答数据包中携带链接地址为音/视频数据的链接地址;否则,判定所述应答数据包中携带链接地址不是音/视频数据的链接地址。
本发明实施例提供的获取网页中音/视频链接地址的方法及装置,利用钩子程序,在用户想下载网页中的音/视频文件,又找不到音/视频真实的链接地址时,能准确帮助用户找到音视频真实的链接地址。
具体实施方式
本发明实施例提供的获取网页中音/视频链接地址的方法及装置,利用钩子程序,在用户想下载网页中的音/视频文件,又找不到音/视频真实的链接地址时,能准确帮助用户找到音视频真实的链接地址。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,为本发明提供的获取网页中音/视频链接地址的方法第一实施例流程示意图,如图1所示,包括:
在步骤S100,向终端的网页浏览器进程中注入钩子程序,并利用所述钩子程序,获取网页浏览器向服务器发送的请求数据包。
在步骤S101,根据获取的所述请求数据包,模拟所述网页浏览器向所述服务器发送页面请求。
在步骤S102,接收所述服务器反馈的应答数据包。并判断所述应答数据包中携带链接地址是否为音/视频数据的链接地址,若判断为是,则执行步骤S103;否则结束本流程。
在步骤S103,获取该音/视频链接地址,供用户需要下载对应的音/视频数据时使用。
本发明实施例提供的获取网页中音/视频链接地址的方法,利用钩子程序,获取网页中的音/视频文件真实的链接地址,方便用户下载。
参见图2,为本发明提供的获取网页中音/视频链接地址的方法第二实施例流程示意图。在本实施例中,将更为详细的描述该获取网页中音/视频链接地址的方法流程。如图2所示,该方法流程包括:
在步骤S200,建立钩子程序,所述钩子程序中具有获取所述网页浏览器向服务器发送的请求数据包的动态数据库。更为具体的,钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理消息之前处理它。钩子机制允许应用程序截获处理Windows消息或特定事件。在本发明实施例中建立的钩子程序具有一个动态数据库,用于截获网页浏览器向服务器发送的请求数据包。
在步骤S201,将所述钩子程序注入所述网页浏览器的进程中,获取所述网页浏览器向服务器发送的请求数据包。更为具体的,用windows钩子注入浏览器进程(如IE、Chrome、Safari,Opera、Firefox等),挂接浏览器进程中请求数据包函数(send WSASend)该钩子程序实际上是一个处理消息的程序段,通过系统调用,把它注入网页浏览器的进程中。每当网页浏览器有请求数据包发出,钩子程序就先捕获该请求数据包。这时钩子程序即可以加工处理(改变)该请求数据包,也可以不作处理而继续传递该请求数据包,还可以强制结束请求数据包的传递。在本发明实施例中,钩子程序对服务器发送的请求数据包不作处理而继续传递,只是自身再复制一个相同的请求数据包。
在步骤S202,将所述请求数据包按照其各自采用的网络协议进行分类。更为具体的,根据获取的请求数据包所采用的不同网络协议,对请求数据包进行分类,请求数据的网络协议包括:http请求数据包,mms请求数据包,rtmp请求数据包,rtsp请求数据包等等。对请求数据包进行分类的原因在于,利于后续步骤根据对应的网络协议解析出所述请求数据包所携带的信息。
在步骤S203,根据所述请求数据包中的信息,以及该请求数据包采用的网络协议,模拟所述网页浏览器向所述服务器发送页面请求。更为具体的,本步骤为根据所述请求数据包所采用的网络协议,解析该请求数据包,获取所述请求数据包的信息。然后根据所述请求数据包中的信息,以及该请求数据包原本采用的网络协议,模拟所述网页浏览器向所述服务器发送页面请求。
进一步的,所述页面请求为文件属性的请求,远比原本的请求数据包简单。本实施例中的页面请求发送给服务器,仅请求获取链接地址、服务器状态码、Content-Length(内容长度)、Content-Type(内容类型)等文件属性信息,并不请求获取握手信号、Cookie等附加信息,既节约终端与服务器之间的带宽,又使后续的处理更加简单、方便(因为服务器反馈的信息少)。
在步骤S204,接收服务器反馈的应答数据包,所述应答数据包中包括:服务器状态码、内容长度Content-Length、内容类型Content-Type、链接地址;该应答数据包中的内容与页面请求中请求获取的内容是对应的,因为页面请求中请求获取的内容比正常的请求数据包简单,所以应答数据包中的内容也比正常的应答数据包中的内容更少。
进一步的,应答数据包中Content-Type记录的是应答数据包中链接地址所对应的文件的内型,Content-Length记录的则是应答数据包中链接地址所对应的文件的大小。
在步骤S205,判断应答数据包中携带的Content-Type是否为音/视频类型;若判断为是,则执行步骤S206;否则,执行步骤S207。更为具体的,通过判断应答数据包中携带的Content-Type中的是否是音/视频类型,就可以判断应答数据包中携带的链接地址所对应的文件是否是音/视频文件。进一步的,音视频类型包括audio,video,flv,mp4,mp3,audio/x-mpeg,audio/x-wav,audio/x-ms-wma,video/x-msvideo,video/mpeg,video/quicktime,video/x-flv,video/mp4,video/x-ms-asf,video/x-ms-wmv,application/x-octet-stream,binary/octet-stream,application/octet-stream,application/x-shockwave-flash,text/plain,application/x-rhapsodycontent,flv-application/octet-stream等。
在步骤S206,判定所述应答数据包中携带链接地址为音/视频数据的链接地址;获取该音/视频链接地址,并存储在本地;当用户需要下载对应的音/视频时,向用户提供所述音/视频链接地址。
优选的,为了提高判断的准确定,本步骤S206还可以是:
进一步判断所述Content-Length是否大于预设的数值(例如1K);若判断为是,则判定所述应答数据包中携带链接地址为音/视频数据的链接地址,获取该音/视频链接地址,并存储在本地;当用户需要下载对应的音/视频时,向用户提供所述音/视频链接地址。若所述Content-Length小于预设的数值,则执行步骤S207。
在步骤S207,判定所述应答数据包中携带链接地址不是音/视频数据的链接地址,丢弃该链接地址,重新寻找音/视频的真实链接地址。
本发明实施例提供的获取网页中音/视频链接地址的方法,利用钩子程序,截获浏览器发送的请求数据包,再通过模拟浏览器发送页面请求后,分析服务器反馈的应答数据包,找到载网页中的音/视频文件的真实链接地址,当用户需要下载对应的音/视频时向用户提供,方便用户操作节约用户时间。
参见图3,为本发明提供的获取网页中音/视频链接地址的装置第一实施例结构示意图,如图3所示,该装置包括:
请求数据包获取模块1,用于向终端的网页浏览器进程中注入钩子程序,获取所述网页浏览器向服务器发送的请求数据包。
模拟请求模块2,用于根据所述请求数据包获取模块1所获取的请求数据包,模拟所述网页浏览器向所述服务器发送页面请求。
链接分析及获取模块3,用于接收所述服务器反馈的应答数据包,判断所述应答数据包中携带链接地址是否为音/视频数据的链接地址;若判断为是,则获取该音/视频链接地址。
本发明实施例提供的获取网页中音/视频链接地址的装置,利用钩子程序,获取网页中的音/视频文件真实的链接地址,方便用户下载。
参见图4,为本发明提供的获取网页中音/视频链接地址的装置第二实施例结构示意图,在本实施例中,将更为详细的描述该装置的结构,该装置如图4所示,包括:请求数据包获取模块1、模拟请求模块2、链接分析及获取模块3。
请求数据包获取模块1,用于向终端的网页浏览器进程中注入钩子程序,获取所述网页浏览器向服务器发送的请求数据包。更为具体的,钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理消息之前处理它。钩子机制允许应用程序截获处理Windows消息或特定事件。在本发明实施例中请求数据包获取模块1建立的钩子程序具有一个动态数据库,用于截获网页浏览器向服务器发送的请求数据包。
进一步的,请求数据包获取模块1用windows钩子注入浏览器进程(如IE、Chrome、Safari,Opera、Firefox等),挂接浏览器进程中请求数据包函数(sendWSASend)。每当网页浏览器有请求数据包发出,钩子程序就先捕获该请求数据包。这时钩子程序即可以加工处理(改变)该请求数据包,也可以不作处理而继续传递该请求数据包,还可以强制结束请求数据包的传递。在本发明实施例中,请求数据包获取模块1的钩子程序对服务器发送的请求数据包不作处理而继续传递,只是自身再复制一个相同的请求数据包发送给模拟请求模块2。
模拟请求模块2,用于根据所述请求数据包获取模块1所获取的请求数据包,模拟所述网页浏览器向所述服务器发送页面请求。更为具体的,模拟请求模块2包括:
数据包分类单元21,用于将所述请求数据包获取模块所获取的请求数据包按照其各自采用的网络协议进行分类。更为具体的,数据包分类单元21根据获取的请求数据包所采用的不同网络协议,对请求数据包进行分类,请求数据的网络协议包括:http请求数据包,mms请求数据包,rtmp请求数据包,rtsp请求数据包等等。数据包分类单元21对请求数据包进行分类的原因在于,利于模拟请求单元22根据对应的网络协议解析出所述请求数据包所携带的信息。
模拟请求单元22,用于根据所述请求数据包中的信息,以及该请求数据包采用的网络协议,模拟所述网页浏览器向所述服务器发送页面请求。更为具体的,模拟请求单元22根据数据包分类单元21对请求数据包的分类,采用对应的网络协议解析请求数据包,获取所述请求数据包的信息。然后模拟请求单元22根据所述请求数据包中的信息,以及该请求数据包原本采用的网络协议,模拟所述网页浏览器向所述服务器发送页面请求。
进一步的,模拟请求单元22发送的页面请求为文件属性的请求,远比原本的请求数据包简单。本实施例中,模拟请求单元22将页面请求发送给服务器,仅请求获取链接地址、服务器状态码、Content-Length(内容长度)、Content-Type(内容类型)等文件属性信息,并不请求获取握手信号、Cookie等附加信息,如此,既节约终端与服务器之间的带宽,又使后续的处理更加简单、方便(因为服务器反馈的信息少)。
链接分析及获取模块3,用于接收所述服务器反馈的应答数据包,判断所述应答数据包中携带链接地址是否为音/视频数据的链接地址;若判断为是,则获取该音/视频链接地址。更为具体的,该链接分析及获取模块3包括:
数据包接收单元31,用于接收服务器反馈的应答数据包,所述应答数据包中包括:服务器状态码、内容长度Content-Length、内容类型Content-Type、链接地址;该应答数据包中的内容与模拟请求单元22发送的页面请求中请求获取的内容是对应的,因为页面请求中请求获取的内容比正常的请求数据包简单,所以应答数据包中的内容也比正常的应答数据包中的内容更少。
进一步的,应答数据包中Content-Type记录的是应答数据包中链接地址所对应的文件的内型,Content-Length记录的则是应答数据包中链接地址所对应的文件的大小。
第一判断单元32,用于判断所述应答数据包中携带的Content-Type是否为音/视频类型;若判断为是,则判定所述应答数据包中携带链接地址为音/视频数据的链接地址,并获取该音/视频链接地址;否则,判定所述应答数据包中携带链接地址不是音/视频数据的链接地址。
更为具体的,第一判断单元32通过判断应答数据包中携带的Content-Type中的是否是音/视频类型,就可以判断应答数据包中携带的链接地址所对应的文件是否是音/视频文件。音视频类型包括audio,video,flv,mp4,mp3,audio/x-mpeg,audio/x-wav,audio/x-ms-wma,video/x-msvideo,video/mpeg,video/quicktime,video/x-flv,video/mp4,video/x-ms-asf,video/x-ms-wmv,application/x-octet-stream,binary/octet-stream,application/octet-stream,application/x-shockwave-flash,text/plain,application/x-rhapsodycontent,flv-application/octet-stream等。
第一判断单元32若判定所述应答数据包中携带链接地址为音/视频数据的链接地址,则获取该音/视频链接地址,并存储在本地;当用户需要下载对应的音/视频时,向用户提供所述音/视频链接地址。第一判断单元32若判定所述应答数据包中携带链接地址不是音/视频数据的链接地址,则丢弃该链接地址,重新寻找音/视频的真实链接地址。
优选的,为了提高判断的准确定,本发明实施例还提供获取网页中音/视频链接地址的装置第三实施例,在本实施例中,获取网页中音/视频链接地址的装置包括:请求数据包获取模块4、模拟请求模块5、链接分析及获取模块6,且请求数据包获取模块4、模拟请求模块5与上一实施例中的数据包获取模块1、模拟请求模块2具有相同的结构,不同之处在于链接分析及获取模块6,在本实施例中,该链接分析及获取模块6用于接收所述服务器反馈的应答数据包,判断所述应答数据包中携带链接地址是否为音/视频数据的链接地址;若判断为是,则获取该音/视频链接地址。更为具体的,该链接分析及获取模块6包括:
数据包接收单元61,用于接收服务器反馈的应答数据包,所述应答数据包中包括:服务器状态码、内容长度Content-Length、内容类型Content-Type、链接地址。
第二判断单元62,判断所述应答数据包中携带的Content-Type是否为音/视频类型;若判断为否,则判定所述应答数据包中携带链接地址不是音/视频数据的链接地址;若判断为是,则交由第三判断单元63进一步判断。
第三判断单元63,用于进一步判断所述Content-Length是否大于预设的数值(例如1K);若判断为是,则第三判断单元63判定所述应答数据包中携带链接地址为音/视频数据的链接地址,并存储在本地;当用户需要下载对应的音/视频时,向用户提供所述音/视频链接地址。
若所述Content-Length小于预设的数值,则第三判断单元63判定所述应答数据包中携带链接地址不是音/视频数据的链接地址,丢弃该链接地址,重新寻找音/视频的真实链接地址。
本发明实施例提供的获取网页中音/视频链接地址的装置,利用钩子程序,截获浏览器发送的请求数据包,再通过模拟浏览器发送页面请求后,分析服务器反馈的应答数据包,找到载网页中的音/视频文件的真实链接地址,当用户需要下载对应的音/视频时向用户提供,方便用户操作节约用户时间。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。