防制發廣告機器人的檢核碼
每隔一段會有廣告機器人濫貼迴響(spam comment), jsen寫的檢核碼外掛(SCode plugin, security code plugin)可以要求張貼迴響前,需要輸入亂數產生圖形中的數字,來達到防制廣告機器人的效果。但是這個方法的缺點是降低網頁的親和力(Accessibility),使得有視覺障礙的網友無法發表迴響。

1. 先確定主機安裝了GD模組,可以讓程式產生圖形,GD的安裝請自行聯絡主機的網站人員。
2. 到jsen的檢核碼外掛網頁,下載SCode plugin,解壓縮後,編輯SCode.pm
* 設定暫存目錄的位置 (my $tmpdir) ,並設定該目錄可寫
* 設定檢核碼的長度(my $scode_length),預設值為6個數字,我設定成4
* 設定暫存檔的檔案數量(my $scode_maxtmp),預設值為50個暫存檔,如果你的網誌常有人進行迴響,請增加暫存檔的檔案數量。
* 調整自動產生的圖形與文字的顏色:$c_background, $c_border, $c_line and $c_code.
3. 將SCode.pm 上傳到 lib/MT/ 目錄 (MT::SCode)
4. 將mt-scode.cgi上傳到MT放置CGI的目錄,並設定該檔案為可執行
5. 將scode.pl上傳到plugins/
6. 修改檔案前請記得先備份!更改lib/MT/App/Comments.pm (MT::App:Comments),如果已經安裝 mt-Blacklist 不要修改 cgi-bin/lib/MT/App/Comments.pm 而是修改 cgi-bin/extlib/jayallen /MTBlPost.pm 這個檔案。(From 酋長的說明)
在
if (!$q->param('text')) {
return $app->handle_error($app->translate("Comment text is required."));
}
之後加上以下段落
# SecurityCode hack start
#
require MT::SCode;
my $code = $q->param('code');
my $scode = $q->param('scode');
my $sscode = MT::SCode::scode_get($code);
if ($scode ne $sscode) {
return $app->handle_error($app->translate(
"Wrong or missing Security Code."));
}
MT::SCode::scode_delete($code);
MT::SCode::scode_create($code);
#
# Security hack ends
#
7. 登入MT的管理介面,修改以下4個模版
- 單篇彙整(Individual Entry Template)
- 迴響清單模版(Comment Listing Template)
- 迴響預覽模版(Comment Preview Template)
- 迴響出錯模版(Comment Error Template)
在
<label for="url">網址:</label><br />
<input tabindex="3" id="url" name="url" /><br/><br />
之後加入以下段落
<input type="hidden" id="code" name="code" value="<$MTSecurityCode$>">
<img border="0" src="<$MTCGIPath$><$MTSecurityImage$>?code=<$MTSecurityCode$>"><br />
<label for="code">請依上圖輸入檢核碼:</label><br />
<input tabindex="3" id="scode" name="scode" /><br /><br />
<!-- 檢核碼檢查結束 -->
儲存修改後重建網站檔案,就OK了。
* 其他防制廣告機器人的方法
* 中文翻譯參考Jedi的網誌上的用語。
* 關於檢核碼技術,可參考Wikipedia對於Captcha(Completely Automated Public Turing Test to Tell Computers and Humans Apart)的說明。(英文)
* Blog 有問題,去哪邊問問題?