常見的六種反爬技術(shù)應(yīng)用
jj
2021-12-09
方法一、前端逆向
前端以暴露為特征,暴露項目是將前端的所有代碼和數(shù)據(jù)交給客戶,通過分析html、js等源代碼獲取數(shù)據(jù)的技術(shù)行動。Chrome Debug是一個常見的前端反向工具。動態(tài)呈現(xiàn)的網(wǎng)站通常通過前端逆向分析進(jìn)行分析。在徹底分析的情況下,模仿瀏覽器可以避免嘗試爬行。

瀏覽器模擬是指使用真實的瀏覽器來請求和執(zhí)行頁面和腳本。應(yīng)用場景是用復(fù)雜的JS和接口加密爬取網(wǎng)站,被BOT用于復(fù)雜性網(wǎng)站。常見的瀏覽器模擬框架包括Selenium WebDriver和PhatomJS。Selenium是通過瀏覽器的調(diào)試界面對瀏覽器進(jìn)行遠(yuǎn)程操作控制API。Phantomjs是嵌入瀏覽器內(nèi)核的js渲染服務(wù),可以用來對抗動態(tài)渲染和接口加密的所有呈現(xiàn)和加密過程都是由瀏覽器內(nèi)核完成的。高級方法是使用CEF(Chrome嵌入式框架)進(jìn)行二次開發(fā)。通過CEF的二次開發(fā),我們可以獲得強大的靈活性,比如頁面加載前劫持JS對象,使用C++代碼掛接原生js api等等。這項技術(shù)的主要缺點是性能低。純粹的在HTTP請求代碼方面,這個方案需要50~500倍的CPU。也就是說,它的效率會下降幾十到幾百倍。
三、字符識別
光學(xué)字符識別(OCR)用于對抗簡單的數(shù)字和字母驗證碼。初級光學(xué)字符識別基于模板。基于神經(jīng)網(wǎng)絡(luò)的高級字符識別,例如[這基于LSTM模型的項目]可以提供更好的識別率。
四、行為模擬
行為模擬是指在爬蟲和BOT的過程中,故意留下Cookie,要求模擬一些與需要抓取的數(shù)據(jù)無關(guān)的接口或者一些動作。模擬一般用戶的動作,用于分析對抗行為。在BOT場景中,這種方法也用于模擬用戶的活動和保率。一般來說,行為模擬大師根據(jù)來自前端的逆向工作,破解者需要確定網(wǎng)站關(guān)注哪些HTML元素和用戶行為事件,并進(jìn)行針對性的模擬行為。大多數(shù)情況下,爬蟲的行為模擬是請求一個日志報告界面,而對于一些特殊的網(wǎng)站(如支付寶),則附加了用戶行為數(shù)據(jù)公共接口的參數(shù)被請求,并且非常混亂。
編碼平臺用于對抗高強度的驗證碼和人機驗證方案。正常的驗證碼過程是網(wǎng)站生成一張圖片傳遞給用戶,用戶輸入這個圖片的信息發(fā)回網(wǎng)站完成人機驗證。破解者通過對接編碼平臺將用戶身份信息的鏈接放入編碼平臺,編碼平臺組織一個組專職人員,對驗證碼進(jìn)行識別,并帶回爬蟲,完成驗證碼的識別。先進(jìn)的編碼平臺也會利用這些海量的編碼數(shù)據(jù)進(jìn)行建模培訓(xùn)類型。
六、JS HOOK
該方法主要用于對抗js上下文的跟蹤和分析。為此,在加載頁面之前,通過替換JS上下文中的對象,JS上下文中的對象和參與方將被更改方法進(jìn)行替換。比如替換window.screen對象,這樣網(wǎng)站的js代碼就可以獲得替換后的屏幕分辨率。JS Hook一般在CEF二次開發(fā)中實現(xiàn)。現(xiàn)在,js hook也可以通過劫持普通瀏覽器的流量來完成。