最近逛一些國內外的知名技術網站,發現了一個現象,大家仿佛約好了似的,都開始搞人機驗證了。
![]()
![]()
為啥原來人機驗證很少,現在頻率這么高呢?
原因很簡單:AI爬蟲。
現在大家已經習慣了問AI技術問題,但是AI的數據從哪里來呢?自然是從這些技術網站“爬”來的。
如果爬蟲按照robots.txt還好,壞就壞在有些爬蟲完全不按規則行事,技術網站就不得不防了。
“原先就被爬,AI 起來以后,防不勝防,爬的更狠了”——某位大論壇的 CEO 如是說。
防止爬蟲,技術上有很多方法,例如檢查User-Agent,Referer,限制訪問頻率,檢查Cookie等等。
只不過這些傳統的方式很容易被爬蟲繞過,逃過檢測。
所以現在出現了一些更高級的反爬蟲思路,例如識別行為:檢測鼠標鍵盤的使用習慣,檢測瀏覽器窗口的擺放位置,綜合判斷是不是真人行為。
識別本地瀏覽器的客戶端特征,禁止無頭瀏覽器訪問。
注入算力驗證腳本,消耗 CPU 資源,抬高客戶端的訪問成本,讓原本每秒可以訪問 1000 次的設備,在被保護后每秒只能訪問 1 次。
打亂HTML結構,混淆JS代碼等等。
這些防護行為,網站想自己實現非常麻煩的,最好用專業的軟件,比如雷池這樣的Web應用防火墻。
![]()
雷池全球裝機量超過50多萬臺,日均處理300億次請求,檢出率76.17%,誤報率僅0.22%。
在GitHub上,雷池的star已經達到20.9k,是最受歡迎的WAF項目,沒有之一。
它的安裝非常簡單,一行命令就行:
bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"安裝成功以后,就可以打開瀏覽器訪問雷池控制臺了
https:// :9443/
![]()
01
爬蟲防護
安裝好以后,進入人機驗證設置:
![]()
然后訪問被雷池 WAF 防護的網站,就會看到雷池正在檢查客戶端環境的安全性。
![]()
合法用戶等待兩三秒以后,真正的網頁內容會自動載入,惡意用戶則會被阻攔。
如果檢測到本地客戶端被自動化程序控制,訪問依然會被阻止,如下圖:
![]()
還可以啟用動態防護功能,,對返回給瀏覽器的 HTML、JS 進行動態處理,讓每一次訪問看到的代碼形態都不完全一樣。
![]()
這樣一來,爬蟲和自動化腳本就很難通過“靜態規則”來理解頁面結構,比如這個JavaScript:
![]()
被雷池進行動態加密以后變成了這個樣子,很難辨認了。
![]()
特別值得一提的是,雷池的人機識別是采用的是云端驗證方式,每一次驗證都會調用長亭的云端 API 來輔助驗證。
結合雷池的 IP 威脅畫像數據,瀏覽器指紋數據,最終對于爬蟲的識別率超過 99.9%。可以說是反惡意爬蟲的最佳利器。
與此同時,云端的算法和 JS 邏輯會持續自動更新,即使被厲害的大佬破解,破解的也只是過去的版本,雷池永遠跑在攻擊者的前面。
看著這么高的識別率,網站站長們肯定會擔心這會不會影響 SEO,會不會影響搜索引擎對于網站頁面的收錄情況。
答案當然是 “不會”,雷池貼心的提供了各大搜索引擎的爬蟲 IP 列表,如果對 SEO 有需求,只需要對這些 IP 加白即可。
![]()
02
CC防護
在 Web 世界里,有一類攻擊特別讓人難受,叫 CC 攻擊(Challenge Collapsar)。
攻擊者會控制大量肉雞(被感染的電腦)或代理服務器,偽裝成正常瀏覽器訪問網站,不斷訪問首頁、搜索頁、接口等。每個請求看起來都合法(有正常的 User-Agent、Referer、Cookie),但數量極其巨大。
最終讓服務器過載,網頁卡死、數據庫阻塞或服務崩潰。
![]()
由于請求看起來都合法,這種攻擊非常難以防御。
針對這種情況,雷池防火墻提供了“頻率限制”的功能,如果某個 IP 在短時間內發起大量 HTTP 請求,就阻斷該 IP 后續的所有訪問,要求它通過人機驗證,確保是真人才行。
![]()
還有不少應用存在高峰流量的情況,比如搶票,熱點事件等,如果不進行限流,服務很容易被海量的請求沖垮,誰也用不了。
當然程序員可以寫代碼,深入到網站內部去實現限流功能,但是很麻煩,使用雷池的“等待室”功能,根本不用對應用做任何改變就可以實現限流。
![]()
這里配置的在線用戶是超過了100人就需要進入等待室等候了,而進入應用的用戶,如果超過3分鐘在網頁上沒有操作,對不起,那就去等候室重新排隊吧。
03
身份認證
第一次看到“防火墻自帶身份認證”這個功能時,我也愣了一下。按理說,認證不是應用程序自己該做的事嗎?
但仔細想想,這個功能解決的其實是一個很現實的問題:很多系統從一開始就沒打算暴露在公網。
比如一些內部工具、監控頁面、管理后臺,本來只打算給小范圍的人用,結果后來為了方便,直接掛到了服務器上。
這類系統往往認證簡單,甚至干脆沒有認證,一旦被掃到,就是一個現成的入口。
雷池在這里提供的是一種“外掛式”的解決方案:不改應用代碼,只在防火墻層面加一層身份校驗,就能把這個入口先堵住。
![]()
它不是用來替代應用本身的權限系統,而是在你來不及重構之前,先把門鎖上。
![]()
04
語義檢測
除了上面所說的各種防護,雷池對于 SQL 注入、XSS、路徑穿越、命令注入這些老生常談的攻擊方式,自然不在話下。
![]()
雷池的準確率、檢出率都非常高,誤報率,漏報率非常低,性能指標優于全球的一些知名產品:
![]()
但真正讓我覺得它“不只是換了個殼”的,是它背后的思路。
傳統防火墻更多是規則匹配,比如看到 union、select 這些關鍵字,就覺得你可能在搞 SQL 注入。
問題是,這種方式一方面容易誤傷,另一方面也很容易被繞過, 稍微有點經驗的攻擊者,換個寫法、插點注釋,例如只要在在 union 和 select 中間插入了注釋字符:union /**/ select,這樣破壞了關鍵字的特征,傳統防火墻就檢測不出來了。
雷池用的是另一條路:語義分析。
它不是只盯著字符本身,而是嘗試理解這段輸入“在語義層面想干什么”。
對HTTP 請求解碼之后,會根據內容類型交給不同的解析器,再判斷這段輸入是否真的會構成攻擊。
說白了,就是:不看你寫得像不像壞人,而是看你做的事能不能真的傷到系統。
05
總結
正是由于雷池精準地、漂亮地解決了Web系統廣泛存在的安全問題,吸引了全球大量客戶的使用,成為優秀企業的信賴之選。
如果你也有Web網站,需要把安全防護做好,強烈建議考慮下雷池這個非常優秀的開源的WAF。
最后,有什么建議和問題,歡迎大家加入雷池的微信交流群:
也歡迎大家到GitHub,給雷池點個小星星,支持下國產的WAF:
https://github.com/chaitin/SafeLine
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.