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, 除非他用高匿名代理, 那就真的無法得知了.
 

79 篇回應 (訪客:42 篇, 博主:29 篇, 引用:8 篇)

  1. Bubuto ~

    支持大师,以后得多来学习

  2. 这个可以有,马上去试一下,谢谢willin

  3. Dianso ~

    升级下,原来是1.8

  4. vlee ~

    willin 大大,小强的使用能否详细讲一下啊,因为刚刚接触WP,很多问题不是很明白,呵呵,见笑了~~~

  5. hey33 ~

    前来学习了 大师

  6. 海天 ~

    大师 问下 我用小墙 的确是正常过滤
    但是我今天看到这样一个留言“留言板的排版有点乱。。字好多。
    首页相当不错。
    人气也不错。
    谢谢你的到访。
    有兴趣可以加友链的。”
    他也没提示说是小墙判断的 但怎么就会在垃圾评论里呢?其他aksim插件没开

  7. 继续前来学习了...

  8. 我用的是只要有一次成功评论才会显示,呵呵.不过会有点麻烦...

  9. Artur ~

    在几个站点上使用了你的 小强系列1.81,但是wp同时安装了WP-SpamFree 插件,不知会不会有冲突?
    我已将WP-SpamFree 停掉,嘿嘿.....

  10. 有那么一段时间米有来了…… 哦哈~ 我用了最原始但是最有效的方法防止了spam——黑名单……目前我的黑名单里已经有几千行字了……

  11. willin好久没折腾了,最近终于更新了啊,呵呵

  12. 用这个版本试试,1.8很好用,就是人肉spammer太烦了

  13. cooved ~

    大师,我前段时间用小墙1.8,结果把所有评论都挡到垃圾评论里了,几天后才发现。是跟我comments.php里的代码有冲突?纠结了好长时间了,没找到问题所在,想用小墙啊!您方便的时候帮看一下?

  14. 哲哲 ~

    很多很好用的代码都是大师这里诞生的~佩服佩服·

  15. 智慧帆 ~

    [ 小牆判斷這是Spam! ]
    請求: /wp-comments-post.php
    來路: 隱瞞
    IP: 119.88.82.225
    方式: 未經評論表格
    內容: 许久没有来逛了!!
    -- 記錄成功 --
    (此評論純為效果展示)

  16. fulujbqspuw ~

    [ 小牆判斷這是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]
    -- 記錄成功 --
    (此評論純為效果展示)

  17. 你的小强都出名了。

  18. Carrie ~

    本來就想來問一下,最近小牆常常攔截到沒有評論的 spam 是怎麼回事哩,沒想到就出了這版,我那裏的 pingback spam 不多(幾乎沒有),應該適用這一版。

  19. 来晚了,呵呵.下午有段时间没办法访问!对了,我的主题莫名其妙的对作者判断不准确,就是foot.php这个,判断有时候错了,代码没问题,但是就是出错 :mad:

    • willin ~

      是用 $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(); ?>
        代码是这样...

  20. 奶牛 ~

    暂时还在用wp自带的那个东东,等着过几天换主题的时候一起折腾上,嘿嘿~~~

  21. shamas ~

    我还一直用是上个版本,也没有什么垃圾ping,索性不改了

  22. Bee君 ~

    没用小墙 :!: ~我这里主要是人肉比较多

  23. 支持下大師,請問用Ctrl+Enter發表評論還會不會被判為垃圾評論?

  24. 万戈 ~

    其实我这里的pingback spam还挺多 :mad:

  25. shog ~

    一如既往地支持Willin~~

  26. 阿邙 ~

    那我就不客气的板凳了啊~
    呵呵
    更不客气的 拿去试用
    感谢Willin大大分享

  27. 传说中的沙发?这个是防Spam的 ?有空了试下这个 看着不错的

留下評論

:?: :razz: :sad: :!: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: :smile: :evil:
貼圖 表情 ( ps. 若要貼代碼, 請將 "<" 改成 "&lt;" 即可, 此方法在所有 WP 網站均適用. )

Trackbacks/Pingbacks

  1. 解决小墙与wordpress-thread-comment的冲突 « 小居 --- 2010年 08月 27日
  2. 更新WP Anti Spam 小墙 1.81 --- 2010年 08月 08日
  3. WP Anti Spam 小墙 1.81 – 免插件反 Spam 方案 - 独来读网 --- 2010年 08月 04日
  4. 反垃圾评论:WP Anti Spam + Spam To Blacklist | A.shun's Blog --- 2010年 08月 01日
  5. 狼图腾 » iNove修改小记 --- 2010年 07月 26日
  6. Wordpress「A9」Theme by Willin Kan | 阿邙’S Blog --- 2010年 07月 17日
  7. Rain|折腾之干掉插件 | 静夜燃香 --- 2010年 07月 14日
  8. 技术帖现身 | 嘿,我说 --- 2010年 07月 01日

這篇文章上的評論 RSS feed TrackBack URL