プラグインでお勉強
プラグインでお勉強
- Author : pushman|Nucleus|2006-05-30 Tue 02:07
-
先日、阿佐田哲也さんの素晴らしい短編小説「人間競馬」の感想を投稿したのですが、どうも特定の方々が大変気に入ってくれたようで、珍しくトラックバックを頂いて嬉しいです。本当にありがとうございます。
という風に無垢なブロガーのように振る舞いたくなるぐらい「ギャンブルは儲かる」「失敗しない投資術」ってな類いのサイトからトラックバックスパムを喰らって悲しいです。
トラックバックスパムに関しては、cles さんが作成してくれている「NP_TrackBack」の標準機能*1で公開を保留にしているし、数も少ないのでいいんですが、問題はコメントスパム。対策として一番まっとうなのは、cles さんが配付してくれている完成度の高い「NP_Blacklist」だと思います。これに藤咲さんが「spamが来てるんですが」で紹介されている工夫を施すことで、ほとんど完璧に撃退できるようです。ここ数日コメントスパムの挙動を調べていたのですが(っていっても時間を見ていただけですが)、実際藤咲さんの書いているとおりなんですよね。
で、稚拙ながら配付している NP_NoRobotComment ですが、当初よりの目標であった「導入、管理が楽」「コメントする側の負担 0」が実現できそうな案をはっと閃いていろいろテストしておりました。スパムロボットというかスクリプトというか、まあとにかく人間以外がアクセスしてきてから、実際にコメントを投稿するまでの時間はとても短いだろうと考えたんです。通常「よし、この記事にコメントをしよう」と思うまで結構時間がかかると思いますし、入力する時も誤字脱字が無いかとか結構気を遣いますよね。そんなことしてると時間はあっという間に過ぎて、ページを開いてからまあ短くても 3 分はかかるだろうと勝手に決めつけました。スパムはそんなに気を遣いませんからね。
ということで、hidden 属性に time() の値を持たせたものをコメントフォームに出力して、ValidateForm でその時の time() を測定。スパムの動きを探ってみました。すると最長でも 12 秒(でいいんですよね?)後にコメントを投稿してきていることがわかりました。ということで差が 15 秒以上のコメントは無条件で受付け、15 秒を切るコメントは一旦エラーを返し、その時初めてチェックボックスを表示させることにしました。何度かテストは成功したのに気を良くし、Option 設定も追加してタイマーを自由に設定可能にしたり、タイマーを使用しない、従来の動作だけをさせることにも成功し、いろんな組み合わせをテストしてバグを潰していき「もうすぐ公開できるかもー」と興奮していたのですが、やはり甘かったです。
どうもいろんなタイプのロボットがいるようで、最初のうちは斥候的な動きで「取得して投稿。取得して投稿」だったのが、無差別に猛爆撃してくるスパムの場合、一旦取得した hidden の値を送り続けてくるんですね。すると当然何回目かの投稿から、投稿時間との差が 15 秒以上になります。最長では 2 分以上のものがありましたね。そりゃ向こうは自動なんだから、そういうタイプのものがあって当然ですよね。
なんともまあ浅はかな考えでしたが、閃いた瞬間は「…いけるっ」と思ったんですよね、恥ずかしながら。まあ何事もやってみないと理解できないのでいい勉強になりました…
ちなみに NP_NoRobotComment の目標である「導入、管理が楽」「コメントする側の負担 0」って、多分 NP_Blacklist がずっと前からできてると思います。少なくともコメントする側の負担は無いですからね。まあでも、Nucleus のプラグイン作りは PHP の勉強材料にうってつけな気がするので、もう少し頑張ってみます。
- *1自サイトへのリンクが無いトラックバックの場合、公開を保留にできます。
-
-
Tag(s):
- [Nucleus] Next & Previous


