Hushfort

WordPress で偽の Googlebot を見分けてブロックするには?

執筆:Eureka Studio · 更新日

要点

WordPress サイトに来る本物の Googlebot は、Google が公開している IP 範囲からアクセスします。それ以外の場所からその名前を名乗るものは偽物なので、ブロックしてかまいません。その他の悪質なボットには、IP ごとに 1 分あたりのリクエスト予算を設け、検索や 404 のような負荷の高いリクエストほど多くを消費させます。予算を超えた IP には短時間の 429 を返し、チェックアウトは常に通します。

手順

  1. 1手順 1

    アクセスの中から偽物を見つける

    Googlebot はほとんどのサイトでブロックされないため、多くのボットが Googlebot を名乗ります。名前は自由に真似できますが、IP アドレスは真似できません。Google と Bing の公式リストを読み込んだうえで、Hushfort はそれ以外のアドレスから来た「Googlebot」を偽の検索ボットとして記録します。

    負荷保護の「最近のブロック」: 203.0.113.120 から Googlebot を名乗る偽の検索ボットと、予算を超えた 2 つの IP。いずれも監視モードで記録されている
  2. 2手順 2

    負荷保護を監視モードで有効にする

    Hushfort で「負荷保護」を開いて有効にします。モードは最初「記録のみ — 監視モード (開始時に推奨)」になっており、上限に達するはずだった IP を記録するだけで、誰もブロックしません。「偽の検索ボット」はオンのままにしておきます。

    監視モードで有効になった負荷保護。「偽の検索ボット」がオンになっている
  3. 3手順 3

    リクエストを公平に値付けする予算を設定する

    各 IP には「IP ごとの 1 分あたりの予算」(デフォルトは 120 ポイント) が割り当てられます。ページ表示は 1、検索は 5、XML-RPC 呼び出しは 10 ポイントで、404 は 4 ポイントが加算されます。チェックアウトと決済のコールバックは消費ゼロです。

    IP ごとの 1 分あたりの予算 120 ポイントとポイント一覧、ブロック時間 10 分、偽の検索ボットと 404 スキャンがオン
  4. 4手順 4

    予算を超えた IP は少しだけ待たされる

    「保護」モードでは、予算を使い切った IP に「ブロック時間」(デフォルトは 10 分) のあいだ 429「リクエストが多すぎます」ページが表示されます。確認済みの検索ボットは対象外で、チェックアウトも引き続き機能します。

    予算を超えた訪問者の検索に対する応答: 短時間にリクエストが多すぎます。数分後にもう一度お試しください。
  5. 5手順 5

    ログを確認してから「保護」に切り替える

    監視モードで数日間動かしたら、「最近のブロック」を確認します。実際の訪問者が含まれていなければ、モードを「保護 — 予算を超えた IP を 429 で止める」にして保存します。

    負荷保護のモードを「保護 — 予算を超えた IP を 429 で止める」に変更して保存したところ

なぜ重要なのか

アクセスが重い日が、いつも人気の証とは限りません。人間とは比べものにならない勢いでサイトを巡回するボットがいます。検索ボックスにでたらめな単語を次々と打ち込んだり、存在しないファイルを何百も探ったり、誰もブロックしないように Googlebot を装ったり。こうしたリクエストはどれもページキャッシュを素通りし、WordPress とデータベースに実際の処理をさせます。

共用サーバーなら、ページの表示が遅くなり、CPU 制限に引っかかり、ときにはアカウントが停止されることもあります。ストアなら、ボットが検索を繰り返しているあいだ、本物のお客様が待たされることになります。

ポイントは、負荷の高いリクエストと軽いリクエストを区別することです。「1 分あたりのリクエスト数」で数えると、キャッシュされたページの表示とキャッシュされない検索が同じ扱いになります。負荷に応じて値付けすれば、本物の訪問者には寛大に、ボットにしか生まれないパターンには厳しく対応できます。

よくある間違い

  • ユーザーエージェントでブロックする。 誰でも Googlebot を名乗れるうえ、名前でブロックすると本物までブロックしてしまいます。IP で確認しましょう。
  • すべてに同じ上限を使う。 一律の「1 分あたりのリクエスト数」ルールでは、検索の大量アクセスを見逃すか、素早く閲覧しているお客様を引っかけるかのどちらかです。リクエストは負荷で値付けしましょう。
  • チェックアウトをブロックする。 決済のコールバックやチェックアウトを止めかねない回数制限は、実際の売上を失わせます。これらは常に対象外にしておきましょう。
  • 長時間のブロック。 共有 IP を 1 日ブロックすると、オフィス全体やモバイル回線全体を締め出すことがあります。ボットのリズムを崩すには、短い休止で十分です。
  • ネットワーク規模の大量アクセスをプラグインで止めようとする。 サーバーの回線を埋め尽くすほどのトラフィックは、WordPress まで届きません。それは CDN の仕事です。

プラグインを使わない方法

Googlebot を手動で確認する。 アクセスログにある不審な IP について:

host 66.249.66.1
# 1.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-1.googlebot.com.
host crawl-66-249-66-1.googlebot.com
# crawl-66-249-66-1.googlebot.com has address 66.249.66.1

正引き・逆引きの両方が一致し、googlebot.com または google.com で終わる必要があります。Google はクローラーの IP 範囲を JSON ファイルとしても公開しているので、それと照合することもできます。

サーバーで回数を制限する。 Nginx なら IP ごとのリクエスト数に上限を設けられます:

# in the http block
limit_req_zone $binary_remote_addr zone=perip:10m rate=60r/m;

# in the server block
location / {
    limit_req zone=perip burst=20 nodelay;
    limit_req_status 429;
    try_files $uri $uri/ /index.php?$args;
}

サーバーのルールは高速ですが、WordPress のことを知りません。チェックアウトと検索を区別できず、多くのホスティングプランでは与えられない root 権限が必要で、Google の IP リストを手作業で維持するのも手間です。ルールを書ける CDN のファイアウォールがあるなら、それも良い選択肢です。

うまくいかないときは

  • 本物の訪問者に 429 が表示された。 ログでその IP を調べます。オフィスや自分が使っているツールなら、許可リストに追加しましょう。1 分あたりの予算を引き上げることも検討してください。
  • Search Console でクロールエラーが報告される。 本物の Google クローラーは対象外なので、そのエラーが Hushfort 以外のサーバーや CDN のルールによるものでないか確認してください。
  • それでもサイトが圧倒されている。 どのプラグインにも手に負えない規模の大量アクセスかもしれません。CDN の攻撃対策モードをオンにしてください。Hushfort の緊急モードなら、あなた自身の API キーを使って Cloudflare の「Under Attack」モードに切り替え、終わったら元に戻すこともできます。

Hushfort なら

負荷保護は、無料の WordPress セキュリティプラグイン Hushfort Security に追加する有料アドオン Hushfort Pro の機能です。

Hushfort の負荷保護レイヤーは、各 IP にデフォルトで 1 分あたり 120 ポイントの予算を割り当てます。ページ表示は 1、admin-ajax の GET は 1・POST は 2、REST の GET は 2・POST は 3、カートに追加は 3、検索は 5、その他の POST は 5、XML-RPC は 10 ポイントで、404 は 4 ポイントが加算されます。チェックアウト、決済のコールバック、WP-Cron、wp-admin の画面は消費ゼロです。

  • 予算を超えた IP には短時間の 429 を返し、10 分間休止させます。
  • 公式リストにない IP からその名前を名乗る偽の Googlebot や Bingbot はブロックします。確認済みの検索ボットは対象外です。外部への通信は、Google と Bing が公開しているクローラーの IP リストの取得だけです。
  • 緊急モードでは、あなた自身の API キーで Cloudflare の「Under Attack」モードに切り替えられます。
  • 最初は監視モードで動作します。

私たち自身のテストでは、予算を超えた IP でもチェックアウトは完了し、それ以外のリクエストには 429 が返されました。

よくある質問

Googlebot のアクセスが本物かどうかはどうすればわかりますか?

IP を確認します。Google はクローラーが使う IP 範囲を公開しており、本物の Googlebot の IP を逆引きすると googlebot.com または google.com で終わります。それ以外の IP から来た Googlebot のユーザーエージェントは偽物です。

偽の Googlebot をブロックすると SEO に悪影響がありますか?

IP で確認している限り、ありません。本物の Google と Bing のクローラーは認識されて対象外になるため、締め出されるのは偽物だけです。

ステータス 429 とは何ですか?

Too Many Requests (リクエストが多すぎる) という意味で、クライアントにペースを落とすよう伝えるものです。Hushfort の 429 は短時間で解除されるので、たまたま操作が多かっただけの人も、少し待てば続けられます。

プラグインで DDoS 攻撃を止められますか?

ネットワーク層の攻撃は止められません。そうしたトラフィックは、WordPress が動く前にサーバーを圧倒してしまいます。そこでの本当の盾は Cloudflare のような CDN です。プラグインが対処するのは、WordPress まで届く大量アクセスです。

なぜ検索と 404 は多くのポイントを消費するのですか?

検索はデータベースへの問い合わせを実行し、404 はたいていスキャナーがファイルを探しているものです。どちらも、キャッシュされたページの表示よりはるかに大きな負荷をサーバーにかけます。

不具合の報告・機能のリクエスト

メッセージは Hushfort の開発チームに直接届きます。

内容の種類

返信にのみ使用します。

これらの情報は返信のためだけに使用します。 プライバシー