关于如何对付wordpress的垃圾广告机器人

wordpress 是个广为流行的博客系统,也正应为用户之多,随之而来的垃圾广告也越来越多。

曾装过几个反垃圾广告的插件都不怎么理想(包括图片验证码的也无效,设计有漏洞),后来通过日志分析用iptable屏蔽IP段能堵住大部分广告机器人,不过还是要时常填补机器人IP到iptable,操作起来不方便。

机器人是模拟浏览器请求的软件,有伪装的header   user-agent,不容易同正常请求区分开来,所以通过这些参数没有有效的屏蔽办法。

机器人软件模拟浏览器请求有个缺陷就是不会执行页面JS脚本。

通过这个便有了简单的解决方式:

两个文件中加几行代码

第一个文件:wp-includes/comment-template.php

找到 <form action=”<?php echo site_url( ‘/wp-comments-post.php’ ); ?>  发评论的form

form里增加一个隐藏字段

 <input name="ad_flag" id="ad_flag"  type="hidden" value="p"/>

机器人不笨会解析到这个字段并提交请求的时候会带上它

还需要在加上一段JS

<script type="text/javascript">
            jQuery(document).ready(function () {
                jQuery('#commentform').submit(function () {
                jQuery('#ad_flag').attr('name','is_person');
                    });
            });
        </script>

这段代码真实浏览器会解析执行,功能是在提交表单时修改上面那个隐藏字段的name,机器人的话就不会执行这段JS脚本,这就方便在下一步做屏蔽了

文件:wp-comments-post.php

 

if ( !isset($_POST['is_person']) ) {
        header('Allow: POST');
        header('HTTP/1.1 405 Method Not Allowed');
        header('Content-Type: text/plain');
        exit;
}

如果没有is_person 就是垃圾广告机器人,直接屏蔽掉,从此清静了

发表评论

电子邮件地址不会被公开。 必填项已用*标注