このWordPressはSPAMコメントを防止するためにsi-captchaというプラグインを入れている。ユーザーがコメントしようとしたときに、ランダムに数字とアルファベットが表示され、それを読み取って入力欄に打ち込まないとコメントできないというもの。正直面倒だし、文字は読みにくく、ユーザーには負担をかけているのだが、毎日のようにセールスかAVサイトへの誘導か、わけのわからないコメントがふりかかってくるのはうんざりなのだ。
ところが、最近はsi-captchaをかいくぐってSPAMコメントが付けられるようになってきた。OCRで解析しているという説と、人間が読み取っているという説とがある。もしかするとコメントフォームを使わずに直接書き込んでいるのかもしれないが、とりあえず人間解析説にたって対策をとることにした。
これまで付けられたSPAMコメントはすべて英語で、.comなどアメリカのサイトへのリンクだった。となると、人間が読み取るにしてもローマンフォント、つまり英数字しか分からないだろうと判断する。しかしぼくのブログは日本語で書いており、非日本語圏の読者は想定していない。そこでキャプチャ画面に表示される英数字を日本語字形にしてしまえば、外国人ユーザーはコメントができなくなるのではないだろうか。アルファベットを日本語字形にする、というのはあり得ないから数字を漢数字にすればいい。
探してみたけれど、1バイトラテンフォントで数字が漢数字というフォントはないようだ。無ければ作る。si-captchaがデフォルトで使っているフォントは
wp-content/plugings/si-captcha-for-wordpress/captcha/ttffonts/ahg-bold.ttf
というtruetypeフォントだ。これをダウンロードし、フリーのフォントエディタFontforgeで開く。
使われているフォントが一覧表示されるので、1から順にクリックしてエディタ画面を開き、適当に修正する。実際にはVectorからニゴロデザインの256.ttf
http://www.vector.co.jp/soft/win95/writing/se284331.html
というフリーのフォントをダウンロードし、これをコピーして修正した。
最初、256.ttfをahg-bold.ttfとリネームして使ってみたが、2バイトフォントなせいかcaptchaで数字もアルファベットもまったく表示されなくなってしまったので取りやめた。また、256フォントは旧字体というか、画数が多すぎて識別しにくいので、いろいろ省略。
できあがったフォントファイルを使ってsi-captchaを試したらアルファベットに混じって漢数字が表示されるようになった。コメントするにはこの漢数字を英数字として入力する。つまり四なら4、五なら5というわけだ。
Fontforgeの使い方がよく分からないので、字形はガタガタ。だけど文書に使うわけではないのだから、これでも問題ないだろう。あと修正したahg-bold.ttfと256.ttfの権利がどうなっているのかよく分からないので、配布は控えることにしておく。
さて、これでSPAMが来なくなるといいのだが。