浅淡暗网信息抓取


文/腾讯soso soso-spider

 

    写在最前面:之前看过一些关于暗网信息抓取的Paper,觉得这一块是我们今后做好WebSpider的一个重要的努力方向。下面就对暗网信息的抓取做一个通俗简洁的介绍,达到使一般读者能够明白暗网信息抓取基本原理的目的。


  1.什么是暗网

  广义地讲,任何不能通过一次(或多次)HTTP GET请求直接下载的Web页面,我们都可以认为其处于“暗网”中。不能直接通过HTTP GET请求下载这些Web页面的原因是多方面的,有可能是网络原因不能下载,比如说企业或学校的内部网站,只有通过代理服务器连通这些网络,才能下载其中的Web页面;也有可能是动态页面,需要用户身份认证,登录后才能下载等,还有其它一些原因,这里不再一一列举。

  狭义的“暗网”,是指那些没有链接指向的动态Web页面的集合,这些页面只能通过提交一个HTML表单等的形式获取其内容,也就是通过至少一次HTTP POST请求才能获取其内容,不能通过HTTP GET直接下载得到。比如说一些学校的图书馆,只有用户输入书名等检索词进行搜索时,才能得到相关的结果的索引列表,然后再跟据这个索引列表来获取相关的页面。这些页面,没有其它外链链接进来,只能通过上述方法获取。

 

  2.为什么要抓取暗网信息

  有研究表明,目前能够搜索到的数据仅占全部信息量的千分之二。可见,目前,我们通过搜索引擎能够获取的信息,只是全部信息量的“冰山一角”,通过对暗网数据的抓取,可以从很大程度上增加搜索引擎的信息收录量,为用户提供更丰富的搜索结果,使用户有更好的搜索体验。

 

  3.如何来抓取暗网信息

  首先要声明,本文的讲的暗网是指狭义上的暗网。因此,如何来对暗网信息进行抓取的关键,就落在了如何让WebSpider模拟人提交HTML表单的行为。通常,如果一个表单中的元素的取值都是固定的,那么,我们可能通过枚举各种取值组合,通过HTTP POST提交表单,直接获取相应的页面,如图1所示:

 

    在上面的表单中,各个元素的取值集合都是固定的,我们的WebSpider只要把各种所有的可能取值组合进行枚举,便可得到所有的页面。

    但是实际上,通过我们遇到的表单有很多元素的取值集合都是未定的,这时候,就不能直接采取上面的方面来获取相应页面了,那该怎么办呢?如图2所示,是一个含有取值集合未定的元素的表单:

 

    假如说我们选择了ISBN号进行检索,我们知道,只有输入合法的ISBN号,才能检索到内容。那么,WebSpider该如何知道什么样的ISBN号才是合法的呢?下面介绍一种方法。

    对于这种含有取值集合未定元素的表单,我们对其中每一个取值集合未定的元素进行机器学习,为其得到一个有效的,取值个数有限的近似的取值集合。然后再采取上面介绍的枚举的方法,进行抓取。如在图2所示的例子中,我们通过机器学习的方法,得到一个合法的ISBN号的集合,然后再让WebSpider进行抓取,便可以得到我们想要的结果。

 

    写在最后面:上面只是对暗网信息抓取的一个简单的介绍,目的只是让普通读者对暗网信息的抓取有一个基本的了解。如果想深入了解暗网信息的抓取,可以参考学习下面两份Paper,另外可以在互联网上搜索相关资料:

    1.Crawling the HiddenWeb   

    2.Downloading Hidden Web Content