web-dev-qa-db-ja.com

Nginxでいくつかを除くすべてのボットをブロックする

ボットとして識別されるすべてのhttp_user_agentsをブロックしますが、次のコードを配置するとGooglebotが許可されます。

map $http_user_agent $bad_bot {
default 1;
~*^Lynx 0; # Let Lynx go through
~*^google );
libwww-Perl                      1;
~(?i)(libwww|Wget|LWP::Simple|BBBike|Java|crawl|spider|bot) 1;
}

ただし、これによりgooglebotへのアクセスがブロックされます。

13
Troy Lone

ここにnginxの私のロジック

map $http_user_agent $limit_bots {
     default 0;
     ~*(google|bing|yandex|msnbot) 1;
     ~*(AltaVista|Googlebot|Slurp|BlackWidow|Bot|ChinaClaw|Custo|DISCo|Download|Demon|eCatch|EirGrabber|EmailSiphon|EmailWolf|SuperHTTP|Surfbot|WebWhacker) 1;
     ~*(Express|WebPictures|ExtractorPro|EyeNetIE|FlashGet|GetRight|GetWeb!|Go!Zilla|Go-Ahead-Got-It|GrabNet|Grafula|HMView|Go!Zilla|Go-Ahead-Got-It) 1;
     ~*(rafula|HMView|HTTrack|Stripper|Sucker|Indy|InterGET|Ninja|JetCar|Spider|larbin|LeechFTP|Downloader|tool|Navroad|NearSite|NetAnts|tAkeOut|WWWOFFLE) 1;
     ~*(GrabNet|NetSpider|Vampire|NetZIP|Octopus|Offline|PageGrabber|Foto|pavuk|pcBrowser|RealDownload|ReGet|SiteSnagger|SmartDownload|SuperBot|WebSpider) 1;
     ~*(Teleport|VoidEYE|Collector|WebAuto|WebCopier|WebFetch|WebGo|WebLeacher|WebReaper|WebSauger|eXtractor|Quester|WebStripper|WebZIP|Wget|Widow|Zeus) 1;
     ~*(Twengabot|htmlparser|libwww|Python|Perl|urllib|scan|Curl|email|PycURL|Pyth|PyQ|WebCollector|WebCopy|webcraw) 1;
 } 

location / {
  if ($limit_bots = 1) {
    return 403;
  }
}
31
GD Hussle

$ bad_botリストに対して$http_user_agentをチェックし、ブラックリストにある場合は HTTP 4 を返します。

location / {
   if ($http_user_agent ~ (libwww|Wget|LWP|damnBot|BBBike|Java|spider|crawl) ) {
       return 403;
   }
}

注:if block~は、大文字と小文字を区別した一致を実行します。ブラックリストで大文字と小文字を区別しない場合は、~*ではなく~を使用してください。

20
edigu