最近、Googleサーチコンソールのインデックス未登録件数が異常に増えていることに気付き、詳しく調べてみたところ、50万件以上もの内部検索スパムがnoindexタグによって除外されていました。
実際にはGoogle検索にインデックス登録されていないため、検索結果への影響は抑えられているものの、あまりにも件数が多くて目障りなので、robots.txtを使用してクローラーの巡回をブロックしてしまいます!
増え続ける内部検索スパム SEO To66.Asia
久しぶりにGoogleサーチコンソールを眺めていると、ページのインデックス登録で未登録件数が異常に増え続けていることに気付きました。
ほとんどの場合はnoindexタグによってインデックス登録自体を防げているものの、一部は「クロール済み – インデックス未登録」となっております。
これは内部検索スパムと呼ばれるもので、ウェブサイトの内部検索フォームに様々な文字列を入力して検索結果ページのURLを生成し、検索エンジンのクローラーに巡回させようとするスパム行為らしいのです。
ほとんどの場合は、metaタグのcontent=”noindex”によってGoogle検索へのインデックス登録を防ぐことができますが、noindexを設定していないウェブサイトでは、スパムの文字列を含む内容の乏しいページがGoogle検索にインデックス登録されてしまう可能性があります。
URLに決まったパターンがあれば、特定のURLにcanonicalタグを設定したり、404エラーを返したりする方法も考えられるのですが、今回の内部検索スパムはドメイン直後の文字列に決まったパターンがなく、ランダムな文字列を挿入した後にギャンブル関連の文字列が続くというものです。
黒幕は中国系のSEO業者ではないかとも言われているようですが、実際の発信元は確認できておらず、生成されたURLにアクセスしてもギャンブル関連の文字列に対応するような内容のページは存在していません。
そのため、内部検索スパムを繰り返す意図も全く分からず、ほとんど嫌がらせに近いのではないかとも言われているようです。
ほとんどの場合はURLの文字列の中に「To66.Asia」が含まれているのが特徴ですが、その前後にはランダムな文字列が入っているため、決まったディレクトリやURLを指定するだけでは対応できません。
そこで、WordPressの内部検索スパム対策として、ランダムな文字列が含まれるURLへのクローラーの巡回を、どのようにすれば止められるのか悩みに悩んで考えてみました。
WordPressは仮想robots.txtを編集する仕組みが必要
当サイトではWordPressテーマにTCDのGENSENを使用しているのですが、テーマ自体にはnoindexやnofollowを細かく設定する機能がないため、プラグインのWP Custom Noindex Nofollowをインストールして対応しております。
しかし、このプラグインによる内部検索結果ページの制御はnoindexによるインデックス登録の防止が中心となるため、クローラーの巡回そのものを停止させることはできません。
つまり、このままでは50万件を超える内部検索スパムのURLに対して、クローラーが巡回を繰り返してしまう可能性があるのです。
これを止めてしまおうということで、robots.txtを使用して特定の文字列が含まれるURLへのクロールを禁止すれば良いのではないかと考えました。
robots.txtは通常、ウェブサイトのルートディレクトリに配置されるファイルですが、WordPressには仮想robots.txtを自動生成する仕組みがあるため、サーバー内に実際のrobots.txtファイルが存在していない場合があります。
つまり、WordPressが自動生成している仮想robots.txtの内容を編集できるようにする必要があるのです。
WP Robots Txtをインストールしてクローラーの巡回を停止させる
WordPress用プラグインのWP Robots Txt By George Pattihisをインストールして有効化します。
有効化すると、WordPress管理画面の「設定」から「表示設定」を開いた際に「Robots.txt Content」という項目が追加されるため、これでWordPressの仮想robots.txtを簡単に編集できるようになります。
robots.txtに「Disallow: *キーワード*」と書き込むことで、指定したキーワードがURLの途中に含まれている場合でも、対応するクローラーによる巡回を禁止することができます。
今回の内部検索スパムは「To66.Asia」の前後にランダムな文字列が入るため、ワイルドカードの「*」でキーワードを挟むことによって、URL内のどの位置に文字列が含まれていても一致するようにしています。
「Disallow: *to66.asia*」でも該当するURLへのクローラーの巡回をブロックできると思いますが、robots.txtではURLの大文字と小文字が区別されるため、念のため「Disallow: *To66.Asia*」も入力し、両方の表記を仮想robots.txtに書き込みました。
これで、ドメイン直後やURLの途中にどのようなランダム文字列が入っていても、「To66.Asia」または「to66.asia」が含まれるURLへのクロールをまとめて制御できるはずです。
robots.txtのDisallowを使ったその他の設定例
今回のような内部検索スパム対策以外にも、robots.txtのDisallowは様々な用途で使用することができます。
例えば、特定のディレクトリやURLパラメータ、ファイル形式などを指定することで、検索エンジンのクローラーに巡回させたくないURLを細かく制御できるため、不要なクロールを抑える方法として便利です。
以下は、robots.txtの「User-agent: *」などで対象クローラーを指定した場合に使用できる、Disallowの代表的な設定例です。
特定のディレクトリ全体をクロールさせない場合
Disallow: /sample/
このように指定すると、ドメイン直下にある「sample」ディレクトリと、その下に存在するすべてのURLがクロール禁止の対象になります。
例えば「/sample/page1.html」や「/sample/category/page2.html」なども対象になるため、特定のディレクトリ全体をまとめて制御したい場合に便利です。
WordPressの内部検索結果ページをクロールさせない場合
Disallow: /*?s= Disallow: /search/
WordPressの内部検索では、一般的に「/?s=キーワード」というURLが生成されますが、パーマリンクの設定によっては「/search/キーワード/」という形式になる場合もあります。
そのため、内部検索結果ページをクロールさせたくない場合は、サイトで実際に使用されている検索URLの形式に合わせてDisallowを指定することで、検索結果ページへのクロールを抑制できます。
ただし、これらの指定はURLの形式によって適用範囲が異なるため、実際の検索結果ページのURLを確認してから設定する必要があります。
特定のURLパラメータを含むページをクロールさせない場合
Disallow: /*?sort= Disallow: /*&sort=
商品一覧などの並び替え機能で使用される「sort」というURLパラメータを指定した例です。
例えば「/shop/?sort=price」や「/shop/?page=2&sort=price」など、並び替え条件によって生成されるURLをクロール禁止の対象にできます。
このように、同じ内容を並び替えただけのページが大量に生成されるウェブサイトでは、特定のURLパラメータを指定することで、不要なクロールを抑えられる場合があります。
特定のファイル形式をクロールさせない場合
Disallow: /*.pdf$
こちらは、URLの末尾が「.pdf」で終わるPDFファイルへのクロールを禁止する設定例です。
「*」は任意の文字列に一致するワイルドカードですが、末尾に付けた「$」はURLの終わりを意味するため、「/document.pdf」などは対象になる一方、「/document.pdf?download=1」のように後ろにURLパラメータが付く場合は対象になりません。
同じ仕組みを利用すれば、PDF以外にも特定の拡張子を持つファイルを指定できますが、検索結果に表示させたい資料や画像などまでクロール禁止にしないよう注意が必要です。
なお、Disallowはあくまでも対応するクローラーに巡回を禁止するための指定であり、対象URLへのアクセスそのものを遮断するわけではありません。また、クロールを禁止してもURL自体がGoogle検索に認識されることはあるため、インデックス登録の制御とは区別して使用する必要があります。
ちなみに、設定画面にXMLサイトマップのURLが記載されていないのは、XMLサイトマップ作成プラグインのGoogle XML Sitemaps Generator Proが自動で出力しているためで、実際に公開されているrobots.txtにはXMLサイトマップのURLが含まれております。
実際に読み込ませたいXMLサイトマップのURLがrobots.txtに正しく記載されているか確認するうえでも、WP Robots Txtは便利なのです。
これでしばらく様子を見続けておりましたが、「クロール済み – インデックス未登録」と「noindexタグによって除外されました」の項目には、To66.Asiaが含まれる新たなURLが表示されなくなりました。
しかし、今度はインデックス未登録の項目に「robots.txt によりブロックされました」が追加されてしまったため、未登録件数が増え続けるという問題自体は、根本的な解決には至っておりません。
これは、robots.txtによってクローラーの巡回を禁止しても、GoogleがURLの存在を認識している限り、インデックス未登録の項目に表示される場合があるためです。
サーチコンソールに表示される項目が変わらない限り、今後も未登録件数は増え続けるのだと思いますが、少なくともGooglebotによる対象URLへのクロールは抑制できていると思うので、しばらくこのまま様子を見ていこうと思います。
それにしても、この内部検索スパムは一体何をしたいんでしょうね。
おそらく、他人のドメインを悪用してGoogleの検索結果を汚染し、ギャンブルサイトの宣伝につなげることが目的なのでしょうが、当サイトでは該当する記事も存在せず、ギャンブルサイトへのリンクも表示されないうえに、noindexによってインデックス登録まで防がれています。
これでは検索結果に宣伝を表示させることもできず、スパム業者が直接利益を得られる可能性は限りなく低いと思うのですが、それでも懲りずに何十万件ものURLを生成し続けているのですから、なかなかご苦労なことです。
何か深い意図があってやっているのか、それとも効果があるかどうかも確認せず、ただ単に頭が悪いだけなのか・・。これだけ無駄なことを熱心に続けられるのも、ある意味では才能なのかもしれませんね。
このようなギャンブル関連の文字列を好みそうな人同士で勝手にやってくれれば良いのですが、全く関係のないウェブサイトまで巻き込んで、Googleサーチコンソールに何十万件もの不要なURLを表示させるのは非常に迷惑です。











この記事へのコメントはありません。