Trackback spam對策,續

一陣子以前在寫一篇記事的時候有對日本的某網誌做trackback ping,無意中發現對方BSP的trackback有個檢查功能,感覺是防止spam很好的方法,後來才知道那是"pingback"
不過從規格書裡看來,pingback是經由xml-rpc,而且送信和受信雙方都要支援才行...
只是pingback的回頭檢查功能的確是個不錯的idea,於是這邊勝手取這個檢查功能加在目前F2blog的trackback裡面...
倒是改造的時候發現,似乎原本就有把類似的東西寫進去(fopen_url函式),但是並不完整...
以下,trackback.php的修改處:

1.找到
<coolcode lang="php">fopen_url($url);</coolcode>
改成
<coolcode lang="php">fopen_url($url,$tid);</coolcode>
2.最下方的fopen_url函式整個改掉
<coolcode lang="php">function fopen_url($url,$tid) {
global $settingInfo;
if ($settingInfo['rewrite']==0) $gourl=$settingInfo['blogUrl']."index.php?load=read&id=";
if ($settingInfo['rewrite']==1) $gourl=$settingInfo['blogUrl']."rewrite.php/read-";
if ($settingInfo['rewrite']==2) $gourl=$settingInfo['blogUrl']."read-";
$valid_entry= $gourl . $tid . $settingInfo['stype'];
$file_content='';
$surl=parse_url($url);
if ($surl['port']=='') $surl['port']=80;
$fp = @fsockopen($surl['host'], $surl['port'], $errno, $errstr, 30);
if (!$fp) {
tb_xml_error ("URL not exist!");
}
$out = "GET {$surl['path']}".($surl['query'] ? '?'.$surl['query'] : '')." HTTP/1.0\r\n";
$out .= "Host: {$surl['host']}\r\n";
$out .= "Connection: Close\r\n\r\n";
@fwrite($fp, $out);
while (!feof($fp)) {
$file_content .= fgets($fp, 128);
}
@fclose($fp);
$valid_flag='';
$lines = explode("\r\n", $file_content);
foreach ($lines as $line) {
if (ereg("$valid_entry", $line)) { $valid_flag = '1';}
}
if (!$valid_flag) { tb_xml_error ("No valid link found!");}
}</coolcode>
原理是,接收到trackback ping的時候,程式自動檢查引用連結,然後抓取連結內容,確認有該篇網誌的連結時才會讓trackback紀錄..F2內建的AJAX已經可以把spambot的引用擋掉,而回頭檢查法又能把人肉spam擋掉(除非有人在spam以前還要費事的在自己的廣告裡貼對方網誌的連結,應該不會有這種吧|||)
trackbackTrackback: http://blog.snow-sugar.net/trackback.php?tbID=691&extra=b5c4cb
taggedTags: trackback f2blog spam php
Comments: 2 |Trackback: 0 | Read: 3754 | Print | Download
add nookmarks Bookmarks
Share to:Google BookmarksYahoo! My WebWindows LiveDiggDel.icio.usfacebookfacebookredditslashdotfurltechnoratiMyShare樂多網路書籤UDN共享書籤HemiDemi貼到funPLivedoor ClipFC2 BookmarkHatena::Bookmark百度搜藏
referers Link from
  以下連結並未逐一檢查,點選前請自行留意右方評價!
3 http://www.blogcatalog.com/blog/a-blog-with-no-nam...
2 Google search: SPAM對策
2 http://50.28.77.10/read-691.html
2 http://www.youtube.com/watch?v=RoeerWZik3M
comment Yuki [ 2009/06/11 21:58 | Reply | Edit Delete View ]
小光真的很用心在修改bug咧~~
我剛才本來也想要換成你改的版本來試試的~~
但是突然發現,本來的function有return,新的這一個沒有咧~
為什麼呢?
>>reply小光 [ Replied on 2009/06/11 22:12 Home | Edit Delete ]
         avatars 可以return但是沒甚麼差,因為沒有要回傳什麼東西回去,所有的判定已經在函式裡面做完了
其實舊版本也一樣,return的變數沒有作用
  • 1 
pannya
Write New Comment
Name:(*) Password:
Website: Email:
Validation:(*) Validation Image [Reload] Option:
Content:(*)