WP Anti Spam 小牆 1.81
小牆 1.81 是 小牆 1.8 的修改版, 不是升級版.
在原功能不變的基礎下, 改動兩個地方:
一、取消了 Trackbacks/Pingbacks 的攔劫.
二、將 spam 的基本資料存進檔頭.
將下列代碼 copy 到模板的 functions.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | /* <<小牆>> Anti-Spam v1.81 by Willin Kan. */ //建立 class anti_spam { function anti_spam() { if ( !current_user_can('level_0') ) { add_action('template_redirect', array($this, 'w_tb'), 1); add_action('init', array($this, 'gate'), 1); add_action('preprocess_comment', array($this, 'sink'), 1); } } //設欄位 function w_tb() { if ( is_singular() ) { ob_start(create_function('$input','return preg_replace("#textarea(.*?)name=([\"\'])comment([\"\'])(.+)/textarea>#", "textarea$1name=$2w$3$4/textarea><textarea name=\"comment\" cols=\"100%\" rows=\"4\" style=\"display:none\"></textarea>",$input);') ); } } //檢查 function gate() { if ( !empty($_POST['w']) && empty($_POST['comment']) ) { $_POST['comment'] = $_POST['w']; } else { $request = $_SERVER['REQUEST_URI']; $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '隱瞞'; $IP = isset($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"]. ' (透過代理)' : $_SERVER["REMOTE_ADDR"]; $way = isset($_POST['w']) ? '手動操作' : '未經評論表格'; $spamcom = isset($_POST['comment']) ? $_POST['comment'] : null; $_POST['spam_confirmed'] = "請求: ". $request. "\n來路: ". $referer. "\nIP: ". $IP. "\n方式: ". $way. "\n內容: ". $spamcom. "\n -- 記錄成功 --"; } } //處理 function sink( $comment ) { if ( !empty($_POST['spam_confirmed']) ) { if ( in_array( $comment['comment_type'], array('pingback', 'trackback') ) ) return $comment; //不管 Trackbacks/Pingbacks //方法一: 直接擋掉, 將 die(); 前面兩斜線刪除即可. //die(); //方法二: 標記為 spam, 留在資料庫檢查是否誤判. add_filter('pre_comment_approved', create_function('', 'return "spam";')); $comment['comment_content'] = "[ 小牆判斷這是Spam! ]\n". $_POST['spam_confirmed']; } return $comment; } } $anti_spam = new anti_spam(); // -- END ---------------------------------------- |
小牆 1.81 的速度是沒什麼差別.
因為有人提議 Trackbacks/Pingbacks 不需攔劫, 1.81 就是為此而修改, 用了 1.81 可要自己當心了. 還好, 現在的 Trackbacks/Pingbacks 的 spam 沒有以前那麼猖獗, 這大可放心.
最大重點是加入了 spam 的基本資料, 包含請求( REQUEST_URI )、來路( HTTP_REFERER )、IP、操作方式, 可提供下一步加強防護的參考.
例:
如果你用的是我的 WordPress 內置嵌套評論專用 Ajax comments, 那麼 '請求' 應該是你主題路徑的那個 comments-ajax.php, 而不應該是根目錄的那個 wp-comments-post.php, 你可大膽把 wp-comments-post.php 文件更名, 讓他沒門進來. 但用了這方法, 垃圾評論一條也沒有, 短時間還真會讓你有些不習慣.
'來路' 通常可以經過偽造, 較不可信, 僅供參考.
雖然 WordPress 在後台可看到 spam 的 IP, 倘若通過代理就不一樣了, 小牆所記錄的是代理之前的 IP, 除非他用高匿名代理, 那就真的無法得知了.

支持大师,以后得多来学习
这个可以有,马上去试一下,谢谢willin
升级下,原来是1.8
willin 大大,小强的使用能否详细讲一下啊,因为刚刚接触WP,很多问题不是很明白,呵呵,见笑了~~~
前来学习了 大师
大师 问下 我用小墙 的确是正常过滤
但是我今天看到这样一个留言“留言板的排版有点乱。。字好多。
首页相当不错。
人气也不错。
谢谢你的到访。
有兴趣可以加友链的。”
他也没提示说是小墙判断的 但怎么就会在垃圾评论里呢?其他aksim插件没开
是黑名單攔下的吧~
黑名单?在哪设置啊 我貌似没设置过啊
继续前来学习了...
我用的是只要有一次成功评论才会显示,呵呵.不过会有点麻烦...
在几个站点上使用了你的 小强系列1.81,但是wp同时安装了WP-SpamFree 插件,不知会不会有冲突?
我已将WP-SpamFree 停掉,嘿嘿.....
一定會啊~ 只要跟 name="comment" 有關的都會沖突.
有那么一段时间米有来了…… 哦哈~ 我用了最原始但是最有效的方法防止了spam——黑名单……目前我的黑名单里已经有几千行字了……
黑名單就很有效, 但是 IP 越來越多, 篩選也會減慢速度~
willin好久没折腾了,最近终于更新了啊,呵呵
我折騰從沒停過... 更新是看心情~
用这个版本试试,1.8很好用,就是人肉spammer太烦了
人肉是永遠抓不到, 這版只能判斷是手動操作機器還是全自動機器.
大师,我前段时间用小墙1.8,结果把所有评论都挡到垃圾评论里了,几天后才发现。是跟我comments.php里的代码有冲突?纠结了好长时间了,没找到问题所在,想用小墙啊!您方便的时候帮看一下?
呵呵,貌似自己解决了:
function gate() {
if ( !empty($_POST['w']) && empty($_POST['comment']) ) {
$_POST['comment'] = $_POST['w'];
} else {
这个判断里的“w”和我的comments.php里textarea name="w" id="comment"这句里的“w”对应就可以了,我原来的是“comment”
'設欄位' 出了問題, 是模板沒匹配, 應該要更正模板的錯誤.
然而用手動改模板, 代替自動改也是可以.
恩呢,终于用上wilin大师的小强了
这样啊,一直用同样的问题,没注意,这下明白了
補充一下: 手動改的話 name="comment" 和 name="w" 的 textarea 都要有,
而且要讓 name="comment" 那欄隱藏.
手动改了后,发现管理员在前台的评论发不了,“错误:请输入评论内容。”
把主題壓縮寄給我看看~
好啊,EMAIL地址?no-reply@kan.willin.org?
我在你那邊有留言, 進後台就看到了.
这么耐心帮助解决问题,不愧大师之名
謝謝, 但我不是大師~
大師,小師都是名稱而已嘛,你就欣然接受吧
过来致谢willin大师耐心的帮助解决问题!
很多很好用的代码都是大师这里诞生的~佩服佩服·
謝謝, 代碼看多了, 其實你也可以.
[ 小牆判斷這是Spam! ]
請求: /wp-comments-post.php
來路: 隱瞞
IP: 119.88.82.225
方式: 未經評論表格
內容: 许久没有来逛了!!
-- 記錄成功 --
(此評論純為效果展示)
[ 小牆判斷這是Spam! ]
請求: /wp-comments-post.php
來路: http://willin.atbhost.net/?p=1324
IP: 91.214.45.253
方式: 手動操作
內容: CV8npF avkyvtdzbxuv, [url=http://wbbfasryhbpw.com/]wbbfasryhbpw[/url], [link=http://ycetrjqstujv.com/]ycetrjqstujv[/link]
-- 記錄成功 --
(此評論純為效果展示)
你的小强都出名了。
不想太出名, 太出名會被破解滴~
本來就想來問一下,最近小牆常常攔截到沒有評論的 spam 是怎麼回事哩,沒想到就出了這版,我那裏的 pingback spam 不多(幾乎沒有),應該適用這一版。
沒有評論內容是因為 html 語法被 WordPress 自動過濾了, 可見那個 spammer 對 WordPress 還不熟悉.
来晚了,呵呵.下午有段时间没办法访问!对了,我的主题莫名其妙的对作者判断不准确,就是foot.php这个,判断有时候错了,代码没问题,但是就是出错
是用 $post->post_author 來判斷文章歸屬, 出錯的狀況是怎樣?
以前我早說過那 show_date_time() 函數有問題, 是不是它引起的, 可以測一下.
<?php if (is_page()) {
$style_item = 'page';
} elseif (is_single()) {
if ($post->post_author == '2') {
$style_item = 'boy';
}
elseif ($post->post_author == '3') {
$style_item = 'girl';
}
} else {
$style_item = 'normal';
} ?>
<div id="footer" class="footer footer_<?php echo $style_item ;?> ">
<p>
<br /><a href="http://validator.w3.org/check/referer" title="This page validates as XHTML 1.0">XHTML 1.0</a><br /><br /> <a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3" title="This page validates as CSS 3.0">CSS 3.0</a><br /><br /><br /><br /><br /><br /> <a href="http://feed.feedsky.com/xianyunyehe" title="feedskyRSS">Subscribe to RSS</a>
</p>
</div>
<script type="text/javascript">
writeObjects();
</script>
<?php wp_footer(); ?>
代码是这样...
代碼沒問題, 出錯的狀況是怎樣?
随机出现加载尾部图片错误,你可以看下我的文章,然后刷新,尾部有时候男生调用女生尾部...
$post 錯亂了, 由下往上看, 最近的是 "文章收集", 看它有沒 $post, 先停掉它試試.
果然是那里的错误,嘿嘿,现在已经好了...
暂时还在用wp自带的那个东东,等着过几天换主题的时候一起折腾上,嘿嘿~~~
用那個沒出狀況嗎? 很多人都出問題才改用小牆.
我还一直用是上个版本,也没有什么垃圾ping,索性不改了
這版沒什麼大變動, 可以不改.
没用小墙
~我这里主要是人肉比较多
最好試用一下, 說不定不是人肉, 看資料就能確定了.
支持下大師,請問用Ctrl+Enter發表評論還會不會被判為垃圾評論?
Ctrl+Enter 是用鍵盤取代滑鼠鍵, 不影響.
上一次用大師的小牆,把所有人的評論都丟進垃圾評論裏了,估計是Ctrl+Enter的關係。
不會吧~ 我這邊也用了 Ctrl+Enter, 從來沒出錯啊~
現在用還是……不然你去我那評論看看……
你用的Ctrl+Enter代碼是什麼?
<textarea name="w" id="comment" cols="58" rows="5" tabindex="4" onkeydown="if(event.ctrlKey&&event.keyCode==13){document.getElementById('submit').click();return false};"></textarea>
看到了... 你的用不斷行試試.
順便一提, 你在這邊填的 url 是 email... 前面的我改好了.
其实我这里的pingback spam还挺多
那還是要用上一版~
一如既往地支持Willin~~
謝謝.
那我就不客气的板凳了啊~
呵呵
更不客气的 拿去试用
感谢Willin大大分享
不客氣~
听你介绍,今天特意来拿..嗯,,我也不客气的拿下了.............感谢
不客氣~~
传说中的沙发?这个是防Spam的 ?有空了试下这个 看着不错的
什麼狀況?? 你守在這邊? 才貼出就沙發~