2023年1月更新!迷惑なbotをアクセス拒否・除外する設定方法まとめ(Nginx・Apache・.htaccess)
※2023年1月に更新しました。
※「parudou3.com」からこちらに移転しました。
WEBサイトのアクセスはbotが占める率が高い。
2000記事ほどで1日1万ものbotのログが溜まります。
そのうち半分は検索エンジンですが、もう半分はSEO・マーケティング系のbot。
それらはアクセス拒否を強く検討すべきだろう。
1、Nginxでのbot除外方法
下記コードは2023年1月時点での拒否したいbotを入れています。
上位のSEO・マーケティング系を拒否。
各国の検索エンジンは拒否していません。
if ( $http_user_agent ~* (SemrushBot|AhrefsBot|Linguee|proximic|BLEXBot|GrapeshotCrawler|DotBot|CriteoBot|Barkrowler|MicroAdBot|linkfluence|Cincraw|ICC-Crawler|Quantcastbot|contxbot|bidswitchbot|SeznamBot|Linespider|Mappy|MJ12bot|MegaIndex|bidswitchbot|SMTBot|ltx71|integralads|jet-bot|trendictionbot|DataForSeoBot) ) {
return 403;
}
自分は上記コードをserverコンテキスト内に挿入して除外しています。
サイト個別のconfファイル(doudonn.confなど)に設定すると良い。
ユーザーエージェントに、指定の文字列が含まれる場合に「403」を返します。
もちろん、404でもいいし、444でもいい。
ただし、444の場合はバックエンドサーバーでは使わないように。
サーバーダウンと同じ状態とみなされ、フロントサーバーがエラーを返します。
「deny all;」はエラーログに出力されるので、自分はやりません。
変更後はもちろん、リロードを。
//CentOS7の場合
systemctl reload nginx
2、Apache(.htaccess)でのbot除外方法
SetEnvIfNoCase User-Agent "SemrushBot" jogai
SetEnvIfNoCase User-Agent "AhrefsBot" jogai
SetEnvIfNoCase User-Agent "Linguee" jogai
SetEnvIfNoCase User-Agent "proximic" jogai
SetEnvIfNoCase User-Agent "BLEXBot" jogai
SetEnvIfNoCase User-Agent "GrapeshotCrawler" jogai
SetEnvIfNoCase User-Agent "DotBot" jogai
SetEnvIfNoCase User-Agent "CriteoBot" jogai
SetEnvIfNoCase User-Agent "Barkrowler" jogai
SetEnvIfNoCase User-Agent "MicroAdBot" jogai
SetEnvIfNoCase User-Agent "linkfluence" jogai
SetEnvIfNoCase User-Agent "Cincraw" jogai
SetEnvIfNoCase User-Agent "ICC-Crawler" jogai
SetEnvIfNoCase User-Agent "Quantcastbot" jogai
SetEnvIfNoCase User-Agent "contxbot" jogai
SetEnvIfNoCase User-Agent "bidswitchbot" jogai
SetEnvIfNoCase User-Agent "SeznamBot" jogai
SetEnvIfNoCase User-Agent "Linespider" jogai
SetEnvIfNoCase User-Agent "Mappy" jogai
SetEnvIfNoCase User-Agent "MJ12bot" jogai
SetEnvIfNoCase User-Agent "MegaIndex" jogai
SetEnvIfNoCase User-Agent "bidswitchbot" jogai
SetEnvIfNoCase User-Agent "SMTBot" jogai
SetEnvIfNoCase User-Agent "ltx71" jogai
SetEnvIfNoCase User-Agent "integralads" jogai
SetEnvIfNoCase User-Agent "jet-bot" jogai
SetEnvIfNoCase User-Agent "trendictionbot" jogai
SetEnvIfNoCase User-Agent "DataForSeoBot" jogai
deny from env=jogai
これを.htaccessに記載します。
レンサバならこちらです。
これで2023年1月時点はbotをほぼ除外できています。
3、参考:2018年のbotのアクセス状況
※現在はほぼアクセス除外しているのでデータ作れず…
日にち | 総数 | bot | bot率 |
11月23日 | 135091 | 5769 | 4.3% |
11月24日 | 178391 | 5386 | 3.0% |
11月25日 | 179972 | 8005 | 4.4% |
11月26日 | 177381 | 4806 | 2.7% |
11月27日 | 133293 | 5509 | 4.1% |
11月28日 | 132291 | 6651 | 5.0% |
11月29日 | 137769 | 7481 | 5.4% |
サーバー分散しているので、実際にはこの倍あります。
pv数とは比例せず、記事数で比例すると思われる。
次に上記をアクセスが多い順に並べました。
途中から詳細説明放棄。
bot名 | 件数 | 種類 | サイト名 |
googlebot | 10007 | 検索エンジン | |
SemrushBot | 9529 | SEOサービス | SEMrush |
bingbot | 8417 | 検索エンジン | bing |
Yandex | 2707 | 検索エンジン | Yandex |
AhrefsBot | 2025 | SEOサービス | ahrefs |
Linguee Bot | 1969 | 辞書・翻訳サービス | linguee |
proximic | 1344 | マーケティング系 | comscore |
BLEXBot | 1297 | SEOサービス | WebMeUp |
GrapeshotCrawler | 1296 | マーケティング系 | grapeshot |
Mappy | 1272 | マーケティング系 | core.inc |
MJ12bot | 714 | SEOサービス | MAJESTIC |
Superfeedr bot | 684 | RSSサービス | Superfeedr |
archive.org_bot | 588 | アーカイブサービス | archive.org |
Twitterbot | 310 | 独自サービス | - |
DuckDuckBot | 259 | 検索エンジン | DuckDuckGo |
MegaIndex | 169 | SEOサービス | MegaIndex |
bidswitchbot | 135 | マーケティング系 | BidSwitch |
SMTBot | 91 | マーケティング系 | SimilarTech |
ltx71 | 61 | 目的不明 | - |
applebot | 59 | 独自サービス | - |
istellabot | 55 | 検索エンジン | istella |
integralads | 41 | マーケティング系 | Integral Ad Science |
Mail.RU_Bot | 35 | 検索エンジン | Mail.RU |
SeznamBot | 34 | 検索エンジン | Seznam |
jet-bot | 33 | マーケティング系 | Jetlink |
trendictionbot | 32 | マーケティング系 | Talkwalker |
blogmuraBot | 30 | 独自サービス | ブログ村 |
NetSeer crawler | 24 | ||
DuckDuckGo-Favicons-Bot | 23 | ||
contxbot | 23 | ||
ia_archiver | 20 | ||
omgili | 15 | ||
searchbot | 14 | ||
Sogou web spider | 12 | ||
coccocbot | 10 | ||
Discordbot | 8 | ||
AdsBot-Google | 8 | ||
PubMatic Crawler Bot | 6 | ||
Qwantify | 6 | ||
FeedlyBot | 5 | ||
Slackbot | 5 | ||
Exabot | 5 | ||
Nimbostratus-Bot | 4 | ||
Uptimebot | 4 | ||
SEOkicks | 4 | ||
Slack-ImgProxy | 4 | ||
Yahoo! Slurp | 3 | ||
linkdexbot | 2 | ||
Pinterestbot | 2 | ||
CipaCrawler | 2 | ||
AdsTxtCrawler | 2 | ||
heritrix | 2 | ||
Steeler | 1 | ||
TweetmemeBot | 1 | ||
YisouSpider | 1 | ||
GetIntent Crawler | 1 | ||
Centro Ads.txt Crawler | 1 | ||
SurdotlyBot | 1 | ||
IABTechLab Ads.txt Crawler | 1 | ||
The Knowledge AI | 1 | ||
Quantcastbot | 1 | ||
総計 | 43415 |
「RSSサービス」や「ブログ村」は利用しているサイトだけ来ると思います。
各種SNSで貼られた場合もbotが来ます。ここは気にしなくていい。
この中に含まれないbotは、ユーザーエージェントを偽装しているはずです。
それはさすがに除外できない。
「Semrush」は2019年に日本でもサービス開始。
そのためにロボットが活発だったのですね。
<2021年7月追記>
botの種類もまた増えてきました。
某サイトの直近3日間のbotを調査しました。
bot名 | 数 |
bingbot | 15720 |
GrapeshotCrawler | 3111 |
Googlebot | 1947 |
proximic | 1668 |
AhrefsBot | 764 |
DotBot | 650 |
CriteoBot | 597 |
MJ12bot | 496 |
YandexBot | 260 |
Twitterbot | 240 |
Barkrowler | 226 |
BLEXBot | 181 |
MicroAdBot | 152 |
Applebot | 145 |
linkfluence | 84 |
Superfeedr bot | 55 |
Cincraw | 42 |
AmazonAdBot | 42 |
ICC-Crawler | 24 |
ltx71 | 23 |
Quantcastbot | 11 |
contxbot | 10 |
bidswitchbot | 6 |
SeznamBot | 4 |
Semrush | 2 |
Linespider | 2 |
<2023年1月、新規botだけ追加>
bot名 | 件数 | 種類 |
DataForSeoBot | 55 | マーケティング系 |
よくわからないbotは拒否するのが良いだろう。
なお、ユーザーエージェント偽装も増えており、
判別不可能なbotもかなり多い。当然ながら悪質。
だいたいはSEOサービス系だと思います。IPがほぼ同じ。
検索エンジンだけ許可して、あとは海外からのアクセス全部拒否しても良いだろう。
一番の対策はドメイン直下(ルートディレクトリ)に置かないことですね。
「https://doudonn.com/」は空にして「https://doudonn.com/top/」にワードプレスをインストール。
そしたらbot・スパムは減ります。
ハッキング系の不正アクセスも激減するのでセキュリティ的にも最高。
4、bot除外時の注意点
そのサービスにおいて、自分のサイトが消える。
被リンクを調べるのに便利なSEOサービスでは、
自分のサイトが無かったことになります。
自分だけではなく相手にも伝わらない。
マーケティング系も広告出稿に影響が出る可能性があります。
自分のサイトをアピールできなくなってしまう。
そのため、サーバーに余裕があるのであれば拒否しない選択肢もある。
自分はそれらデメリットはどうでもいいと思っているので拒否しています。
5、考察など
高性能なサーバーであれば除外してもしなくても良い。
さくらレンタルサーバーなど、低性能なサーバーでは必須だと思う。
pv数がまぁまぁあるサイトだとbot率は5%ほどですが、
全くないサイトだと90%はbotという可能性も十分ある。
さすがに馬鹿らしいので、そんな時は除外するのが良いだろう。
昔はbotと言えば検索エンジンだったのですが、
今はデータ収集を商売にしている企業が増え、増加の一方。
botの仕様も悪いので、時々とんでもないペースでアクセスしてきます。
定期的にbotを調査し、除外するようにしていきたい。
robots.txtでも拒否できますが、精度は低い。
ユーザーエージェントで拒否するのが一番だと思います。
そもそもrobots.txtですらアクセスしてほしくない。
なお、botはjsは無効なはずなので、アクセス解析にはほぼ反映されない。
調べるにはアクセスログの解析が必要です。
これがまたとんでもない行数。エクセルで処理しますが、corei7でもきつい。
こんな簡単な記事を作るのにも、数時間がかかりました。
この調査結果を信じて、除外することをおすすめします。