用好OnionScan,自己動(dòng)手制作暗網(wǎng)爬蟲
喜大普奔!OnionScan0.2終于發(fā)布啦!在新版OnionScan中,最引人注目的一個(gè)新功能就是“custom crawls”(自定義爬取)。我們將會(huì)通過(guò)這篇文章來(lái)教會(huì)大家如何去使用這個(gè)強(qiáng)大的功能?!?OnionScan 0.2下載地址 】
可能對(duì)暗網(wǎng)比較了解的同學(xué)都知道OnionScan是個(gè)什么東西吧?OnionScan是一款非常棒的工具,你可以用它來(lái)掃描暗網(wǎng)中的隱藏服務(wù),并收集一些潛在的泄漏數(shù)據(jù)。除此之外,OnionScan也可以幫助你搜索出各種匿名服務(wù)的標(biāo)識(shí),例如比特幣錢包地址、PGP密鑰、以及電子郵件地址等等。
但是,暗網(wǎng)中的很多服務(wù)數(shù)據(jù)都是以非標(biāo)準(zhǔn)的數(shù)據(jù)格式發(fā)布的,不同的服務(wù)很可能使用的是不同的數(shù)據(jù)格式,這也就使得我們很難用軟件工具來(lái)對(duì)這些數(shù)據(jù)進(jìn)行自動(dòng)化處理。
不過(guò)別擔(dān)心,OnionScan可以幫助我們解決這個(gè)難題。OnionScan允許我們自定義各個(gè)網(wǎng)站之間的關(guān)系,然后我們可以將這些關(guān)系導(dǎo)入至OnionScan的關(guān)聯(lián)引擎(Correlation Engine)之中。接下來(lái),系統(tǒng)會(huì)像處理其他標(biāo)識(shí)符那樣來(lái)幫助我們對(duì)這些關(guān)系進(jìn)行關(guān)聯(lián)和分類。
接下來(lái),我們以暗網(wǎng)市場(chǎng)Hansa來(lái)作為講解實(shí)例。當(dāng)我們?cè)谑占撌袌?chǎng)中的數(shù)據(jù)時(shí),我們首先要收集的往往是市場(chǎng)中處于在售狀態(tài)的商品名稱和商品類別,有時(shí)我們可能還需要收集這些商品的供應(yīng)商信息。實(shí)際上,我們可以直接訪問(wèn)產(chǎn)品的/listing頁(yè)面來(lái)獲取所有的這些信息。
但是,我們現(xiàn)在要自己動(dòng)手制作一個(gè)暗網(wǎng)爬蟲。我們將使用這個(gè)爬蟲來(lái)爬取并導(dǎo)出我們所需的數(shù)據(jù),然后再對(duì)這些數(shù)據(jù)進(jìn)行處理,***再將其轉(zhuǎn)換成我們可以進(jìn)行自動(dòng)化分析的數(shù)據(jù)格式。在OnionScan0.2的幫助下,我們只需要定義一個(gè)簡(jiǎn)單的配置文件就可以輕松實(shí)現(xiàn)這些操作了。相關(guān)代碼如下所示:
- {
- "onion":"hansamkt2rr6nfg3.onion",
- "base":"/",
- "exclude":["/forums","/support","/login","/register","?showFilters=true","/img","/inc", "/css", "/link", "/dashboard","/feedback", "/terms", "/message"],
- "relationships":[{"name":"Listing",
- "triggeridentifierregex":"/listing/([0-9]*)/",
- "extrarelationships":[
- {
- "name":"Title",
- "type":"listing-title",
- "regex":"
- (.*)
- " }, { "name":"Vendor", "type":"username", "regex":" " }, { "name":"Price", "type":"price", "regex":" (USD[^<]*) " }, { "name":"Category", "type":"category", "regex":"
- ([^<]*)
- ", "rollup": true } ] } ] }
上面這段代碼可能看起來(lái)非常的復(fù)雜,不過(guò)別擔(dān)心,接下來(lái)我們會(huì)給大家一一進(jìn)行講解。
代碼開頭的“onion”參數(shù)定義的是我們所要掃描的暗網(wǎng)服務(wù)(”onion”:”hansamkt2rr6nfg3.onion”)。“base”參數(shù)定義的是我們要從網(wǎng)站的哪個(gè)路徑開始執(zhí)行掃描,在這里我們準(zhǔn)備從網(wǎng)站的根目錄開始掃描(”base”:”/”)。與普通網(wǎng)站一樣,大多數(shù)暗網(wǎng)服務(wù)同樣只在網(wǎng)站子目錄中才會(huì)保存有效數(shù)據(jù),例如剛才的“listing”目錄。在這種情況下,我們就可以使用“base”參數(shù)來(lái)告訴OnionScan從網(wǎng)站的哪一部分開始執(zhí)行掃描,這樣可以為我們節(jié)省大量的時(shí)間。
“exclude”參數(shù)可以讓OnionScan排除某些類型的掃描對(duì)象,例如“/forums”、“/support”、“/login”、以及“/register”。通常情況下,這些鏈接我們***不要去碰,因?yàn)樗鼈冇锌赡軙?huì)進(jìn)行某些我們不希望發(fā)生的行為。
接下來(lái)就是“relationships”參數(shù)了,這個(gè)參數(shù)中定義的邏輯才是這個(gè)爬蟲最核心的部分。
我們的邏輯關(guān)系主要是由“name”和“triggeridentifierregex”這兩個(gè)參數(shù)定義的。其中的正則表達(dá)式主要應(yīng)用于目標(biāo)網(wǎng)站的URL地址,當(dāng)正則表達(dá)式匹配到關(guān)系中的剩余規(guī)則時(shí),就會(huì)觸發(fā)相應(yīng)的操作。在這個(gè)例子中,我們?cè)贠nionScan中定義了正則表達(dá)式“/listing/([0-9]*)/”,它將會(huì)觸發(fā)URL地址中的Listing關(guān)系。需要注意的是,OnionScan還會(huì)根據(jù)URL地址中的“([0-9]*)”來(lái)識(shí)別資源之間的關(guān)系。
每一個(gè)關(guān)系都有一個(gè)“extrarelationships”參數(shù),這個(gè)參數(shù)中定義的關(guān)系是OnionScan在進(jìn)行搜索操作時(shí)需要用到的。
比如說(shuō),在我們的配置文件中,我們定義了四個(gè)額外的關(guān)系,即“Title”、“Vendor”、 “Price”和“Category”。每一個(gè)額外定義的關(guān)系都需要定義“name”和“type”參數(shù),OnionScan的關(guān)聯(lián)引擎將需要使用到這部分?jǐn)?shù)據(jù)。除此之外,我們還要在關(guān)系中定義一個(gè)正則表達(dá)式,即“regex”參數(shù),我們可以通過(guò)這個(gè)正則表達(dá)式來(lái)提取目標(biāo)頁(yè)面中的數(shù)據(jù)關(guān)系。
在Hansa市場(chǎng)這個(gè)例子中可以看到,我們可以通過(guò)正則表達(dá)式“”來(lái)從產(chǎn)品的/listing頁(yè)面中提取出廠商信息。類似地,我們也可以通過(guò)這種方法提取出產(chǎn)品的標(biāo)題、價(jià)格、以及分類目錄。
“rollup”參數(shù)是OnionScan中的一個(gè)指令,這個(gè)指令可以讓OnionScan對(duì)我們所搜索到的產(chǎn)品分類數(shù)量進(jìn)行數(shù)據(jù)統(tǒng)計(jì),并以可視化的形式輸出統(tǒng)計(jì)結(jié)果。
現(xiàn)在,我們已經(jīng)通過(guò)配置文件來(lái)告訴OnionScan應(yīng)該從Hansa市場(chǎng)中提取哪些數(shù)據(jù)了,但是OnionScan應(yīng)該如何使用這個(gè)配置文件呢?
接下來(lái),先將我們剛才定義好的配置文件放到“service-configs”文件夾中,然后通過(guò)下列命令來(lái)讓OnionScan對(duì)市場(chǎng)執(zhí)行掃描操作:
- ./onionscan -scans web --depth 1 --crawlconfigdir./service-configs/ --webport 8080 --verbose hansamkt2rr6nfg3.onion
搜索結(jié)果如下圖所示:
從上面這張圖片中可以看到,我們只需要定義一個(gè)簡(jiǎn)單的配置文件,OnionScan就可以幫我們完成剩下的操作。我們之所以可以獲取到這張統(tǒng)計(jì)表格,是因?yàn)槲覀冎皩?ldquo;rollup”參數(shù)設(shè)為了“true”,所以O(shè)nionScan才會(huì)給我們提供這樣一份可視化的統(tǒng)計(jì)數(shù)據(jù)。