在线乱码卡一卡二卡新HD,最近韩国免费观看视频,国产色无码精品视频国产,亚洲男人的天堂久久香蕉

快播:攔截網絡爬蟲流量技術的應用研究
來源:中國保密協會科學技術分會    時間:2023-05-26 10:02:17
一、Headers頭部校驗

網絡爬蟲的本質是對網絡請求的模擬。腳本要發送請求,就需要構造請求頭部,這個請求頭部通常被稱為Headers。Headers頭部校驗指的是服務器對HTTP請求報文中請求頭鍵值對的檢測。檢測的鍵值對主要有三個:

(1) User-Agent:檢測請求者的用戶代理,此項缺失則判定為機器人。


(資料圖片)

(2) Referer:檢測請求者是否以正常途徑跳轉到本頁面,常用于防盜鏈技術。

(3) Cookie:檢測請求者身份狀態,在需要登錄才能訪問的網站通常需要攜帶。

要應對這類Headers頭部檢測非常容易,只需要在使用瀏覽器訪問頁面后進行抓包觀察,大多數情況下直接復制請求頭中的內容即可。值得注意的是,在需要登錄才能訪問的頁面,其中的Cookie是有時效性的,需要及時更新。在一些安全防護較好的網站,Headers頭部中也會額外加入一些本地JS運行后計算出的加密參數。

二、IP地址記錄

對于IP地址的記錄,主要是針對惡意爬蟲,防止其在短時間內大量發起HTTP請求訪問網站,造成網站資源的侵占。這種反爬蟲手段原理就是檢測異常訪問用戶,如果有請求在短時間(例如3秒)內連續訪問網站高達數十次,則會進行IP記錄,將其判定為機器人,在該IP地址的HTTP請求再次發來的時候,服務器就回復狀態碼403 Forbidden,禁止該請求的繼續訪問,這種防護手段的優點很明顯,缺陷也很明顯,那就是一刀切容易誤傷人類用戶。

此種反爬蟲手段的應對需要爬蟲開發者盡量減緩HTTP請求間隔,以求達到和正常人類訪問頁面相似的速度,避免被算法檢測?;蛘呖梢越P代理池,也可以購買代理商IP,如圖1所示:

圖1快代理IP頁面

在進行HTTP請求的時候使用代理IP訪問,本地IP就會被隱藏在代理之后,即便被算法檢測,也只需要更換新的IP地址。

三、Ajax異步加載

Ajax(Asynchronous JS And XML,異步JS和XML)是一種創建交互式網頁應用的網頁開發技術,簡單來說,就是在瀏覽一個界面的時候,URL地址本身沒有發生改變,頁面內容卻發生了動態更新,如圖2所示,網頁端里百度圖片的瀑布流加載即使用了Ajax。

圖2 百度圖片抓包

這個時候,直接使用GET請求去獲取頁面內容是定位不到具體內容的,因為它的獲取一般是經由數據接口進行返回的。

嚴格來說,這并不算是一種反爬蟲技術,但是運用Ajax之后,爬蟲開發者需要在網絡請求包中去自行選擇數據包才可以,而不是可以簡單通過GET頁面源代碼來編寫爬蟲。面對此類技術,只需要進行網頁抓包,在大量的數據包中尋找到真正包含網頁內容的數據接口即可。因為數據如果要渲染到頁面,就一定會有數據包將其傳輸到客戶端,開發者要做的只是將它找出來。一般而言,此類技術進行數據傳輸返回的結果都是JSON格式的,所以需要用JSON包進行數據解析。

四、字體反爬蟲

不同于一般的反爬蟲思路,字體反爬蟲主要在數據上做手腳。要獲取的網頁數據在瀏覽器中可以正常查看,但是在將其復制到本地后就會得到亂碼。它的原理是網站自己自定義創造了一套字體,構建映射關系后將其添加到了css的font中,在瀏覽器中查看的時候,網站會自動獲取這些文件,從而建立對應關系映射得到字符。而爬蟲開發者在編寫網絡爬蟲的時候,往往只會請求網頁的URL地址,這就造成了映射文件的空缺,沒有字符集能夠解析這些字符,導致亂碼問題。如圖3所示,實習僧網頁端使用了自定制的字體文件。

圖3 實習僧字體反爬蟲

字體反爬蟲的突破有兩種方法,第一種方法是找到font文件的URL請求地址,將其下載到本地后使用xml解析工具解析出來,然后就可以根據其中的字符對應關系,建立本地映射進行字符替換。第二種方法是直接手動復制其中的加密字符,在本地通過encode編碼后得到對應編碼,建立自己的本地映射字典,然后進行字符爬取替換。之所以可以使用第二種方法,是因為字體反爬蟲的加密字符通常不會很多,大多是對阿拉伯數字和部分網站常用漢字進行加密,所以可以直接人工復制進行編碼映射。

五、驗證碼反爬蟲

如今的互聯網惡意爬蟲橫行,上述的反爬蟲手段雖然可行,但是被惡意爬蟲突破也很容易。為了應對這種情況就誕生了驗證碼,從最開始的英數驗證碼到如今的圖片點選驗證碼,驗證碼技術在不斷更新迭代,未來也會出現更多類型的驗證碼。驗證碼的防護主要在兩個階段,第一個階段是登錄注冊階段,第二個階段是訪問頁面階段,前者是為了將惡意爬蟲攔在門外,讓人類用戶進入,后者是為了清理那些突破了登錄注冊階段,進入頁面爬取的惡意爬蟲,如果服務器檢測到某IP地址在短時間內大量訪問,不會直接封禁用戶,而是出現驗證碼,這樣就避免了對用戶的誤傷,不是一刀切,更加人性化。如果是人類用戶自然可以通過這些點選識別的驗證碼,但如果是機器人就很難突破這第二道關卡,如圖4所示的圖片點選驗證碼。

圖4 圖片點選驗證碼

這類反爬蟲手段的應對主要是對接各大驗證碼識別平臺或者是通過訓練深度學習神經網絡模型,讓模型幫助爬蟲程序過掉驗證碼。而且如今深度學習框架盛行,訓練模型早已不是難事,單純的驗證碼識別已經攔不住搭配了深度學習模型的網絡爬蟲,所以網站開發者會在驗證碼識別背后再加上較復雜的JS參數加密,即便驗證碼被識別,也很難構造出最終的加密結果來,這樣就提高了破解門檻。不過使用特殊的測試工具,例如selenium,可以直接搭配訓練模型模擬人類行為過掉驗證碼,免去破解JS加密參數的煩惱。不過自動化的測試工具存在著明顯的特征,個別網站會在JS文件中添加對自動化軟件特征的識別,從而拒絕服務。

六、JavaScript參數加密

JavaScript(以下簡稱JS)參數加密常見于POST表單提交的情形里,主要是為了防范惡意機器人批量注冊與模擬登錄等行為。如果對POST表單進行抓包的話,會發現自己在表單里輸入的數據被加密為了不可知的字符串,這主要是通過加載網站的本地JS腳本實現的。

對于這類反爬蟲的應對,除了熟悉調試技巧外,還需要讀者有較扎實的JS語言基礎,因為此類加密的破解通常需要開發者能夠讀懂目標網站的JS加密腳本,并進行一系列的刪改操作,用靜態分析逐步從龐大的JS腳本中將具體的加密函數“扣”出來,在本地模擬運行得到加密結果,再通過POST發包將參數進行傳遞才能得到正常反饋,因此它能夠阻擋大量技術力較低的惡意爬蟲。

這類反爬蟲手段的破解手段主要分兩種:

(1)簡單的加密直接使用Python語言進行復現。

(2)較復雜一些的加密可以將具體函數“扣”出來,組成加密腳本后模擬運行。同時還要對一些瀏覽器指紋檢測進行模擬。

七、JS反調試

JS參數加密對于熟悉JS語言的開發者來說,防范的門檻并不高。所以為了從源頭上斷絕開發者對網站加密文件的分析,就誕生了JS反調試。

最簡單的方法是通過禁止用戶右擊以及按F12等快捷鍵實現的,對于這種簡單的防護只需要修改對應快捷鍵,或者在新窗口中打開開發者工具再切換回原頁面即可。

較難一些的主要是通過檢測用戶是否打開了瀏覽器開發者工具或者是否修改了本地JS腳本文件,從而判斷是否進行無限循環debugger的卡頓,讓開發者無法進行腳本調試。這種反爬蟲的破解需要熟悉JS Hook相關知識,因為檢測控制臺狀態和腳本文件狀態的源代碼是大同小異的,可以通過編寫Chrome拓展插件自動Hook反調試代碼并進行函數替換,從而過掉檢測讓開發者能夠進行靜態分析。

八、AST混淆反爬蟲

從理論上來說,任何反爬蟲手段都無法阻止爬蟲的進入,因為如果一個網站想要有用戶流量,必然不會設置太高的門檻導致正常用戶也無法訪問。只要開發者的網絡爬蟲盡可能地模擬人類訪問網站的情形,就能夠進入網站肆意橫行。

不過雖然無法根絕網絡爬蟲的進入,卻可以提高網絡爬蟲進入的門檻,將網站的損失降到最低。在所有的反爬蟲防護手段中,JS參數加密的防護效果是比較出色的,它能將大多數低技術力的爬蟲開發者擋在門外?,F在的網站即便是使用了驗證碼防護,其背后的HTTP請求傳輸也會使用JS對驗證碼參數進行加密,它雖然沒辦法完全阻止爬蟲的進入,卻能讓爬蟲開發者耗費大量時間在破解上,這是一種成本低廉卻效果非凡的手段,如果網站的加密腳本經常更換的話,即便是再老練的爬蟲開發者也會疲于奔命,因此如何加大JS腳本的破解難度是一個關鍵點。

常見的防止開發者調試JS腳本文件的方法無非禁止右擊和禁止打開開發者工具,或者使用JS代碼進行檢測,但這些方法都存在著通殺通用的解決方案,因為它們的防護等級并不算高,只要熟練使用搜索引擎就可以過掉。要想在JS腳本防護上盡可能延長被爬蟲破解的時間,最好的方法就是使用AST抽象語法樹對JS腳本代碼進行高度混淆,將其轉化生成為不可閱讀且不可識別,卻可以正常運作的亂碼文件。如圖5所示,經過混淆的JS代碼的可讀性已經大大下降,這進一步增大了JS逆向的難度。

圖5 經過混淆的JS代碼

九、總 結

反爬蟲技術并不能夠根絕網絡爬蟲,這是必然的。網站的前端加密文件是任何用戶都可以隨意讀取的,網站的存在是以真實用戶的流量為依托的,如今的網絡爬蟲技術飛速發展,幾乎能夠達到以假亂真的狀態。即便是檢查JS文件是否真實運行在瀏覽器當中,爬蟲開發者也可以在腳本文件中模擬對應的對象原型。但不論怎么說,爬蟲和反爬蟲的對抗,一方面提高了爬蟲的門檻,強化了企業的安全意識,另一方面,又促進了爬蟲技術的發展。

參考文獻

[1]Ma Xiaoju,Yan Min. Design and Implementation of Craweper Based on Scrapy[J]. Journal of Physics: Conference Series,2021,2033(1).

[2]Deng Kaiying,Chen Senpeng,Deng Jingwei. On optimisation of web crawler system on Scrapy framework[J]. International Journal of Wireless and Mobile Computing,2020,18(4).

[3]Wang Wei,Yu Lihua. UCrawler: A learning-based web crawler using a URL knowledge base[J]. Journal of Computational Methods in Sciences and Engineering,2021,21(2).

[4]Tianyi Ma,Ziyang Zhang. Medical Consultation System based on Python Web crawler[C]//.Proceedings of 2021 2nd International Conference on Electronics, Communications and Information Technology (CECIT 2021).,2021:772-776.DOI:10.26914/c.cnkihy.2021.065511.

[5]Addo Prince Clement,Dorgbefu Jnr. Maxwell,Kulbo Nora Bakabbey,Akpatsa Samuel Kofi,Ohemeng Asare Andy,Dagadu Joshua Caleb,Boansi Kufuor Oliver,Kofi Frimpong Adasa Nkrumah. Video Ads in Digital Marketing and Sales: A Big Data Analytics Using Scrapy Web Crawler Mining Technique[J]. Asian Journal of Research in Computer Science,2021.

關鍵詞:

X 關閉

X 關閉

<蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>