一种资源链接获取方法、装置、电子设备及存储介质转让专利
申请号 : CN202011611421.X
文献号 : CN112632358B
文献日 : 2021-09-14
发明人 : 熊毅
申请人 : 北京天融信网络安全技术有限公司 , 北京天融信科技有限公司 , 北京天融信软件有限公司
摘要 :
权利要求 :
1.一种资源链接获取方法,其特征在于,包括:获取访问链接对应的待处理网页;
查找所述待处理网页中所有文档节点存在的事件,并将所述文档节点存在的事件存储至待处理队列;
使用无头浏览器以多线程的方式模拟触发所述待处理队列中的事件;
拦截所述待处理队列中的事件在触发过程中产生的资源请求,并获取所述资源请求中的资源链接;
其中,所述拦截所述待处理队列中的事件在触发过程中产生的资源请求,并获取所述资源请求中的资源链接,包括:使用运行中的代理进程以全局代理方式或者局部代理方式,针对所述待处理队列中的事件在触发过程中产生的资源请求进行代理拦截,并获取所述资源请求中的资源链接。
2.根据权利要求1所述的方法,其特征在于,所述获取访问链接对应的待处理网页,包括:
获取所述访问链接;
使用所述无头浏览器加载所述访问链接,并将所述访问链接对应的返回数据动态渲染为所述待处理网页。
3.根据权利要求1所述的方法,其特征在于,在所述获取所述资源请求中的资源链接之后,还包括:
使用预先设置的路由规则对所述资源链接进行过滤。
4.根据权利要求1所述的方法,其特征在于,在所述获取所述资源请求中的资源链接之后,还包括:
若所述资源链接的链接类型为网页链接,则将所述资源链接确定为所述访问链接,并返回执行所述获取访问链接对应的待处理网页的步骤。
5.根据权利要求1所述的方法,其特征在于,在所述获取所述资源请求中的资源链接之后,还包括:
判断在资源类型列表中是否查找到所述资源链接中的文件后缀;
若是,则将所述资源类型列表中所述文件后缀对应的链接类型确定所述资源链接的链接类型。
6.根据权利要求5所述的方法,其特征在于,在所述判断在资源类型列表中是否查找到所述资源链接中的文件后缀之后,还包括:若在所述资源类型列表中没有查找到所述资源链接中的文件后缀,则根据所述资源请求对应的响应头部信息确定所述资源链接的链接类型。
7.一种资源链接获取装置,其特征在于,包括:处理网页获取模块,用于获取访问链接对应的待处理网页;
事件查找存储模块,用于查找所述待处理网页中所有文档节点存在的事件,并将所述文档节点存在的事件存储至待处理队列;
事件模拟触发模块,用于使用无头浏览器以多线程的方式模拟触发所述待处理队列中的事件;
资源链接获取模块,用于拦截所述待处理队列中的事件在触发过程中产生的资源请求,并获取所述资源请求中的资源链接;
其中,所述拦截所述待处理队列中的事件在触发过程中产生的资源请求,并获取所述资源请求中的资源链接,包括:使用运行中的代理进程以全局代理方式或者局部代理方式,针对所述待处理队列中的事件在触发过程中产生的资源请求进行代理拦截,并获取所述资源请求中的资源链接。
8.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如权利要求1至6任一所述的方法。
9.一种存储介质,其特征在于,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至6任一所述的方法。
说明书 :
一种资源链接获取方法、装置、电子设备及存储介质
技术领域
背景技术
进程资源或线程资源,同时,多次加载和跳转请求获取网页也会造成带宽资源的浪费。因
此,使用现有的爬虫在公开网页中抓取资源链接的过程中存在计算资源和带宽资源过度消
耗的问题。
发明内容
题。
理队列;使用无头浏览器以多线程的方式模拟触发待处理队列中的事件;拦截待处理队列
中的事件在触发过程中产生的资源请求,并获取资源请求中的资源链接。在上述的实现过
程中,通过将网页中存在的事件存储至待处理队列,再触发和拦截待处理队列中的事件,有
效地拦截到事件在触发过程中产生的资源请求,避免了网页页面多次跳转、页面重新渲染
和多次弹出新的页面等等情况,同时也避免了这些情况带来的计算资源和带宽资源的过度
消耗,从而有效地节约了计算资源和带宽资源。
在上述的实现过程中,通过使用无头浏览器加载和渲染为待处理网页,由于无头浏览器可
以动态地渲染网站网页,无头浏览器是无界面的且支持程序化的集成引擎,从而更加地节
省计算资源,减小了使用有图形的浏览器来加载和渲染网页导致卡顿的概率。
资源请求进行代理拦截,并获取资源请求中的资源链接。在上述的实现过程中,针对待处理
队列中的事件在触发过程中产生的资源请求进行代理拦截,并获取资源请求中的资源链
接,有效地增加拦截和获取资源链接的速度,提高处理资源请求的性能。
规则对资源链接进行过滤,有效地过滤掉资源链接中不相关的链接,同时基于不同的路由
分发规则进行链接分发,从而有效地提高了对资源链接进行过滤的灵活性。
应的待处理网页的步骤。在上述的实现过程中,通过在资源链接的链接类型为网页链接时,
根据资源链接作为访问链接进行深度爬取,从而获得更多的资源链接。
对应的链接类型确定资源链接的链接类型。在上述的实现过程中,通过根据资源类型列表
中文件后缀对应的链接类型来确定资源链接的链接类型,从而避免了每个资源链接都通过
完整的响应信息来确定链接类型,从而有效地提高了确定链接类型的速度。
源请求对应的响应头部信息确定资源链接的链接类型。在上述的实现过程中,通过根据资
源请求对应的响应头部信息确定资源链接的链接类型,从而避免了根据无法匹配到文件后
缀时,确定链接类型错误的情况,有效地提高了确定资源链接的链接类型的准确率。
存在的事件,并将文档节点存在的事件存储至待处理队列;事件模拟触发模块,用于使用无
头浏览器以多线程的方式模拟触发待处理队列中的事件;资源链接获取模块,用于拦截所
述待处理队列中的事件在触发过程中产生的资源请求,并获取资源请求中的资源链接。
返回数据动态渲染为待处理网页。
链接对应的待处理网页的步骤。
资源类型列表中查找到资源链接中的文件后缀,则将资源类型列表中文件后缀对应的链接
类型确定资源链接的链接类型。
信息确定资源链接的链接类型。
附图说明
作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他相关的附图。
具体实施方式
行交互;WebDriver的目标是提供一套精心设计的面向对象的应用程序接口(Application
Programming Interface,API),从而更好地支持现代高级web应用的测试工作。
提供计算服务的设备,服务器例如:x86服务器以及非x86服务器,非x86服务器包括:大型
机、小型机和UNIX服务器。
接获取产品的功能,避免资源链接获取产品在获取资源链接的过程中产生的网页页面多次
跳转、页面重新渲染和多次弹出新的页面等等情况,此处的资源链接获取产品包括但不限
于:爬虫软件、雷达软件、资源下载软件和搜索引擎爬虫机器等等。
待处理队列中的事件,有效地拦截到事件在触发过程中产生的资源请求,避免了网页页面
多次跳转、页面重新渲染和多次弹出新的页面等等情况,同时也避免了这些情况带来的计
算资源和带宽资源的过度消耗,从而有效地节约了计算资源和带宽资源;上述的资源链接
获取方法可以包括:
中事先配置的),并初始化爬虫引擎,然后使用爬虫引擎接收其它终端设备发送的多个访问
链接,此处的访问链接都是网站页面类型的链接,即能够返回网站页面的链接;然后,将访
问链接的域名作为参数在事先建立的数据库中进行查询,获得该域名的连通速度,将该域
名的连通速度作为访问链接的连通性的评价指标,从而预判多个访问链接的连通性;最后,
将连通速度大于预设阈值的访问链接存储至文件系统、数据库或移动存储设备中;其中,预
设阈值可以根据具体实际情况进行设置,例如设置为5秒、8秒或10秒等等。第二种获得方
式,获取预先存储的访问链接,具体例如:从文件系统中获取访问链接,或者从数据库中获
取访问链接,或者从移动存储设备中获取访问链接。
的返回数据后,将访问链接对应的返回数据动态渲染为待处理网页,可以捕获并存储在动
态渲染过程中产生的动态链接地址;其中,具体可以使用的无头浏览器包括:PhantomJS浏
览器、无头模式的Chrome浏览器和无头模式的Firefox浏览器等等;返回数据包括但不限
于:可加载执行JavaScript脚本、CSS的样式文件和图片文件等等。
链接,并使用该程序控制浏览器加载访问链接,并将访问链接对应的返回数据动态渲染为
待处理网页;其中,可以使用的浏览器包括:Microsoft Edge浏览器、Google Chrome浏览
器、Mozilla Firefox浏览器、Opera浏览器、Safari浏览器和Firefox浏览器等等。
PhantomJS浏览器加载访问链接,并将访问链接对应的返回数据动态渲染为待处理网页,可
以捕获并存储在动态渲染过程中产生的动态链接地址;其中,返回数据包括但不限于:可加
载执行JavaScript脚本、CSS的样式文件和图片文件等等。
XML)文档解析结果的树型结构的内部数据模型;一个XML文档可以包括根节点、内部节点、
叶子节点、备注节点等。
BeautifulSoup程序套件来查找待处理网页中所有文档节点存在的事件,并使用WebDriver
工具和Selenium工具将文档节点存在的事件存储至待处理队列。
择出可能存在事件的DOM节点;再然后,判断该DOM节点是否绑定有事件;若该DOM节点绑定
有事件,则使用JavaScript程序提取出该DOM节点的事件,并将DOM节点的事件存储至待处
理队列;其中,此处的事件包括但不限于:待处理网页中的超链接点击事件、表单点击事件、
鼠标点击事件和键盘点击事件等等;上述的待处理队列可以使用链表或者数组来具体实
现,待处理队列也可以是一个固定大小的循环队列。
浏览器、无头模式的Chrome浏览器和无头模式的Firefox浏览器等等。
从而更加地节省计算资源,减小了使用有图形的浏览器来加载和渲染网页导致卡顿的概
率。
JavaScript脚本、jQuery和Python等程序获取资源请求中的资源链接,或者,使用Python程
序中的正则表达式、XPath和BeautifulSoup程序套件来获取资源请求中的资源链接,或者,
使用Node.js和puppeteer等工具来获取资源请求中的资源链接。
列中的事件在触发过程中产生的资源请求进行代理拦截,并获取资源请求中的资源链接;
其中,此处的代理软件包括但不限于:easy connect软件等等;上述的针对待处理队列中的
事件在触发过程中产生的资源请求进行代理拦截的方式包括:第一种代理拦截方式,全局
代理拦截,具体例如:使用运行中的代理进程拦截待处理队列中的事件在触发过程中产生
的资源请求,此处的代理进程既可以代理拦截无头浏览器的资源请求,也可以代理拦截其
它软件进程产生的资源请求;第二中代理拦截方式,局部代理拦截,具体例如:启动无头浏
览器的代理进程,并使用该无头浏览器的代理进程拦截无头浏览器产生的所有资源请求。
步骤S110至步骤S140,就可以获得更多的资源链接,具体例如:若资源链接的链接类型为网
页链接,则将资源链接确定为访问链接,并返回执行步骤S110中的获取访问链接对应的待
处理网页。
理队列中的事件,并拦截待处理队列中的事件在触发过程中产生的资源请求。也就是说,通
过将网页中存在的事件存储至待处理队列,再触发和拦截待处理队列中的事件,有效地拦
截到事件在触发过程中产生的资源请求,避免了网页页面多次跳转、页面重新渲染和多次
弹出新的页面等等情况,同时也避免了这些情况带来的计算资源和带宽资源的过度消耗,
从而有效地节约了计算资源和带宽资源。
滤,该实施方式可以包括:
的资源链接,则可以使用后缀路由来对资源链接进行过滤,或者,若在业务需求中只关注界
面内点击事件所产生的资源链接,则使用事件路由来对资源链接进行过滤。
则按照配置的路由规则优先级来对资源链接进行过滤匹配。在没有配置路由规则的优先级
的情况下,默认的优先级从大到小的排列为:后缀路由、域名路由、事件路由、正则路由和默
认路由;其中,此处的后缀路由是指基于请求路径后缀名称来匹配资源链接的规则,当然在
后缀路由匹配过程中可以使用通配符,具体例如:在后缀路由过程中,若需要明确请求链接
后缀字符串如html或js,则可以通过以“*”号开头或结尾的通配符方式来过滤资源链接。上
述的域名路由是指基于资源链接对应请求路径的域名来匹配资源链接地址,域名路由可以
支持当前域名以及该域名下的子域名。上述的事件路由是指筛选指定触发事件产生的资源
链接对应的请求地址,具体例如:根据鼠标事件(单击、双击、鼠标移入移除等)或者键盘事
件(按下某一个健)来过滤资源链接,该事件的属性来源是爬虫引擎模拟触发事件后提供
的。上述的正则路由是指采用正则表达式的方式匹配请求地址,该正则表达式为通用正则
表达式,可以用来应对复杂的路径匹配。上述的默认路由是指,在未匹配到其它路由规则
后,所有请求将都经过该路由的规则,这是一种默认(defalut)的路由模式,当未开启默认
路由,且其它路由规则也均未匹配上,该资源链接对应的请求地址将被标记丢弃。
型列表;首先,从资源链接中分割并提取出文件后缀,具体可以使用斜杠线作为分割符对资
源链接字符串进行分割,然后提取出分割后的字符串数组的最后字符串,使用点作为分割
符以同样的方式对最后字符串进行分割,获得文件后缀;然后在关系型数据库或者非关系
数据库中的资源类型数据表中查找资源链接中的文件后缀,判断在资源类型列表中是否查
找到资源链接中的文件后缀;其中,可以使用的关系型数据库例如:Mysql、PostgreSQL、
Oracle和SQLSever等;可以使用的非关系型数据库包括:grakn数据库、Neo4j图数据库、
Hadoop子系统HBase、MongoDB和CouchDB等。
源链接对应的链接类型为图片链接,也记录了后缀为htm和HTML的资源链接对应的链接类
型为网页链接,也就是说,资源类型列表中记录了文件后缀与链接类型的映射关系,可以通
过文件后缀与链接类型的映射关系来确定出具体的文件后缀对应的链接类型;若在资源类
型列表中查找到资源链接中的文件后缀(例如MP4),则将资源类型列表中文件后缀对应的
链接类型(例如视频链接)确定资源链接的链接类型(例如视频链接)。
服务器根据该资源请求返回对应的响应头部信息;然后,电子设备接收该服务器返回的响
应头部信息,并根据该资源请求对应的响应头部信息确定资源链接的链接类型。在上述的
实现过程中,通过使用预先设置的路由规则对资源链接进行过滤,有效地过滤掉资源链接
中不相关的链接,同时基于不同的路由分发规则进行链接分发,从而有效地提高了对资源
链接进行过滤的灵活性。
对应的文件,获得图片文件;若资源链接的链接类型为视频链接,则根据资源链接下载对应
的文件,获得视频文件;若资源链接的链接类型为网页链接,则使用爬虫程序对网页链接进
行深度爬取,即以获取到的资源链接重复执行上述步骤S110至步骤S140,就可以获得更多
的资源链接。在上述的实现过程中,通过在资源链接的链接类型为网页链接时,根据资源链
接作为访问链接进行深度爬取,从而获得更多的资源链接。
省略详细描述。该装置包括至少一个能以软件或固件(firmware)的形式存储于存储器中或
固化在装置的操作系统(operating system,OS)中的软件功能模块。
的机器可读指令,机器可读指令被处理器410执行时执行如上的方法。
编程只读存储器(Electrically Erasable Programmable Read‑Only Memory,简称
EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,简称
EPROM),可编程只读存储器(Programmable Red‑Only Memory,简称PROM),只读存储器
(Read‑Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
显示了根据本申请实施例的多个实施例的装置、方法和计算机程序产品的可能实现的体系
架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代
码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可
执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以和附图
中所标注的发生顺序不同。例如,两个连续的方框实际上可以基本并行地执行,它们有时也
可以按相反的顺序执行,这主要根据所涉及的功能而定。也要注意的是,框图和/或流程图
中的每个方框、以及框图和/或流程图中的方框的组合,可以使用执行规定的功能或动作的
专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
部分。
的关系或者顺序。
想到变化或替换,都应涵盖在本申请实施例的保护范围之内。