2006年3月 5日(日) 23時59分56秒 [Perl/CGI, Web関連]
英文のみで構成される投稿をブロックする
BBSなどへのスパム投稿は、最近は日本語のものもかなり多いのですけど、英語のスパムも結構来ます。
英文で投稿される可能性のあるBBSでは使えませんが、そうではないBBSなら、「英文だけで構成される投稿はスパム」と決めちゃってもいいと思います。
というわけで、私が運営する一部のBBSに、以下のソースコードを加えて、「英文だけの投稿」はできなくしてみました。
&error("スパム対策のため英文だけのコメントは投稿できません。");
}
変数$comに、投稿本文が入ってます。
正規表現を使って、本文中に英文しかない場合は、エラーメッセージを出すようにしています。(関数errorは、引数の文字列をブラウザに表示させて終了する関数です。)
上記の正規表現の場合、「英字(\w)」「数字(\d)」「スペース(\s)」「改行(\n)」と、記号!?-*+'$":;&とカッコをチェックしています。これらの文字のみで構成されている場合には、if文が成立するので、エラーメッセージを吐きます。
これらの文字以外の文字が含まれていれば、if文は成立しないので、投稿処理が行われます。
# …1バイト文字の記号にだけマッチする書き方ってなんかあったっけ?(^^;;;
# 記号を列挙するしかなかったっけなあ?
まあでも、これでたいていの英文投稿は禁止できるんじゃないかと思います。
問題は、スパム投稿ではない英文の投稿も阻止しちゃうことですが。^^;
逆に、「ひらがなが含まれていなければブロック」のような判定にしてもいいと思いますけどね。日本文の投稿で、ひらがなが1文字も含まれないという可能性はあんまりないでしょうから。
この日記へのコメントはお気軽に! コメント数:2 トラックバック数:0
| « 本棚の整理がなかなか終わらない理由は |
前後のエントリ < 旧 / 新 > | 関西大学に編入したときの書類が » |
このエントリーへのトラックバックURLを表示するにはここをクリック
※スパム防止のため、トラックバックURLは別ウインドウで表示します。(JavaScriptが有効でないと表示されません。)
英文だけの投稿はキックする方法は無駄と思いますよ。
自分の知っている掲示板《※すでに機能停止してる》
では
一行の日本語の後ろにURLの羅列が書かれた
英文スパム投稿の亜種が出ていました。
投稿者 放浪者 : 2007年01月04日 23:23
放浪者さん、どうもです。
確かに、「そういうのがブロックされる」という事実さえ分かってしまえば、適当な日本語の文字列を含めればいいということくらい、誰でも思いつきますもんね。^^;
そのうちこの方法も使えなくなるだろうなとは思ってました。
こういうのは、イタチごっこなんでしょうねえ…。
今後は、日本語が含まれる割合とかを計算しないといけなくなるんでしょうかね…。^^;;;
投稿者 にしし : 2007年01月05日 02:09
コメント数: 2件