常見的6種應用層反反爬蟲的技術

犀牛小牛發表於2019-01-23

方法一、 前端逆向

前端逆向,利用的特點邊是暴露,暴露的專案則是前端所有的程式碼和資料給客戶,透過分析html,js等原始碼獲取資料的技術。Chrome Debug就是常用的前端逆向工具。動態渲染的網站是通常用前端逆向分析的方法來分析的。在分析透徹的情況下,可以避免試用瀏覽器模仿的方式來進行爬取的。

方法二、 瀏覽器模擬

瀏覽器模擬指利用真實的瀏覽器去請求、執行頁面和指令碼。應用場景是爬取帶有複雜JS和介面加密的網站、也被BOT用於複雜網站。常見的瀏覽器模擬框架有Selenium WebDriver、 PhatomJS。 Selenium 是透過瀏覽器的debug介面進行瀏覽器的遠端操控API。PhantomJS是一個嵌入了瀏覽器核心的js渲染服務,這種技術可以用來對抗動態渲染和介面加密。所有的渲染和加密過程都由瀏覽器核心完成。 高階的做法是用CEF(Chrome Embedded Framework)進行二次開發。透過二次開發CEF,可以獲得很強的靈活性, 比如在頁面載入之前劫持JS物件、用C++程式碼hook native js api等等。這種技術的主要劣勢是低下的效能。 與純粹的HTTP請求程式碼來說, 這種方案要多吃50~500倍的CPU。 也就是說, 它的效率要下降數十倍到數百倍左右。

方法三、 字元識別

光學字元識別(OCR)用於對抗簡單的數字、字母驗證碼。初級的OCR基於模板。高階的字元識別基於神經網路,比如[這個專案],它基於LSTM模型,可以提供更好的識別率。

方法四、 行為模擬

行為模擬是指在爬蟲和BOT的過程中,有意的留下Cookie,並請求一些與需要爬取資料無關的介面或者做一些動作,用來模擬一般使用者的動作, 用於對抗行為分析。 在BOT場景下,這種方式也用來模擬使用者的活躍度和留存率。 一般來說,行為模擬的主要依據來源於前端逆向的工作, 破解者需要確定究竟有哪些HTML元素和使用者行為事件被網站所關注,並針對性的做出想要模擬的行為。 大多數情況下,爬蟲的行為模擬是請求某個日誌上報介面, 而一些比較特殊的網站(比如支付寶), 使用者行為資料附著在請求普通介面的引數中,並經過高度混淆。

方法五、打碼平臺

打碼平臺用來對抗強度比較高的驗證碼和人機驗證方案。正常的驗證碼流程是,由網站生成一張圖片傳遞給使用者,使用者輸入這張圖片的資訊傳回網站,完成人機驗證。 破解者透過對接打碼平臺,將使用者識別資訊的環節放到打碼平臺去做,打碼平臺組織一群專職人員,進行驗證碼的識別工作,並傳回爬蟲,完成驗證碼的識別工作。高階的打碼平臺還會利用這些海量的打碼資料進行模型訓練。

方法六、 JS Hook

這種方式主要用來對抗js上下文的跟蹤和分析。做法是,在頁面載入前,透過替換JS上下文的物件,將JS上下文中的物件和方法替換掉。 例如,將window.screen物件替換, 使網站的js程式碼獲取到替換後的螢幕解析度。 JS Hook一般在CEF二次開發中實現,也可以透過劫持普通瀏覽器的流量完成js hook。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31555707/viewspace-2564518/,如需轉載,請註明出處,否則將追究法律責任。

相關文章