中国産コメントスパムをコピペだけでほぼシャットアウトできる対策方法(IE6からの書き込みを除外する)

Stop-sign-in-traffic

先日、ちょっとした思いつきで中国から来るスパムの対策をしてみました。

その対策というのは、ブログに「天安門事件」と書いて中国からのスパム避けとする試みで書きました。LINEの乗っ取り犯に「天安門事件」というキーワードが有効だったため、ブログにもその手法を持ち込めないかと思ったところからやってみました。しかし、その結果は全く意味がなかったです。

しかし、約2ヶ月ほどスパムをウォッチしていたところ、良い対策方法が思いつきました。それで昨日から実施してみたところ、その瞬間から効果覿面だったので、その方法を紹介します。

かなり前に書いたものなので、現在はあまり意味を成さない可能性もあります。

photo by alegri

スポンサーリンク
レクタングル(大)広告

中国からのスパムの特徴

8月に、Akismetプラグインがブロックしたこのブログのスパム数は1万を超えました。その内訳のほとんどが、中国からでした。

ブログの記事やソースに「天安門事件」と書いてスパム避けとする試みの結果

僕は、素人考えのものとはいえ、一応スパム対策の記事を書いたというのもあって、効果を確かめるために、WassUp Real Time Analyticsプラグインなどで、その後のスパム状況を2ヶ月弱見てきました。

WassUpで中国からのスパムログを見るとこんな感じで表示されます。

中国からのスパム

これを見れば、2ヶ月も見なくてもすぐわかるとは思うんですが、中国からくるコメントスパムのほとんどのユーザーエージェント(ブラウザ)が「Internet Explorer6」なんですよね。

中国からのコメントスパムの特徴

このサイトに来るコメントスパムのほとんどがこのタイプです。

でこれは、もうIE6をサーバーで弾いてしまえばいいんじゃないかと。

それで昨日、前回の対策の結果記事を書いて結果も出たので、次はIE6を弾く方法を試してみたところ、覿面に効果が現れました。

中国からのコメントスパム対策

昨日から僕が行っている、コメントスパム対策方法は以下の2点です。

  1. .htaccessの設定でIE6ブラウザを使っている訪問者を弾く
  2. せっかくなのでバイドゥ(百度)クローラーも弾く

IE6ブラウザを使っている訪問者を弾く

これは、僕のサイトに来るコメントスパムのほとんど「中国のホスト+IE6ブラウザ使用」なので、IE6を使っている訪問者を.htaccessの設定で全て弾くようにしました。(IE6を弾いただけなので中国からのアクセスは弾いていません)

こうすることで、スパムでないIE6ユーザーの訪問も弾いてしまうデメリットもあります。しかし、当サイトのGoogle Analyticsで「IE6ユーザーの割合」を計算してみたところ

IE6を使用しているセッション数÷全体のセッション数

IE6を使っているセッションは、全体の約0.09%しかいませんでした。これは、10000人訪問者がいたら大体、9人ぐらいになります。このくらいの数字は、スパムが行う迷惑行為(1万件以上のスパム書き込み)に比べたら、見逃して良い数字ではないかと思います。

それに、このご時世にセキュリティーの弱いIE6でネット上を歩き回るなんて、「若い女性が肌を露出して夜のスラム街を歩くようなもの」ではないかと思います。そういうユーザーには、逆にどのサイトでも見れなくなった方が、ブラウザをバージョンアップすることになり、逆にその人のためではないかと思います。

ついでにバイドゥも弾く

バイドゥとスパムに直接的な関係はないとは思います。思いたい。

ただ、最近よく見かける謎のサービス「HAO123」てなんだ?でも書いたんですけど、バイドゥって良い印象が全くないんですよね。ジブリ風にいえば「何か良くないモノを運んでくる」感じ。

そりゃもちろん、Googleだって良くないモノを少しは運んでくると思います。しかしGoogleの場合は、次のような印象。

  • 検索から良質の訪問者を大量に運んでくれる
  • 常に利用者(検索ユーザー)優先のサービスを心がけている
  • 多少の良くないことをする人も来るかもしれない

反面、バイドゥの場合はこんな印象。

  • 今まで検索流入から普通の訪問者が来たためしがない(来たとしても極少数)
  • バイドゥさえよければ何をしてもよいという姿勢が見える(むやみやたらなクロール、robots.txtの無視、など他多数)
  • 大陸からスパムやクラッカーなどの災いを運んで来そうな印象(※これは完全に印象です)

今はわかりませんが、昔のバイドゥはとにかくクローラーの挙動が酷かったです。昔、安いサーバーを使って作ったWEBサービスにもクロールしまくることがあったので、管理者ページで「負荷がたけーよ!」と怒られる始末。

それで、試しにバイドゥを弾いたら最高値1万7000もあったリクエスト数(PVではない)が4500弱まで70%以上も下がるということもありました。

百度を結果弾いた結果

最近では、バイドゥ製日本語入力ソフトの不正送信問題Androidファイラーの不正送信疑惑HAO123手軽にアンインストールできない問題などもありました。これだけのことがあれば、良い印象を持ちたくても持てるものではありません。

ということで、バイドゥの検索エンジンに登録されても、ろくなことはなさそうなので、バイドゥからのクロールも弾くことにします。

コピペでできる中国からのスパム対策

で、その対策方法なんですが、以下のコードを、サーバーのpublic_htmlなどにある.htaccessファイルを開いてコピペで追記するだけです。

.htaccessの設定に失敗すると、サイトが全く表示されなくなる恐れもあります。編集前に必ずバックアップを取って、何か不具合があった場合は元に戻してください。.htaccessに元から何か書き込んである場合は、消さずに必ず追記してください。

#########
#スパム対策
#########
order deny,allow

#Internet Explorer1~6のアクセスを拒否
SetEnvIf User-Agent "MSIE [123456]\.[0-9]" spam
deny from env=spam

#baiduのアクセスを拒否
deny from baidu.jp
deny from baidu.com
deny from 119.63.192.0/21

簡単に説明すると、以下の部分はdeny(拒否)リスト以外のアクセスを許可する設定です。拒否したものだけサーバーで弾きます。

order deny,allow

Deny,Allow

ディレクティブがAllowディレクティブの前に評価されます。 アクセスはデフォルトで許可されます。Denyディレクティブに合わないか、Allowディレクティブに合うクライアントはアクセスを許可されます。

od_authz_host – Apache HTTP サーバ バージョン 2.2

あとはコメントの通り、Internet Explorerのバージョン1~6を弾く設定と、バイドゥのクローラーを弾く設定をしています。(バイドゥクローラーを弾く設定は完全ではないかもしれない)

IE6からのアクセスを弾く設定は以下の記事を参考にしました。

IE6からのアクセスをそろそろ拒否するかもしれない – ヲレサイト

設定の確認

.htaccessの設定を誤ると、サイトが全く表示されなくなる恐れもありますので、各自のサイトが、ちゃんと表示されるか確認してください。

あとGoogle Analyticsのリアルタイム解析などを見たりして、訪問者がだいたい普段通りの人数来ているか確認してください。

Googleリアルタイム解析

普段は、何人も訪れている時間なのに、アクティブユーザーが0になっていたりすると設定を誤っている可能性もあります。

あと、Internet Explorerでの表示を確認できるサービスIE NetRendererを使用して確認してみると、IE11ではちゃんと表示されます。

IE11でアクセスすると表示される

しかし、IE6などでチェックしてみると「403 Forbidden」となって、ちゃんとアクセス制限出来ていることがわかります。

IE6でアクセスすると表示されない

対策の結果

これらのスパム対策を行った結果、このようになりました。

上記の設定は、昨日の14時台に行ったのですが、それ以来ほとんど来なくなりました。(WassUpプラグインで計測したスパムカウントの推移です。左が訪問者数。右がPV。)

対策後のスパムの推移

ちなみにこれは、全体のアクセスです。通常のアクセスには、このグラフを見る限り問題がないことがわかります。(WassUpプラグインでのアクセス数の推移。クローラーもスパムも含めた数値が表示されます。)

対策後のアクセス数の推移

一応、Google Analyticsで14時以降のアクセス推移を見ても問題なさそうです。(ほとんどのクローラーとスパムを除いたアクセスの推移)

ちなみに、この記事を書いている時点でのスパム数の推移はこんな感じです。

深夜時間のスパムの推移状況

23:00~6:00まで「IE6以外を使用している国籍不明のスパム」はきたものの、以前と比べてかなり下がりました。

対策から24時間経過した時点の結果では、それまでのスパム訪問者数が、1日平均500強だったのに対し、施行後24時間は124と、約75%強減りました。

まとめ

夜の23時~朝の6時ぐらいまで多少のスパムは入ってきたものの、75%ものスパムを排除できたのであれば、この方法はある程度成功したといっていいのではないかと思います。

ただし、このような対策をすることで、今後どのような変化が訪れるかはわかりません。今月1ヶ月は、これらの推移を見守り、1ヶ月後どうだったかを、また報告出来ればと思います。

スポンサーリンク
レクタングル(大)広告
レクタングル(大)広告

スポンサーリンク

『中国産コメントスパムをコピペだけでほぼシャットアウトできる対策方法(IE6からの書き込みを除外する)』へのコメント

  1. 名前:ヨシ 投稿日:2015/08/07(金) 21:04:29 ID:690f94c2d

    参考になりましたが、
    記事内の記述ミスだと思います。
    order deny,allow

    order allow,deny

  2. アバター画像 名前:わいひら 投稿日:2015/08/07(金) 22:49:09 ID:55b59b1bf

    すいません。
    Apacheの設定に、そこまで詳しくないので質問なんですが、
    order allow,deny
    だと、全てのホストからのアクセスを拒否してしまいませんか?
    アクセス制限の記述(Order, Allow, Deny) – アクセス制限 – Apache入門
    Apacheのアクセス制御をちゃんと理解する。 – こせきの技術日記

    Order allow,deny
    だと、
    Allow from all
    を付け加えないとダメだと思っているのですが、僕の理解が違っていたでしょうか。
    間違っていたら即座に修正します。

  3. アバター画像 名前:わいひら 投稿日:2015/08/07(金) 22:50:03 ID:55b59b1bf

    あでも読んでいたら、引用部分の以下の記述が間違っていたので修正しておきました。
    Deny,AllowDeny

    Deny,Allow