doudonn WEB制作やサーバーの話とかいろいろ

2023年1月更新!迷惑なbotをアクセス拒否・除外する設定方法まとめ(Nginx・Apache・.htaccess)

  doudonn 更新日:
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 検索エンジン Google
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でもきつい。

こんな簡単な記事を作るのにも、数時間がかかりました。
この調査結果を信じて、除外することをおすすめします。

Nginxの関連記事
サーバーの関連記事

記事一覧はこちら:サーバー

管理人について
doudonn
名前:doudonn(どうどん)
ひたすらWEB制作な人。
一応社長です。音ゲー好き

プロフィール
お知らせ

2022年11月30日に全記事削除しました。
無駄にページ表示速度にこだわってます。

役立ちサイト
wiki

プライバシーポリシー・広告について


© 2022-2024 doudonn All Rights Reserved.