Robots.txt

阻止 yandex.ru 機器人

  • September 9, 2013

我想阻止來自 yandex.ru 搜尋機器人的所有請求。這是非常流量密集的(2GB/天)。我首先阻止了一個 C 類 IP 範圍,但似乎這個機器人出現在不同的 IP 範圍內。

例如:

spider31.yandex.ru -> 77.88.26.27 spider79.yandex.ru -> 95.108.155.251 等。

我可以在 robots.txt 中添加一些否認,但不確定它是否尊重這一點。我正在考慮阻止 IP 範圍列表。

有人可以提出一些通用的解決方案。

不要相信你在論壇上讀到的關於這個的內容!相信你的伺服器日誌告訴你的。如果 Yandex 遵守 robots.txt,您會在日誌中看到證據。我親眼看到 Yandex 機器人甚至不讀取 robots.txt 文件!

不要浪費時間在冗長的 IP 列表上,這些列表只會大大降低您的網站速度。

在 .htaccess 中輸入以下行(在每個站點的根文件夾中):

SetEnvIfNoCase User-Agent "^Yandex*" bad_bot
Order Deny,Allow
Deny from env=bad_bot

我做到了,Yandex 現在得到的都是 403 Access denied 錯誤。

再見Yandex!

我在這裡太年輕(聲譽),無法將我需要的所有 URL 作為超連結發布,所以請原諒我帶括號的 URL。

來自 Dan Andreatta的論壇連結和另一個連結,有一些但不是全部你需要的東西。您將需要使用他們查找 IP 號碼的方法,並編寫一些腳本來保持您的列表新鮮。然後你想要這樣的東西,向你展示一些已知的值,包括他們一直在使用的子域命名方案。密切關注他們的 IP 範圍,也許自動化一些東西來估計一個合理的CIDR(我沒有發現他們的實際分配;可能只是 google 失敗@我)。

盡可能準確地找到他們的 IP 範圍,這樣您就不必在使用者等待 ( http://yourdomain/notpornipromise ) 時浪費時間進行反向 DNS 查找,而您只需要做一個比較匹配什麼的。Google剛剛向我展示了grepcidr,它看起來非常相關。從連結頁面:“grepcidr 可用於根據一個或多個無類域間路由 (CIDR) 規範或地址範圍指定的任意網路過濾 IP 地址列表。” 我想它是一個具有已知 I/O 的專用程式碼很好,但您知道您可以以十億種不同的方式重現該功能。

我能想到的最“一般的解決方案”,實際上希望分享(說事情存在等等)是讓你開始在你的位置編寫一個此類罪犯的數據庫,並花一些錢- 思考和研究防禦和反擊行為的方法。這將帶您更深入地了解入侵檢測、模式分析和蜜網,而不是這個特定問題的真正範圍。但是,在該研究的範圍內,您提出的這個問題有無數的答案。

由於 Yandex 在我自己的一個網站上的有趣行為,我發現了這一點。我不會將我在自己的日誌中看到的內容稱為濫用,但 spider50.yandex.ru 消耗了我 2% 的訪問次數和 1% 的頻寬……我可以看到機器人在哪裡真正濫用大文件和論壇等,它們都不能在我今天看到的伺服器上被濫用。值得調查的是機器人正在查看 /robots.txt,然後等待 4 到 9 小時並要求 /directory/ 不在其中,然後等待 4 到 9 小時,要求 /another_directory/,然後可能是再多一些,然後 /robots.txt 再次,重複無限。就頻率而言,我想他們表現得足夠好,spider50.yandex.ru 機器似乎尊重 /robots.txt。

我今天不打算阻止他們訪問此伺服器,但如果我分享羅斯的經驗,我會的。

關於我們在我的伺服器案例中處理的小數字的參考,今天:

Top 10 of 1315 Total Sites By KBytes
# Hits  Files  KBytes   Visits  Hostname
1 247 1.20% 247 1.26% 1990 1.64% 4 0.19% ip98-169-142-12.dc.dc.cox.net
2 141 0.69% 140 0.72% 1873 1.54% 1 0.05% 178.160.129.173
3 142 0.69% 140 0.72% 1352 1.11% 1 0.05% 162.136.192.1
4 85 0.41% 59 0.30% 1145 0.94% 46 2.19% spider50.yandex.ru
5 231 1.12% 192 0.98% 1105 0.91% 4 0.19% cpe-69-135-214-191.woh.res.rr.com
6 16 0.08% 16 0.08% 1066 0.88% 11 0.52% rate-limited-proxy-72-14-199-198.google.com
7 63 0.31% 50 0.26% 1017 0.84% 25 1.19% b3090791.crawl.yahoo.net
8 144 0.70% 143 0.73% 941  0.77% 1 0.05% user10.hcc-care.com
9 70 0.34% 70 0.36% 938  0.77% 1 0.05% cpe-075-177-135-148.nc.res.rr.com
10 205 1.00% 203 1.04% 920  0.76% 3 0.14% 92.red-83-54-7.dynamicip.rima-tde.net

那是在一個共享主機中,它甚至不再費心限制頻寬,如果爬網採用類似 DDoS 的形式,他們可能會在我之前註意到並阻止它。所以,我對此並不生氣。事實上,我更喜歡讓他們在我的日誌中寫入的數據來玩。

羅斯,如果您真的對每天輸給 Yandex 的 2GB 流量感到憤怒,您可能會向他們下毒。這就是它的目的!通過 HTTP 301 直接將它們從您不希望它們下載的內容重新路由到垃圾郵件子域,或者自行滾動,以便您可以控制邏輯並從中獲得更多樂趣。這種解決方案為您提供了以後更需要重用的工具。

然後開始在您的日誌中更深入地查找類似這樣的有趣內容:

217.41.13.233 - - [31/Mar/2010:23:33:52 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:33:54 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:33:58 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:34:00 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:34:01 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:34:03 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:34:04 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:34:05 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:34:06 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:34:09 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:34:14 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:34:16 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:34:17 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:34:18 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:34:21 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:34:23 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:34:24 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:34:26 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:34:27 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
217.41.13.233 - - [31/Mar/2010:23:34:28 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"

提示:伺服器上不存在 /user/ 目錄,也沒有指向該目錄的超連結。

引用自:https://serverfault.com/questions/136926