bot系のスパイダー・クローラーを .htaccess でブロックする

経緯

サイトへのアクセスが急増しているタイミングがあり調べてみたところ、bot系のスパイダー・クローラーっぽかったので、 .htaccess でブロックすることにしました。

単純にアクセスが気味が悪い、というだけならばまだ良いかもしれませんが、どこでどう使われているか分かりませんし、場合によってはアクセスログで不必要にレンタルサーバ等の契約上の容量を消費してしまう、という点も気になる部分かもしれませんので。

対策

検索すると robots.txt でアクセスを抑制する方法がヒットしたりしますが、このテの類のスパイダーやクローラーがお行儀良く robots.txt に従ってくれるとも限らないと考えて .htaccessでブロックすることにしました。

これはこれでサーバの負荷が気になるところですが、先述の点と照らし合わせて今回はこちらの手法を選びました。

# block bot spider/crawler and foreign search engine spider/crawler
SetEnvIf User-Agent "archive.org_bot" denybot
SetEnvIf User-Agent "ia_archiver" denybot
SetEnvIf User-Agent "special_archiver" denybot
SetEnvIf User-Agent "AhrefsBot" denybot
SetEnvIf User-Agent "Baiduspider" denybot
SetEnvIf User-Agent "bidswitchbot" denybot
SetEnvIf User-Agent "BLEXBot" denybot
SetEnvIf User-Agent "coccocbot" denybot
SetEnvIf User-Agent "CriteoBot" denybot
SetEnvIf User-Agent "DataForSeoBot" denybot
SetEnvIf User-Agent "Scrapy" denybot
SetEnvIf User-Agent "GrapeshotCrawler" denybot
SetEnvIf User-Agent "ias-sg" denybot
SetEnvIf User-Agent "MegaIndex" denybot
SetEnvIf User-Agent "MJ12bot" denybot
SetEnvIf User-Agent "PetalBot" denybot
SetEnvIf User-Agent "Pinterestbot" denybot
SetEnvIf User-Agent "proximic" denybot
SetEnvIf User-Agent "SeznamBot" denybot
SetEnvIf User-Agent "SemrushBot" denybot
SetEnvIf User-Agent "SerendeputyBot" denybot
SetEnvIf User-Agent "SMTBot" denybot
SetEnvIf User-Agent "Superfeedr" denybot
SetEnvIf User-Agent "trendictionbot" denybot
SetEnvIf User-Agent "VelenPublicWebCrawler" denybot
SetEnvIf User-Agent "WooRank" denybot
SetEnvIf User-Agent "YandexBot" denybot
SetEnvIf User-Agent "ZoominfoBot" denybot

<RequireAll>
  Require all Granted
  Require not env denybot
</RequireAll>

気になった bot 系を含めてこのような感じで。

参考

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。