<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          總有壞人想爬我網(wǎng)站的數(shù)據(jù),看我怎么干他!

          共 3125字,需瀏覽 7分鐘

           ·

          2024-08-06 13:15

          大家好,我是程序員魚皮。前兩天模擬面試一位社招兩年的老哥,由于他的表現(xiàn)不錯,我就臨時起意,跟他交流一下我們最近遇到的業(yè)務場景問題。問題如下:

          最近我們不是做了個 程序員刷題網(wǎng)站 - 面試鴨 嘛,有很多壞人盯上了我們網(wǎng)站,想把我們 4,000 多道面試題、100 多個面試題庫的數(shù)據(jù)都用爬蟲抓下來。那我們應該如何防止這種爬蟲行為?比如怎么識別出這些非法爬取數(shù)據(jù)的用戶并且自動封號?

          整個問題的交流過程大家可以看視頻學習:https://www.bilibili.com/video/BV1b142187Tb

          下面我就直接把防止爬蟲的方法匯總分享給大家,總共有整整 10 種方法!最后一個方法很獨特~

          如何防止網(wǎng)站被爬蟲?

          1、使用協(xié)議條款

          robots.txt 是一個放置在網(wǎng)站根目錄下的文件,用于告訴搜索引擎的爬蟲哪些部分不希望被抓取。

          舉個例子,可以在 robots.txt 文件中添加如下規(guī)則來禁止特定目錄或文件被抓取:

          User-agent: *
          Disallow: /private/
          Disallow: /important/

          雖然大多數(shù)合規(guī)的爬蟲會遵守這些規(guī)則,但惡意爬蟲可能會忽視它,所以,僅憑 robots.txt 不能完全阻止所有爬蟲。但它是防護的第一步,起到一個聲明和威懾的作用。

          可以在網(wǎng)站的服務條款或使用協(xié)議中明確禁止爬蟲抓取數(shù)據(jù),并將違反這些條款的行為視為違法,如果網(wǎng)站內(nèi)容被惡意爬蟲抓取并造成了損害,robots.txt 可以作為違反這些條款的證據(jù)之一。

          2、限制數(shù)據(jù)獲取條件

          比起直接暴露所有數(shù)據(jù),可以要求用戶登錄或提供 API 密鑰才能訪問特定數(shù)據(jù)。還可以為關鍵內(nèi)容設置身份驗證機制,比如使用 OAuth 2.0 或 JWT(JSON Web Tokens),確保只有授權用戶能夠訪問敏感數(shù)據(jù),有效阻止未經(jīng)授權的爬蟲獲取數(shù)據(jù)。

          3、統(tǒng)計訪問頻率和封禁

          可以利用緩存工具如 Redis 分布式緩存或 Caffeine 本地緩存來記錄每個 IP 或客戶端的請求次數(shù),并設置閾值限制單個 IP 地址的訪問頻率。當檢測到異常流量時,系統(tǒng)可以自動封禁該 IP 地址,或者采取其他的策略。

          需要注意的是,雖然 Map 也能夠統(tǒng)計請求頻率,但是由于請求是不斷累加的,占用的內(nèi)存也會持續(xù)增長,所以不建議使用 Map 這種無法自動釋放資源的數(shù)據(jù)結構。如果一定要使用內(nèi)存進行請求頻率統(tǒng)計,可以使用 Caffeine 這種具有數(shù)據(jù)淘汰機制的緩存技術。

          4、多級處理策略

          為了防止 “誤傷”,比起直接對非法爬蟲的客戶端進行封號,可以設定一個更靈活的多級處理策略來應對爬蟲。比如,當檢測到異常流量時,先發(fā)出警告;如果爬蟲行為繼續(xù)存在,則采取更嚴厲的措施,如暫時封禁 IP 地址;如果解封后繼續(xù)爬蟲,再進行永久封禁等處罰。

          具體的處理策略可以根據(jù)實際情況來定制,也不建議搞的太復雜,別因此加重了系統(tǒng)的負擔。

          5、自動告警 + 人工介入

          可以實現(xiàn)自動告警能力,比如在檢測到異常流量或爬蟲行為時,系統(tǒng)能自動發(fā)出企業(yè)微信消息通知。然后網(wǎng)站的管理員就可以及時介入,對爬蟲的請求進行進一步分析和處理。

          這點之前也給大家分享過,不止是針對爬蟲,企業(yè)的線上系統(tǒng)最好接入全方面的告警,比如接口錯誤、CPU / 內(nèi)存占用率過高之類的。

          6、爬蟲行為分析

          非法爬蟲和正常用戶的行為一般是有區(qū)別的,爬蟲往往遵循特定的訪問模式。比如正常用戶每道題目都要看一會兒、看的時間也不一樣,而爬蟲一般是按照固定的順序、固定的頻率來獲取題目,很明顯就能識別出來。

          比如下面這種情況,有可能就是爬蟲:

          7、請求頭檢測

          每個發(fā)送到服務器的請求都有請求頭信息,可以通過檢查請求頭中的 User-Agent 和 Referer 等標識符,對爬蟲請求進行攔截。

          當然,這招只能防防菜鳥,因為請求頭是可以很輕松地偽造的,只要通過瀏覽器自帶的網(wǎng)絡控制臺獲取到響應正常的請求頭信息,就可以繞過檢測了。

          8、自主公開數(shù)據(jù)

          記得大學上信息安全課的時候,學到一個知識點:防止網(wǎng)絡攻擊的一種方法是,讓攻擊者的成本大于實際的收益。比如密碼 10 分鐘有效,破解密碼要花 15 分鐘,就不會有人去破解。

          用到爬蟲場景上,我們的做法是,不做任何限制,直接讓所有人不登錄也能查看到我們網(wǎng)站的題目數(shù)據(jù)!而且還提供了題目的各種篩選功能、收藏功能。大多數(shù)同學只是為了自己學習,這樣一來,就沒有必要花時間去爬數(shù)據(jù)了~

          9、溯源技術

          雖然題目都是公開的,但有些我們專門請大廠大佬們來寫的優(yōu)質(zhì)題解是僅會員可見的。如果有用戶使用爬蟲抓取了這部分數(shù)據(jù),可就要小心了!一般來說,只要你在一個網(wǎng)站登錄了,就一定會有訪問記錄,如果你泄露了網(wǎng)站登錄后才可見的內(nèi)容、尤其是付費內(nèi)容,網(wǎng)站管理員一定有辦法追溯到你是誰。

          比較常用的溯源技術就是水印、盲水印等。對于我們的面試鴨,本身就是通過微信登錄的,而且如果你是會員,肯定還有支付記錄。這些技術不僅幫助標記數(shù)據(jù)源,還可以在數(shù)據(jù)被濫用時追蹤其來源,從而增強數(shù)據(jù)的保護。

          10、科普法律

          除了上面這些方法外,還可以通過接入反爬服務、接入驗證碼、增加動態(tài)時間戳等方式進一步限制爬蟲。但是要記住,爬蟲是沒有辦法完美防御的!因為你無法限制真實的用戶,攻擊者完全可以模擬真實用戶的訪問方式來獲取你的網(wǎng)站數(shù)據(jù),比如找 10 個用戶,每人獲取幾百題。

          所以我的最后一個方法是 —— 科普法律。可以在網(wǎng)站上發(fā)布明確的法律聲明,告知用戶未經(jīng)授權的抓取行為是違法的,可以對爬蟲行為起到一定的威懾作用。并且還通過發(fā)布視頻和文章的方式,讓廣大程序員朋友們提高法律意識。爬蟲是有一定風險的,自己學習倒沒問題,但是千萬別給人家的網(wǎng)站造成壓力了,搞不好就有破壞計算機系統(tǒng)的嫌疑了!


          ???? 點擊下方閱讀原文,獲取魚皮往期編程干貨。


          往期推薦

          魚皮的原創(chuàng)項目,越來越豐富了!

          魚皮的 Java 學習路線《速覽版》

          我用這個程序員面試刷題工具,吊打了面試官!

          我用這個工具,一分鐘搞定了簡歷!

          魚皮的保姆級寫簡歷指南,免費領

          被 Bug 折磨瘋后,我寫了本 Bug 修復手冊。

          編程導航,即將大升級!

          瀏覽 1940
          11點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          11點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色综合久久88色综合天天看泰 | 五月天久久性爱 | 青青草最新网址 | 韩国三级小视频 | 免费伊人网 |