迷惑ボットMJ12bot/v1.4.5によるクロールをrobot.txtで停止する方法


投稿日:2015年7月21日
  • 32
  • 0



急に増えたサーバ負荷と、異常に発生している404エラー

mj12bot

このサイトではflentdGrowthForecastを利用してサーバのログを可視化をしています。

今日は少し重いかな」と思ってグラフを見てみると、数日前から3xxと4xx系のエラーが急増していました。


mj12bot01

可視化の方法が知りたいという方は「サーバリソースをリアルタイムに監視するdstatのインストールと使い方」をご覧ください。

明らかにエラーが多すぎるのでサーバのログを見てみるとMJ12botというボットによる以下のようなログが大量に書き出されていました。

time:21/Jul/2015:08:10:44 +0900	host:198.27.66.194	request:GET /qa/tag/ada?login=google HTTP/1.0	status:302	size:20	referer:-	ua:Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)	reqtime:0.046	upsttime:0.045
time:21/Jul/2015:08:10:50 +0900	host:198.27.66.194	request:GET /qa/?hauth.start=Google&hauth.time=1437433844 HTTP/1.0	status:404	size:57	referer:-	ua:Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)	reqtime:0.024	upsttime:0.023
time:21/Jul/2015:08:10:59 +0900	host:198.27.66.194	request:GET /qa/tag/ada?login=twitter HTTP/1.0	status:302	size:20	referer:-	ua:Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)	reqtime:0.024	upsttime:0.022
time:21/Jul/2015:08:11:05 +0900	host:198.27.66.194	request:GET /qa/?hauth.start=Twitter&hauth.time=1437433859 HTTP/1.0	status:404	size:57	referer:-	ua:Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)	reqtime:0.046	upsttime:0.044
time:21/Jul/2015:08:11:08 +0900	host:198.27.66.194	request:GET /qa/tag/co2?login=facebook HTTP/1.0	status:302	size:20	referer:-	ua:Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)	reqtime:0.037	upsttime:0.035
time:21/Jul/2015:08:11:15 +0900	host:198.27.66.194	request:GET /qa/?hauth.start=Facebook&hauth.time=1437433868 HTTP/1.0	status:404	size:57	referer:-	ua:Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)	reqtime:0.015	upsttime:0.013

404で存在しないページをクロールするのが既に謎ですが、さらに302エラーも発生しています。
どうやらTwitterやFacebookでOAuthを試みているようです。302エラーで分かる通り、そもそもこのWebサイトではそのようなパラメータは利用していません。明らかに誤ったプログラムによって機械的にアクセスしています。


MJ12botは何のためのBot?

ここで素朴な疑問が湧きます。「MJ12botって何?

クローラーのユーザーエージェントに書きだされたアドレスにアクセスすると以下のページヘリダイレクトされます。

Site Explorer Results – Summary – Majestic

まとめると、イギリス発症のMajestic-12というプロジェクト。
機械的にサイトに関する情報を蓄積しており、その情報はSite Explorerで使われる。

Site Explorerとはサイトのバックリンクやアンカーテキストなど、サイトのプロファイルを調べることができるサイト。
サイト管理者なら無料で使えるが、競合のサイト等を調べるのは有料となる。
つまり、主に英国で展開している有料のSEOツールためのボットということだ。

Google Analyticsウェブマスターツールがあれば、自分のサイトの情報はいくらでも見ることができるので、噛み砕いて言うと「MJ12botは有害でしか無い」と言える。


MJ12botのアクセスを規制する

せっかくなので日本のサイト運営者にとって迷惑でしか無いbotも紹介します。

MJ12bot

幸い、上記の解説サイトでrobot.txtを解釈することができるとあるので、遠慮なくアクセス規制します。

User-agent: MJ12bot
Disallow: /

Ahrefs

同じようなサービスであるAhrefsのbotも結構な頻度でアクセスがあるので、利用する予定がないなら拒否します。

User-agent: AhrefsBot
Disallow: /

WebMeUp

同じくSEOツールを提供するWebMeUpも拒否します。

User-agent: BLEXBot
Disallow: /

Yandex

ロシアの検索エンジンYandexも日本では無意味なので拒否します。

User-agent: Yandex
Disallow: /

baidu

他にも日本での検索サービス事業が終了してほどんど価値の無くなったbaiduも行儀の悪いbotとして有名なのでブロックをお勧めします。

User-agent: baiduspider
Disallow: /

SemrushBot

ログを見てみると、それほど多く無いながらも403を断続的に出していた。

User-agent: SemrushBot
Disallow: /

一定の数は許可する場合

少しのアクセスなら許可するという場合は「Crawl-delay」でディレイの時間を指定します。
単位は秒なので以下の設定だと「10分に一度だけ許可」となります。

User-Agent: MJ12bot
Crawl-delay: 600

ちなみにGoogle botやMSN botは専用の管理画面でクロールの頻度をコントロールできます。どちらで設定しても有効になりますが、robot.txtで制御する場合は以下のようになります。

User-Agent: bingbot
Crawl-delay: 600

User-Agent: Googlebot
Crawl-delay: 600

正しく動作するか不安な方は以前投稿した「Googlebotを手懐ける!robots.txtの書き方とrobots.txtテスターの使い方」の方法を使えばテストできるので試してみてください。


追記

以上の対策をして数日経過しましたが、かなりサーバへの異常なアクセスが制御できました。
まだ、多少は変なアクセスがありますが、botによる無視して良い程度のエラーです。

mj12bot02

とりあえず以上の設定を追加しておけばリソースに影響をあたえるようなbotは制御することができます。

しかし、サイト全体を3秒に1回アクセスするという行為が迷惑になることくらい理解できそうなものですが、何を考えて設計しているのでしょうか?
まさしく「雉も鳴かずば撃たれまい…」といった心境になります。


現在のページを共有する



現在のページに関連する記事

迷惑ボットMJ12bot/v1.4.5によるクロールをrobot.txtで停止する方法 Googlebotを手懐ける!robots.txtの書き方とrobots.txtテスターの使い方
迷惑ボットMJ12bot/v1.4.5によるクロールをrobot.txtで停止する方法 ビックデータ時代のログ収集管理ツールFluentdのインストールと使い方
迷惑ボットMJ12bot/v1.4.5によるクロールをrobot.txtで停止する方法 td-agent2へアップデートする方法と、Dstat pluginが動作しない場合の対処法
迷惑ボットMJ12bot/v1.4.5によるクロールをrobot.txtで停止する方法 ログ解析やユーザーの振り分けに活躍する、ユーザーエージェントまとめ
迷惑ボットMJ12bot/v1.4.5によるクロールをrobot.txtで停止する方法 curl_setoptでSSL connect errorが出て接続に失敗する場合の対処法
迷惑ボットMJ12bot/v1.4.5によるクロールをrobot.txtで停止する方法 fluentdとNorikraでDoS攻撃を遮断し、メールで通知する方法
迷惑ボットMJ12bot/v1.4.5によるクロールをrobot.txtで停止する方法 fluentdのFilter Pluginsを使ってイベントを自在に操る方法

おすすめの記事

標準のアンインストーラーで消えないソフトを徹底的に削除する方法

標準のアンインストーラーで消えないソフトを徹底的に削除する…

エンティティとデコード用プラグイン「Entity Decode Button」を作成しました

エンティティとデコード用プラグイン「Entity Decode Button」…

日々の単純作業を自動化できるUWSCの使い方(入門・書式編)

日々の単純作業を自動化できるUWSCの使い方(入門・書式編)

Apacheのmod_expiresでファイルタイプごとにキャッシュをコントロールする方法

Apacheのmod_expiresでファイルタイプごとにキャッシュをコント…

作業効率を飛躍的に向上させる!実務で使うIllustratorのショートカット一覧

作業効率を飛躍的に向上させる!実務で使うIllustratorのショー…

rsyslogを利用したログファイル作成と、logrotateを利用したログのローテーション

rsyslogを利用したログファイル作成と、logrotateを利用したロ…

サーバの処理を自動実行するcronの仕組みと応用法

サーバの処理を自動実行するcronの仕組みと応用法

Apacheのmod_deflateでコンテンツを圧縮してサイトを高速化する方法

Apacheのmod_deflateでコンテンツを圧縮してサイトを高速化する…


いただいたコメントなど

  1. MJ12botとNutchは要注意 のコメント:

    私のサイトはMJ12botとNutchにありもしない外部リンクをデータをGoogleコンソールにつけられました。
    Nutchも止めた方が良いですよ。

コメントを残す

コメントは認証制のため、すぐには反映されません。

プログラミングに関する質問は「日本語でプログラミングの悩みを解決するQ&Aサイト sukegra」をご利用ください。