用好OnionScan,自己动手制作暗网爬虫

简介:


喜大普奔!OnionScan0.2终于发布啦!在新版OnionScan中,最引人注目的一个新功能就是“custom crawls”(自定义爬取)。我们将会通过这篇文章来教会大家如何去使用这个强大的功能。【 OnionScan 0.2下载地址

可能对暗网比较了解的同学都知道OnionScan是个什么东西吧?OnionScan是一款非常棒的工具,你可以用它来扫描暗网中的隐藏服务,并收集一些潜在的泄漏数据。除此之外,OnionScan也可以帮助你搜索出各种匿名服务的标识,例如比特币钱包地址、PGP密钥、以及电子邮件地址等等。

但是,暗网中的很多服务数据都是以非标准的数据格式发布的,不同的服务很可能使用的是不同的数据格式,这也就使得我们很难用软件工具来对这些数据进行自动化处理。

不过别担心,OnionScan可以帮助我们解决这个难题。OnionScan允许我们自定义各个网站之间的关系,然后我们可以将这些关系导入至OnionScan的关联引擎(Correlation Engine)之中。接下来,系统会像处理其他标识符那样来帮助我们对这些关系进行关联和分类。

接下来,我们以暗网市场Hansa来作为讲解实例。当我们在收集该市场中的数据时,我们首先要收集的往往是市场中处于在售状态的商品名称和商品类别,有时我们可能还需要收集这些商品的供应商信息。实际上,我们可以直接访问产品的/listing页面来获取所有的这些信息。

但是,我们现在要自己动手制作一个暗网爬虫。我们将使用这个爬虫来爬取并导出我们所需的数据,然后再对这些数据进行处理,最后再将其转换成我们可以进行自动化分析的数据格式。在OnionScan0.2的帮助下,我们只需要定义一个简单的配置文件就可以轻松实现这些操作了。相关代码如下所示:

 
  1. {  
  2. "onion":"hansamkt2rr6nfg3.onion",  
  3. "base":"/",  
  4. "exclude":["/forums","/support","/login","/register","?showFilters=true","/img","/inc""/css""/link""/dashboard","/feedback""/terms""/message"], 
  5.  "relationships":[{"name":"Listing"
  6.  "triggeridentifierregex":"/listing/([0-9]*)/",  
  7. "extrarelationships":[  
  8. {  
  9. "name":"Title",  
  10. "type":"listing-title",  
  11. "regex":"  
  12. (.*)  
  13. " }, { "name":"Vendor", "type":"username", "regex":" " }, { "name":"Price", "type":"price", "regex":" (USD[^<]*) " }, { "name":"Category", "type":"category", "regex":" 
  14.  ([^<]*)  
  15. ", "rollup": true } ] } ] } 

上面这段代码可能看起来非常的复杂,不过别担心,接下来我们会给大家一一进行讲解。

代码开头的“onion”参数定义的是我们所要扫描的暗网服务(”onion”:”hansamkt2rr6nfg3.onion”)。“base”参数定义的是我们要从网站的哪个路径开始执行扫描,在这里我们准备从网站的根目录开始扫描(”base”:”/”)。与普通网站一样,大多数暗网服务同样只在网站子目录中才会保存有效数据,例如刚才的“listing”目录。在这种情况下,我们就可以使用“base”参数来告诉OnionScan从网站的哪一部分开始执行扫描,这样可以为我们节省大量的时间。

“exclude”参数可以让OnionScan排除某些类型的扫描对象,例如“/forums”、“/support”、“/login”、以及“/register”。通常情况下,这些链接我们最好不要去碰,因为它们有可能会进行某些我们不希望发生的行为。

接下来就是“relationships”参数了,这个参数中定义的逻辑才是这个爬虫最核心的部分。

我们的逻辑关系主要是由“name”和“triggeridentifierregex”这两个参数定义的。其中的正则表达式主要应用于目标网站的URL地址,当正则表达式匹配到关系中的剩余规则时,就会触发相应的操作。在这个例子中,我们在OnionScan中定义了正则表达式“/listing/([0-9]*)/”,它将会触发URL地址中的Listing关系。需要注意的是,OnionScan还会根据URL地址中的“([0-9]*)”来识别资源之间的关系。

每一个关系都有一个“extrarelationships”参数,这个参数中定义的关系是OnionScan在进行搜索操作时需要用到的。

比如说,在我们的配置文件中,我们定义了四个额外的关系,即“Title”、“Vendor”、 “Price”和“Category”。每一个额外定义的关系都需要定义“name”和“type”参数,OnionScan的关联引擎将需要使用到这部分数据。除此之外,我们还要在关系中定义一个正则表达式,即“regex”参数,我们可以通过这个正则表达式来提取目标页面中的数据关系。

在Hansa市场这个例子中可以看到,我们可以通过正则表达式“”来从产品的/listing页面中提取出厂商信息。类似地,我们也可以通过这种方法提取出产品的标题、价格、以及分类目录。

“rollup”参数是OnionScan中的一个指令,这个指令可以让OnionScan对我们所搜索到的产品分类数量进行数据统计,并以可视化的形式输出统计结果。

现在,我们已经通过配置文件来告诉OnionScan应该从Hansa市场中提取哪些数据了,但是OnionScan应该如何使用这个配置文件呢?

接下来,先将我们刚才定义好的配置文件放到“service-configs”文件夹中,然后通过下列命令来让OnionScan对市场执行扫描操作:

 
  1. ./onionscan -scans web --depth 1 --crawlconfigdir./service-configs/ --webport 8080 --verbose hansamkt2rr6nfg3.onion 

搜索结果如下图所示:

从上面这张图片中可以看到,我们只需要定义一个简单的配置文件,OnionScan就可以帮我们完成剩下的操作。我们之所以可以获取到这张统计表格,是因为我们之前将“rollup”参数设为了“true”,所以OnionScan才会给我们提供这样一份可视化的统计数据。


作者:佚名

来源:51CTO

相关文章
|
数据采集 机器人 Python
Python爬虫|反爬初体验
几种简单高效的反爬虫方法总结。
Python爬虫|反爬初体验
|
SQL JavaScript Java
搭建情人节表白网站(超详细过程,包教包会)
网站的搭建其实在七夕的时候就已经弄好了,只是当时不会搭建,然后就放了好几个月,偶然发现情人节快到了,遂重新搭建了这个网站,不过说实话除了网站还真想不出有啥能够体现程序员的特长,你说各种代码,c,c++,java即时给你做出不错的GUI界面,人家还不一定会打开,网站最容易了,有手(机)就行,下面是它的效果展示视频,觉得好的记得三连哦
287 0
搭建情人节表白网站(超详细过程,包教包会)
|
机器学习/深度学习 数据采集 C++
爬虫基础-第五天
主要是数据解析的基础部分
78 0
|
数据采集
爬虫基础-第四天
解决第三天的问题,外加多get请求练习
70 0
|
数据采集 XML JavaScript
学会这些,轻轻松松搞定爬虫
学会这些,轻轻松松搞定爬虫
|
数据采集 Web App开发 JavaScript
爬虫技术的门道,这篇文章总结的最全
Web是一个开放的平台,这也奠定了Web从90年代初诞生直至今日将近30年来蓬勃的发展。然而,正所谓成也萧何败也萧何,开放的特型、搜索引擎以及简单易学的HTML、CSS技术使得Web成为了互联网领域里最为流行和成熟的信息传播媒介;但如今作为商业化软件,Web这个平台上的内容信息的版权却毫无保证,因为相比软件客户端而言,你的网页中的内容可以被很低成本、很低的技术门槛实现出的一些抓取程序获取到,这也就是这一系列文章将要探讨的话题—— 网络爬虫 。
|
Android开发
Python爬虫入门教程 45-100 Charles抓取兔儿故事-下载小猪佩奇故事-手机APP爬虫部分
1. Charles抓取兔儿故事背景介绍 之前已经安装了Charles,接下来我将用两篇博客简单写一下关于Charles的使用,今天抓取一下兔儿故事里面关于小猪佩奇的故事。爬虫编写起来核心的重点是分析到链接,只要把链接分析到,剩下的就好办了。
1220 0
|
Web App开发 数据采集 JavaScript
|
Web App开发 数据采集 JSON
爬虫实战——拉勾网
闲来无事,想看看拉勾上关于的Python的招聘信息 于是。。。爬下来呗 话不多说,直接开始 不对,首先还是说一下主要使用到的技术栈,这里我没有使用requests库,而是使用selenium爬的 why ? 我喜欢呗~ seleniu...
2169 0
|
数据采集 前端开发 Java
关于爬虫,首篇
补充基础知识 爬虫,毋庸置疑就是爬去互联网的网页,理论上,只要是互联网中存在的web页面,都可以爬取。用来做数据采集非常合适,尤其是现在大数据领域,爬虫必不可少。
1103 0