Web网站死链检测方法

文档序号:6374084阅读:319来源:国知局
专利名称:Web网站死链检测方法
技术领域
本发明涉及一种Web网站检测方法,特别是涉及一种Web网站死链检测方法。
背景技术
死链是指Web网站中处于路径不可达状态的Web链接,它是导致网站性能下降的重要原因。随着互联网的快速发展,网站中的各种信息在急速增长,维护网站的内容完整性以及性能变得十分复杂。Web网页的一个重要特点是动态性,即网页内容可以任意增加、删除和更新。这一特点使Web服务成为具有吸引力的信息传播媒介,同时也面临着死链问题的挑战,Web链接相互引用加剧了死链的产生,损害了网站内容完整性,导致网站性能严重下降。
死链的影响是多方面的。佐治亚理工学院的GVU中心曾做过一项调查发现,大约60%的用户反映死链问题是使用网络时最反感的问题。此外,为了提高搜索效率和搜索结果的质量,搜索引擎很少会将带有大量死链的站点放在前面,因此死链会导致网站被搜索引擎降权。研究发现,一般Web网页的平均预期寿命是44天,URL的随机测试集合在四年的时间里损失了大约67%的URL才达到稳定状态。Spinellies对发表在ACM和IEEE上的论文链接的可访问性做了大量调查实验之后,发现28 %的URL在五年之后不可用,41 %在七年之后不可用,并且在所有不可用的网络链接中,大约60%是404错误(国际组织规定的一类客户端错误,当Web服务器不希望精确指出请求为何被拒绝或者没有找到任何可以匹配的URL资源时使用该状态码)。因此,有效地检测出网站里的各种死链,对于维护网站性能、保持网站内容完整性变得十分重要。由于一个大型网站上的Web链接数以万计,链接有效性检验是一个非常耗时的任务。因此,如何快速、准确和自动地检测Web网站中的死链值得深入研究。文献I “B. Haslhofer, N. Popitsch. DSNotify-detecting and fixing brokenlinks in linked data sets[c]//DEXA09. 20th International Colocated with DEXA.Austria, Linz, 2009 :89_93”设计了一个LOD数据源的加载项,通过比较两个链接的相似值来判断404错误链接是否发生转移或者被删除,并在客户端浏览器显示不同的检测信息,从而部分保证LOD数据源的链接完整性。该方法只面对客户端用户,因此只能保证用户体验,不能根本解决死链问题。其次,该方法需要浏览器频繁询问加载项,造成浏览器性能下降,并且检测效率低。文献 2 “N. Popitsch, B. Haslhofer. Dsnotify :handling broken links in theweb of data[c]//Proc of WWW. New york,NY,USA :ACM,2010 :761_770”首先定义了两种链接错误类型,结构错误链接和语义错误链接,接着定义了引起结构错误的链接出现的事件,最后根据改进前人设计的11种不同解决方案,提出了 DSNotify策略。该策略提取出每个链接的特征向量,根据对链接的元数据和内容的判断,把链接分别放到3个索引队列,最后由索引来判断产生死链的事件。该方法的目的是修改发送404错误的页面,所以只提取和检测与重定向和删除的状态码相关的链接,但所查找到的死链覆盖面不全面。

发明内容
为了克服现有的Web网站死链检测方法覆盖率低的不足,本发明提供一种Web网站死链检测方法。该方法首先根据Web链接的调度过程修改遍历策略,自动获取网站链接信息,得到较全面的网站链接信息。然后对新生成的URL库进行精简,去除重复的网页并且筛选出满足条件的链接,提高数据采集效率。最后根据死链产生的原因和分类,给出了对应的检测方案,可以提高Web网站死链检测的覆盖率。本发明解决其技术问题所采用的技术方案是一种Web网站死链检测方法,其特点是包括以下步骤(I)判断种子列表seedURLs中的URL的合法性,如果合法放到URL库A中,否则把该URL和错误原因记录到死链的errorSite队列中,进入步骤(6)。(2)死链分析和判断操作①如果A非空,取出一个URLX放入缓存的NamedSite队列中,如果X的域名不是数字形式,把X放到队列dnsSite队列中,进入步骤②,否则进入步骤④;如果A为空,算法结束,死链判断完毕,进入步骤(6);②向DNS服务器发送链接X的域名查询请求;③DNS服务器通过递归查询返回链接X的IP地址X. IP,如果递归查询失败,则deadlink (X) =1,发生DNS解析错误,把X和错误原因记录到死链的errorSite文件中,返回步骤①;④与X. IP建立一个TCP连接后,向Web服务器发送消息请求,请求资源X. R,请求消息中包括GET方法、资源指示符、请求头域以及实体头域;⑤Web服务器接收和解析一个请求消息后,发出一个HTTP响应消息R,响应消息中包含状态行S、响应头域以及实体E ;⑥取S的第一个数字S. N,如果S. N = 4或者S. N=5,则deadlInk(X)=I,把X和错误原因记录到死链的errorSite文件中,返回步骤①;如果S. N=3,查看响应头域的Location字段,如果内容为空或者是不合语法的URL,则deadlink (X)=l,发生重定向错误,把X和错误原因记录到死链的errorSite文件中,返回步骤①;⑦取实体E进行分析,如果实体的长度E. Length=O,则deadlink (X)=I,把X和错误原因记录到死链文件中,返回步骤①;⑧deadlink (X) =0,进入步骤(3)。(3)提取实体E中的所有超链接。(4)对提取出的超链接进行预处理,首先是链接筛选,把网页深度>5的URL或者不合语法的URL过滤掉,然后进行去重处理,使用Bloom filter算法删除掉与URL库A中MD5值相同的URL。 (5)把精简后的链接加入到URL库A中,进入步骤(2)。(6)输出死链文件中的死链及其原因,并向网络管理员发送邮件通知。本发明的有益效果是由于通过动态遍历策略,自动获取较全面的网站链接信息,得到较全面的网站链接信息;通过重复网页去除、链接筛选等预处理,对新生成的URL库进行精简,去除重复的网页并且筛选出满足条件的链接,提高了数据采集效率;最后根据死链产生的原因和分类,给出了对应的检测方案,从而提高了检测覆盖率和处理效率。通过实验验证和实际测试表明,本发明达到了 93. 86%的覆盖率。本发明为Web网站开发者和维护人员高效地检测Web网站死链,维护Web网站性能提供了有效技术手段。下面结合附图和实施例对本发明作详细说明。


图I是本发明Web网站死链检测方法遍历过程中的URL队列管理图。图2是本发明Web网站死链检测方法的流程图。
具体实施例方式I.初始化。 首先初始化一个种子列表seedURLs和五个URL队列。五个URL队列分别用于存放DNS缓存的NamedSite队列、已取得DNS解析的URLs的队列IPSite、没有进行DNS解析的站点dnsSite、即将抓取的URL的okSite队列及死链的errorSite队列。然后判断种子列表seedURLs中的URL的合法性,如果合法放到URL库A中,否则把该URL和错误原因记录到死链的errorSite队列中,进入步骤6。只分析传输协议为HTTP的链接,直到所有线程都阻塞时停止。2.死链分析和判断。模拟客户端代理向DNS服务器以及Web服务器发送询问请求,根据死链的产生的原因,分类以及HTTP协议的定义,分析返回的信息,若消息满足死链特征,则检测到死链,做相应处理。具体步骤如下(I)如果A非空,取出一个URL X放入缓存的NamedSite队列中,如果X的域名不是数字形式,把X放到站点dnsSite队列中,进入步骤(2),否则进入步骤(4);如果A为空,算法结束,死链判断完毕,进入步骤6。(2)向DNS服务器发送链接X的域名查询请求;(3) DNS服务器通过递归查询返回链接X的IP地址X. IP,如果递归查询失败,则deadlink (X) =1,发生DNS解析错误,把X和错误原因记录到死链的errorSite文件中,返回步骤(I);(4)与X. IP建立一个TCP连接后,向Web服务器发送消息请求,请求资源X. R,请求消息中包括GET方法、资源指示符、请求头域以及实体头域;(5) Web服务器接收和解析一个请求消息后,发出一个HTTP响应消息R,响应消息中包含状态行S、响应头域以及实体E ;(6)取S的第一个数字S. N,如果S. N=4 (X发生客户端错误)或者S. N=5 (X发生服务器端错误),则deadlink (X) =1,把X和错误原因记录到死链的errorSite文件中,返回步骤(I);如果S. N=3,查看响应头域的Location字段,如果内容为空或者是不合语法的URL,则deadlink (X) =1,发生重定向错误,把X和错误原因记录到死链的errorSite文件中,返回步骤(I);(7)取实体E进行分析,如果实体的长度E. Length=O,则deadlink (X) =1,说明X没有返回有效信息,把X和错误原因写入eirorSite队列,返回步骤(I);(8) deadlink (X)=O,进入步骤 3。3.网络链接采集。根据上步分析,X为有效链接,直接提取实体E中的所有超链接。4.预处理。对上步得到的新链接进行预处理,主要包括网页去重和链接筛选,首先是链接筛选,把网页深度>5的URL或者不符合语法的URL过滤掉,从而达到效率和链接完整性的平衡,然后进行去重处理,使用Bloom filter算法删除掉与URL库A中MD5值相同的URL。5.把精简后的链接加入到URL库A中,进入步骤2。
6.输出结果。输出死链文件中的死链及其原因,并向网络管理员发送邮件通知。
权利要求
1.一种Web网站死链检测方法,其特征在于包括以下步骤 (1)判断种子列表seedURLs中的URL的合法性,如果合法放到URL库A中,否则把该URL和错误原因记录到死链的errorSite队列中,进入步骤(6); (2)死链分析和判断操作 ①如果A非空,取出一个URLX放入缓存的NamedSite队列中,如果X的域名不是数字形式,把X放到队列dnsSite队列中,进入步骤②,否则进入步骤④;如果A为空,算法结束,死链判断完毕,进入步骤(6); ②向DNS服务器发送链接X的域名查询请求; ③DNS服务器通过递归查询返回链接X的IP地址X.IP,如果递归查询失败,则deadlink (X) =1,发生DNS解析错误,把X和错误原因记录到死链的errorSite文件中,返回步骤①; ④与X.IP建立一个TCP连接后,向Web服务器发送消息请求,请求资源X. R,请求消息中包括GET方法、资源指示符、请求头域以及实体头域; ⑤Web服务器接收和解析一个请求消息后,发出一个HTTP响应消息R,响应消息中包含状态行S、响应头域以及实体E ; ⑥取S的第一个数字S.N,如果S. N=4或者S. N=5,则deadlink (X) =1,把X和错误原因记录到死链的errorSite文件中,返回步骤①;如果S. N=3,查看响应头域的Location字段,如果内容为空或者是不合语法的URL,则deadlink (X)=l,发生重定向错误,把X和错误原因记录到死链的errorSite文件中,返回步骤①; ⑦取实体E进行分析,如果实体的长度E.Length=O,则deadlink (X)=I,把X和错误原因记录到死链文件中,返回步骤①; ⑧deadlink (X) =0,进入步骤(3); (3)提取实体E中的所有超链接; (4)对提取出的超链接进行预处理,首先是链接筛选,把网页深度>5的URL或者不合语法的URL过滤掉,然后进行去重处理,使用Bloom filter算法删除掉与URL库A中MD5值相同的URL ; (5)把精简后的链接加入到URL库A中,进入步骤(2); (6)输出死链文件中的死链及其原因,并向网络管理员发送邮件通知。
全文摘要
本发明公开了一种Web网站死链检测方法,用于解决现有的Web网站死链检测方法覆盖率低的技术问题。技术方案是首先对种子列表seedURLs和URL队列初始化,再进行死链分析和判断操作,然后提取实体E中的所有超链接,对提取出的超链接进行预处理,把精简后的链接加入到URL库A中,输出死链文件中的死链及其原因,并向网络管理员发送邮件通知。由于通过动态遍历策略,自动获取较全面的网站链接信息;通过重复网页去除、链接筛选等预处理,对新生成的URL库进行精简,去除重复的网页并且筛选出满足条件的链接,提高了数据采集效率;最后根据死链产生的原因和分类,给出了对应的检测方案,从而提高了检测覆盖率和处理效率。测试表明,本发明达到了93.86%的覆盖率。
文档编号G06F17/30GK102752154SQ20121026447
公开日2012年10月24日 申请日期2012年7月29日 优先权日2012年7月29日
发明者姚卓, 姚烨, 蔡皖东 申请人:西北工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1