這幾天來,我觀察的結果簡單整理如下:
- 換成比較不規則的CAPTCHA,沒用。
- Spammers的User-Agent,調access.log來看,會發現「看起來」都是很正常的個人用戶在留言、不像是機器人,不過也有可能是假造的。
- 依照〈authimage插件-可重复使用验证码?〉這篇給的線索,發現垃圾迴響的留言週期,的確有大略的規律。
- 修改AuthImage的有效時間也沒用,垃圾迴響仍會很精明的跟著適應。到這邊我就很懷疑這些spammers是綜合了工人智慧與程式來灌垃圾,並不是單純的機器人或人工。
那麼,上面那位朋友的問題有沒有解呢?其實我們只要依照他的正確邏輯「讓CAPTCHA使用過就作廢」就可以,我們要修改的是{install_dir}/plugins/authimage/class/security/authimagefilter.class.php:
// if everything went fine, we can say so by returning
// a positive PipelineResult object
if($tempFile) unlink("$tempFile");
$result = new PipelineResult();
return $result;
既然它說「一切檢查正常無誤後,就讓迴響正常刊出」,我們就在程式return結果回去前,先把該次的CAPTCHA給解除任務,而不是等到讓deleteExpiredAuthImage去做逾期處理,這樣就可以了。