首頁>技術>

爬蟲,網路安全最大的威脅之一!

根據爬取資料型別而分,爬蟲有不少種類,比如爬取Email地址的、爬取商品價格的、爬取圖片的,而最多的是爬取內容的,內容資料爬蟲是為氾濫的!

爬蟲讓很多人對其深感苦惱,今天的Node.JS實戰,將實現一種防護效能很強的反爬蟲系統。

首先展示防護效果,然後付上完整程式碼,以了解實現方法。

防護效果展示

根據兩個核心思路進行效果展示如下:

1、字型加密

建立自定義字型庫,將字型進行加密。

舉一個最直白的例子:

比如要在網頁中顯示文字:“我是我,你是你,她是她”,在正常的情況下,網頁中就是存在這幾個字,爬蟲當然可以爬取。

我們要實現的效果是,讓這幾個字不存在,網頁原始碼中可能是:

但是在網頁中可以正常顯示:

但是卻不可複製,複製後,全部或部分內容將不能正常顯示:

2、字型防破解

單純的字型加密,是不太難被破解的,因為上述的“密文亂碼符號”,其實也就是一種對應關係,例如:“A”對應“啊”,“B”對應“不”。只要獲得足夠的對應關係,替換就可以破解還原出原內容。

具體實施時,可以從網頁中獲取字型檔案。

如TTF,通過格式轉換,化為TTX,即可得到對應關係。

也可以手動記錄對應關係。

那麼對於這兩種破解,我們也需要進行防護。

1、防止字型檔案被下載;

動態字型路徑:

注意以下兩圖,不同的字型路徑:

即:每次訪問都是不同的字型路徑,而且,此動態路徑檔案是不可下載的:

當然,檔案的正常使用是不受影響的。

2、使用動態對應關係,防止字型對應被獲取。

我們內建一套系統,自動或手動實現編碼變化:

以下兩圖,兩種不同的編碼展示,前面部分是編碼,後面是對應的字:

原始碼展示

實現以上功能的程式碼並不複雜,本例由兩個檔案,一個目錄組成:

acs.js是主檔案,內容如下:

config.js是字型編碼與文字對應關係,原始碼中稱為“變碼距陣”,內容如下:

exports.tramsform_matrix={"Ԕ":"我","ԕ":"你","Ԗ":"他","ԗ":"只","Ԙ":"保","ԙ":"碼","Ԛ":"用","ԛ":"。"}

注:當進行動態變碼操作時,此檔案內容會發生變化。

admin目錄下,是幾個靜態網頁檔案:

index.html內容如下:

<html> <head> <meta charset="utf8"> <title>anti content splider</title> </head> <body> <form method="post" action="/transform_ttf" target="_blank"> 原始字型:<input id="font_src" name="font_src" type="text" value="KaiGenGothicSC-Normal.ttf" /><br> 變碼字型:<input id="font_dest" name="font_dest" type="text" value="font1" /><br> 變碼文字:<input id="transform_words" name="transform_words" type="text" value="我,你,他,只,保,碼,用" /><br> <br> <input type="submit" value="Transform!"/> </form> </body></html>

test.html是用於測試,展示變碼效果的檔案,內容如下:

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>字型測試</title></head><body><div><style> @font-face { font-family: "font1"; src: url("font_dest/font1.eot"); /* IE9 */ src: url("font_dest/font1.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */ url("font_dest/font1.woff2") format("woff2"), url("font_dest/font1.woff") format("woff"), url("font_dest/font1.ttf") format("truetype"), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ url("font_dest/font1.svg#iconfont"); /* iOS 4.1- */ } .font-1{ font-family:"font1";font-size:16px;font-style:normal; }</style> <div class="font-1">Ԕ是Ԕ,ԕ是ԕ,Ԗ是Ԗ,她是她ԛ</div> <div class="font-1">ShareWAF(sharewaf.com)不ԗ是WAF!</div> <div class="font-1">JS代ԙԘ護?混淆?加密,當然ԚJShaman(jshaman.com)!</div></div></body></html>

以上,是完整的動態字型變碼加密反爬蟲方案,出自於ShareWAF,與ShareWAF運營的商業反爬蟲產品:ShareWAF-ACS,原理甚本一至。由此可知,本文是相當有價值的技術資料。

文後連結是ShareWAF-ACS地址,根據其介紹,可更好的理解此技術的反爬蟲概念。

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • macOS 下 Electron 程式的簽名及公證