暗网
目录
“深网”是指
为实现自动获取HiddenWeb页面的任务,此爬虫必须能自动寻找表单,填写表单,然后获取和识别结果页面。HiddenWeb爬虫系统结构如图所示
1.寻找HiddenWeb入口页面
Web上存在多种多样的表单,同时表单上含有各种各样的元素,如单选按钮、下拉列表框、文本框等,有些还是用户自定义的,因此处理所有的表单是比较困难的。为此,需要先解析HTML页面,获取要研究的表单类型,同时从中抽取有用信息。本文要研究的是不含或含有少量的文本框元素,其它类型元素都具有默认值的表单。这很容易通过解析HTML表单来完成,如可以使用标记序列树或DOM(文档对象模型)来过滤出要研究的表单。
2.自动提交表单
当搜索表单提供了每一表单元素所有可能的值时,直接的方法是对具有少量的文本框元素使用空串作为默认值,穷尽表单其他元素所有可能值的组合来填写表单,获取后台数据库全部的数据。
此方法存在两个问题:
①处理过程非常耗时;
②在穷尽所有可能值组合之前,也许已经获取了所有或大部分的后台数据库数据,从而出现了重复提交;
③多个字段组合可能存在语义上的冲突。HiddenWeb爬虫设计的目标是使用最少的资源(如提交时间或次数等)获取特定HiddenWeb站点内最大量的数据,然而不能保证对所有表单使用有限次的提交可以获取后台数据库的全部数据,因此有必要再次发送查询来确定是否已获取了全部数据。本文提出一种两阶段采样爬行策略以充分获取HiddenWeb数据,它分为如下两个步骤:
(1)首先使用表单提供的默认值来提交;
(2)然后对表单元素值组合进行采样以确定默认值提交是否返回了后台数据库的所有数据,若返回了后台数据库所有或大部分数据则可以结束提交过程。否则,在爬虫所具有资源限制范围内穷尽所有可能值的组合。
如果C次采样提交每次都产生了新的记录,则穷尽表单元素其它可能值组合来提交表单,直到满足特定的结束条件。然而在继续提交表单前,先要估计完成这样的操作所需的最大剩余时间和用于存储所有结果记录所需的最大空间。可以指定如下几个参数来完成此阶段的任务:最大查询提交次数、最大存储空间和最大剩余时间等。
可以通过叠加每次查询所返回的数据量来估计所需最大存储空间S。类似地可以估计最大剩余时间T。
在穷尽阶段,可以使用几个参数阀值来提前结束提交过程。包括:
(1)获取Web数据库数据的百分比:通过估计Web数据库百分比以确定获取了多少数据以后可以结束提交过程。
(2)查询提交次数:通过确定查询提交次数来减轻站点的负担。
(3)获取数据的数量:即获取了多少惟一性的Web数据库信息。
(4)提交时间:爬行某特定站点需要多长时间。
上述每一个阀值或其组合都可以在穷尽阶段提前结束爬虫爬行。
3.识别和存取查询结果
对表单提交操作产生的响应主要有如下几种情况:响应页含有后台数据库部分或所有数据;响应页不仅包含有数据还包含链接;响应页含有数据和原始表单结构;响应页可能是另一张需要进一步填写的表单;错误页面通知;无记录通知或需要缺失字段。这一步主要是针对这些可能出现的情况进行处理。然后从含有丰富数据的页面中使用信息抽取工具抽取结构化的数据构建数据,以进一步提供信息检索服务。
对于庞大的"暗网",搜索业界通行的策略主要有两种:其一,构建更有针对性的"暗网"爬虫,以便获取后台数据库;其二,与"暗网"网站合作,实现信息的对接和上浮。
对于第一种策略,它始终贯穿搜索引擎的发展过程。百度产品部相关人士对此表示,针对搜索引擎的升级和更新中,大部分与"暗网"问题有关,只不过对普通用户来讲,他们很难察觉。
第二种策略似乎更成效。不管是国外的谷歌、雅虎,还是国内的百度,都有针对性的计划,并且用户已经体验到了它们带来的变化。
股民刘先生在百度搜索时无意中发现,当关键词为股票代码时,得到的结果第一项便是该股票的K线图,还有当日的成交量等信息。而切换到谷歌,得到的结果如出一辙。他体验到的这一技术,在百度被称为"阿拉丁",在谷歌则叫"onebox"。
除了股票,在百度搜索英文单词、人民币汇率、天气预报、电视节目表等等,网民都会有意外收获。这一点,网民的感触要比在谷歌中深,一个典型的例子是,在百度和谷歌中分别输入"天气",百度将直接根据用户的IP判断其所处位置,给出当地的天气情况,而谷歌则在第一个结果中给出了一个搜索框,让用户进一步查询。
显然,在用户体验上,百度占了上风。这得益于其上线不久的"搜索开放平台",这一平台是"阿拉丁"计划的一部分。其运作逻辑是:百度开放API接口,各大网站提交已经结构化的数据,设定好关键词和展示方式、位置,获得百度审核后,当网民检索设定的关键词,则自动触发这一机制,展现最直接的信息。
对比百度搜索开放平台和谷歌onebox,两者的最大区别就是与网站的互动,前者更为充分。换句话说,onebox更多是谷歌自己在使劲,而搜索开放平台则是百度与站长一起在努力。据百度阿拉丁项目负责人透露,平台上线两个月以来,站长提交的资源数量超过3000个。
在对付"暗网"的过程中,搜索引擎正在完成它的蜕变,不论是后台还是前台,这才是这场战役的真正意义。
"搜索引擎越来越聪明了,它能看穿我的心思。"90后网民小龚说。他是一个球迷,平时最喜欢看意甲,一天在百度搜索"意甲射手榜","居然结果中直接就是榜单,让人意外。"
一位业内人士表示,搜索引擎试图让人们以最小的成本获得最直接的信息,"哪怕是少一次鼠标点击,也是巨大进步。"
有意思的是,随着百度搜索开放平台、谷歌onebox、雅虎SearchMonkey等计划的展开,搜索结果真正变得"乱糟糟"的---你总能看到网页链接的结果中间夹杂着图片、新闻、视频,或者图形、表格等信息,这种变革对网民的体验大有裨益。
而评论人士则指出,这些计划将搜索引擎从"只读时代"带入了"可写时代"。或许未来,对于每一个网站,每一个用户,都有资格改变搜索引擎。
对于暗网爬虫来说,一个简单粗暴的方式是:将各个输入框的输入值组合起来形成查询,比如机票查询来说,将所有出发城市、所有目的城市和时间范围的选项一一组合,形成大量的查询,提交给垂直搜索引擎,从其搜索结果里提炼数据库记录。
GOOGLE对此提出了解决方案,称之为富含信息查询模块技术。
假设为了描述一个职位,完整的查询由3个不同的属性构成:出发城市、到达城市和出发日期。如果在搜索引擎提交查询的时候,部分属性被赋予了值,而其他属性不赋值,则这几个赋值属性一起构成了一个查询模块。
如果模块包含一个属性,则称之为一维模块。图中模块1是一维模块,模块2和模块3是二维模块,模块4是三维模块。
模块1={出发城市}
模块2={出发城市,到达城市}
模块3={到达城市,出发日期}
模块4={出发城市,到达城市和出发日期}
对于某个固定的查询模块来说,如果给模块内每个属性都赋值,形成不同的查询组合,提交给垂直搜索引擎,观察所有返回页面的内容,如果相互之间内容差异较大,则这个查询模块就是富含信息查询模块。但是这将是一个庞大的查询组合基数,为了进一步减少提交的查询数目。GOOGLE的方案使用了ISIT算法。
ISIT算法的基本思路是:首先从一维模块开始,对一维查询模块逐个查询,看其是否富含信息查询模块,如果是的话,则将这个一模模块扩展到二维,再次依次查询对应的二维模块,如此类推,逐步增加维数,直到再无法找到富含信息查询模块为止。通过这种方式,就可以找到绝大多数富含信息查询模块,同时也尽可能减少了查询总数,有效达到了目的。
附件列表
故事内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。