摘要:現在有許多初學者學習網絡爬蟲,但他們不懂得控制速度,導致服務器資源浪費。通過的簡單配置,能過濾一小部分這類爬蟲。參考限制某個同一時間段的訪問次數首發地址使用過濾網絡爬蟲蜻蜓代理
現在有許多初學者學習網絡爬蟲,但他們不懂得控制速度,導致服務器資源浪費。通過 Nginx 的簡單配置,能過濾一小部分這類爬蟲。
方法一:通過 User-Agent 過濾Nginx 參考配置如下:
location / { if ($http_user_agent ~* "scrapy|python|curl|java|wget|httpclient|okhttp") { return 503; } # 正常請求 }
這里只列出了部分爬蟲的 User-Agent,需要更多請參考:GitHub - JayBizzle/Crawler-Detect
注意:User-Agent 很容易修改方法二:block IP
通過禁止某個 IP 或者某個 IP 段訪問,也能起到一定效果。
Nginx 示例配置如下:
deny 178.238.234.1; deny 1.32.128.0/18;方法三:rate limit
通過限制某個 IP 的訪問頻率,避免一部分 CC (Challenge Collapsar)攻擊。
Nginx 示例配置如下:
http{ #定義一個名為allips的limit_req_zone用來存儲session,大小是10M內存, #以$binary_remote_addr 為key,限制平均每秒的請求為20個, #1M能存儲16000個狀態,rete的值必須為整數, #如果限制兩秒鐘一個請求,可以設置成30r/m limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s; ... server{ ... location { ... #限制每ip每秒不超過20個請求,漏桶數burst為5 #brust的意思就是,如果第1秒、2,3,4秒請求為19個, #第5秒的請求為25個是被允許的。 #但是如果你第1秒就25個請求,第2秒超過20的請求返回503錯誤。 #nodelay,如果不設置該選項,嚴格使用平均速率限制請求數, #第1秒25個請求時,5個請求放到第2秒執行, #設置nodelay,25個請求將在第1秒執行。 limit_req zone=allips burst=5 nodelay; ... } ... } ... }
當然,攻擊者也可以使用代理IP來破除頻率限制。建議在網站前面加一層 CDN。
參考:nginx限制某個IP同一時間段的訪問次數
首發地址:使用 Nginx 過濾網絡爬蟲 | 蜻蜓代理
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39761.html
摘要:三服務端渲染方式方式一傳統方式服務端渲染,解決用戶體驗和更好的,有諸多工具使用這種方式如的的等。未列入白名單即請求不是請求或未通過任何過濾器,將只是充當反向代理,只是按原樣傳送請求和響應。 一、服務器端渲染是什么?使用 React 構建客戶端應用程序,默認情況下,可以在瀏覽器中輸出 React 組件,進行生成 DOM 和操作 DOM。React 也可以在服務端通過 Node.js 轉換...
摘要:爬蟲和反爬蟲日益成為每家公司的標配系統。本文將描述一種盡量簡單的反爬蟲方案,可以在十幾分鐘內解決部分簡單的爬蟲問題,緩解惡意攻擊或者是系統超負荷運行的狀況至于復雜的爬蟲以及更精準的防御,需要另外討論。 showImg(https://segmentfault.com/img/bVDYV4?w=800&h=568); 爬蟲和反爬蟲日益成為每家公司的標配系統。爬蟲在情報獲取、虛假流量、動態...
摘要:服務端渲染兩種方式根據上文介紹對服務端渲染利弊有所了解,我們可以根據利弊權衡取舍,最近在做服務端渲染的項目,找到多種服務端渲染解決方案,大致分為兩類。第一種方式傳統方式服務端渲染,解決用戶體驗和更好的,有諸多工具使用這種方式如的的等。 最近在開發一個服務端渲染工具,通過一篇小文大致介紹下服務端渲染,和服務端渲染的方式方法。在此文后面有兩中服務端渲染方式的構思,根據你對服務端渲染的利弊權...
閱讀 3033·2021-10-13 09:39
閱讀 1879·2021-09-02 15:15
閱讀 2438·2019-08-30 15:54
閱讀 1803·2019-08-30 14:01
閱讀 2602·2019-08-29 14:13
閱讀 1411·2019-08-29 13:10
閱讀 2731·2019-08-28 18:15
閱讀 3869·2019-08-26 10:20