2010年9月17日金曜日

spam対策 - ページアクセスから画像(?)アクセスまでの間隔

新しいスパム対策法を考案。
それは「ページアクセス(呼び出し)から画像アクセスまでの間隔」を計測し、結果がn秒数を超えていたらspam、というもの。
spamは次々(階層的)にリンクを辿っていくため、ページ上のリンクを全て辿るにはかなり時間がかかると思われる。
通常のブラウザなら、画像はページが表示される前にレンタリングの後半(設定依存)で読み込まれる。

ということで早速作ってみました。
Interval.pm - 間隔計測Perlモジュール

img要素でページとリンクしたページ(投稿フォーム)で、「Interval::start FILENAME」を実行。
img要素でリンクされたページで、「Interval::end FILENAME」を実行。
「Interval::result FILENAME」で最後の計測結果を取得。で、その取得した計測結果がn秒数を超えていたらブロック。とっても簡単です。

「Interval::result」の戻り値は計測結果を切り上げ(単純に+1)したものです。
「Interval::start」->「Interval::end」という順序で実行しないと「Interval::result」の戻り値が0又は最後に記録した時間になります。

判定基準は5秒くらいが丁度いいと思われます。エラー内容は、結果にもよりますが「サーバーが混み合っています。しばらく待ってから投稿フォームをリロードして下さい。」といった感じでいいでしょう。

AntiSpam.pmも外部ファイルを使うので、追加で使うと効果的かもしれません。

0 件のコメント:

コメントを投稿