“分析” 标签页面:

  • WordPress垃圾评论大作战

    自从把博客搬到独立服务器之后,垃圾评论有日益增长的趋势。

    上次集中清理垃圾评论的时间,刚好是6月初的一天。到8月下旬,居然积攒了5000多条垃圾评论!

    WordPress的用户应该都深有感触,这个博客程序还是挺招惹垃圾评论的。因此WordPress自带了一个叫Akismet的插件。

    Akismet插件工作原理是,将垃圾评论通过API上报到云端(想当年,Akismet诞生时云还不叫云,叫远程服务器),然后也会把垃圾评论存到垃圾评论数据库中。

    不过像我这样几个月收几千条垃圾评论的用户来说,存起来显然不是个好办法。那么,怎么解决呢?

    不急不急,解决之前,不如先分析一下问题吧!

    垃圾评论也分三六九等的,定义如下:

    1. 机器人瞎子一样直接向WordPress的评论接口发数据包
    2. 机器人先解析页面,然后构造请求
    3. 机器人解析页面,还模拟浏览器运行脚本,然后构造请求
    4. 人工手打垃圾评论

    分析了几千条垃圾评论,我觉得,像我这种小博客,99.99%都是第一、第二种情况。第三种几乎没有。第四种的话……也太看得起本站了。

    分析之后,豁然开朗,针对第一种的情况,其实只需要在页面加一些隐含的字段就可以了。不过现在的机器人似乎比较聪明,还是会看一下评论表单的隐藏字段。那么就用脚本再加另外一个隐含字段——只有运行脚本的浏览器,才能正确解析,也才能正确发送这一个由脚本填充的隐藏字段。

    但是,这种方案也有缺点,如果用户的浏览器不支持脚本,也就无法正确发送脚本填充的隐藏字段,同样会被拦截。关键在于,这样的用户有多少呢?

    这时候,大数据(误)就派上用场了。我看了一下来访用户统计,大部分都是chrome或chrome核心,其它移动端的用户也是智能设备。也就是说,感谢科技发展,大部分用户的浏览器都是支持脚本的。那么,这个措施还是可以实施的。

    于是乎,总结上面啰啰嗦嗦的一大串文字结论如下:

    1. 使用脚本在评论表单添加隐藏字段,发表评论时验证字段。
    2. 其余漏网之鱼,交给Akismet拦截。

    参考代码如下:

    <?php

    defined( 'ABSPATH' ) or die( 'No script kiddies please!' );

    define('DEFAULT_JQUERY_BEFORE', 'jQuery(function($) {');
    define('DEFAULT_JQUERY_AFTER', '});');

    function creke_cal_comment_val($k)
    {
    return strval(crc32('CrekeComment'.$k));
    }

    function creke_get_comment_form()
    {
    if(is_user_logged_in())
    {
    return;
    }

    $k = time(NULL);
    $v = creke_cal_comment_val($k);
    return "
    <input type='hidden' name='creke_comment_k' value='$k' />
    <input type='hidden' name='creke_comment_v' id='creke_comment_v' creke_comment_v='$v' value='$k'/>
    ";
    }

    function creke_get_comment_script($jQueryBefore=DEFAULT_JQUERY_BEFORE, $jQueryAfter=DEFAULT_JQUERY_AFTER)
    {
    if(is_user_logged_in())
    {
    return;
    }

    return "
    <script type='text/javascript'>
    $jQueryBefore
    var id='#creke_';
    id+='comment_v';
    $(id).val($(id).attr('creke_comment_v'));
    $jQueryAfter
    </script>
    ";
    }

    function creke_comment_form()
    {
    echo creke_get_comment_form();
    echo creke_get_comment_script();
    }

    add_action('comment_form', 'creke_comment_form');

    function creke_comment_check($commentdata)
    {
    $dieMsg = 'do not spam';
    $dieTitle = 'title';
    $isSpam = FALSE;

    $type = comment_type('comment', 'trackback', 'pingback');

    if(is_user_logged_in() || $type == 'pingback' || $type == 'trackback')
    {
    return $commentdata;
    }

    $k = $_POST['creke_comment_k'];
    $v = $_POST['creke_comment_v'];
    if((time(NULL) - $k) > 86400)
    {
    $isSpam = true;
    }
    if(!$isSpam)
    {
    $isSpam = (creke_cal_comment_val($k) != $v);
    }

    if($isSpam)
    {
    wp_die($dieMsg, $dieTitle);
    }

    return $commentdata;
    }

    if(!is_admin()) {
    add_filter('preprocess_comment', 'creke_comment_check', 1);
    }

    ?>

    2016.08.26 / 7 条评论 / 1,617 次点击 / 分类: 所谓技术

  • 世界诈骗第一强国--三鹿奶粉事件技术分析

    ��常在ebay的论坛上看到被人骗了钱的洋人这么说"Nuke Nigeria, Nuke China"--尼日利亚,这个名不见经传的非洲小国,如果你经常在网上做买卖的话,就会它是网络诈骗的第一来源国。当然了,来自这排名第二的祖国的骗子与尼日利亚这些手段拙劣的非洲小骗子相比,其诈骗技术和手段有时候就不得不让人乍舌了。
      
      大家也许还还忘记2007年中国徐州一家出口美国猫狗食物的企业在宠物食品中添加三聚氰胺来冒充蛋白质导致中美关系轩然大波的事情吧?三聚氰胺,是一种很常见的塑料化工原料,其分子最大的特点,就是含氮原子很多,这特点本来也没啥好说的,这种化工原料多如牛毛,这特点也不足让咱三聚氰胺如此又名。
      
      我们知道,食品工业中常常需要检查蛋白质含量,但是直接测量蛋白质含量技术上比较复杂,成本也比较高,不适合大范围推广,所以业界常常使用一种叫做"凯氏定氮法(Kjeldahl method)"的方法,通过食品中氮原子的含量来间接推算蛋白质的含量。也就是说,食品中氮原子含量越高,这蛋白质含量就越高。这样一来,这名不见经传的三聚氰胺的由于其分子中含氮原子比较多,于是就派上大用场了。
      
      三聚氰胺最早被中国的造假者用在家畜饲料生产中,饲料中添加了这玩意,仪器一检测,氮原子很多啊,一推算,蛋白质含量也很高,生产者顺理成章地就省下昂贵的蛋白粉开支了。三聚氰胺虽然有毒,但是牛羊体积都比较大,肾功能强,能顺利代谢毒素,吃了,好像也没啥死牛死羊的事情发生,于是也没人去关注。顺理成章,造假者扩大应用范围,顺便把三聚氰胺用于出口美国的宠物饲料中,当然不幸的是,猫狗等宠物体积比牛羊小多了,代谢能力差,这三聚氰胺的毒性的影响也就大了,结果毒死了猫狗,惊动了美国洋老太爷,最后三聚氰胺这种东西也进入美国的FDA的视线。
      
      据说当时美国人发现三聚氰胺后百思不得其解,不知道为啥添加这玩意,还以为是老鼠药污染造成的。记得当时美国新闻媒体报道都是怀疑中国粮食仓库看管不严,造成老鼠药污染。后来终于有知情的中国人忍不住,偷偷告诉美国人这食品中添加三聚氰胺的奥秘,这高手云集的美国学术界这才恍然大悟,明白过来这复杂的高科技造假过程。
      
      大家注意这次三鹿奶粉事件,受"污染"的都是最便宜的18块钱一袋的婴儿奶粉,显然,三鹿为了占领农村奶粉市场这块最后的肥肉采取了低价倾销战略,但是卖这18块钱一袋的奶粉连本钱都不够,大量生产岂不亏老本了吗?于是三鹿为了节省成本,在奶粉中添加廉价大豆蛋白粉来替代奶粉,这大豆蛋白粉本来也没啥大事,但是,恰恰这次里面被添加了伪造蛋白质的三聚氰胺这高科技玩意,于是最终制造出这起轰动全国的三鹿奶粉事件。当然,成人奶粉中肯定也添加了这种高科技玩意,因为成年人的代谢能力比婴儿强大得多,除了特殊的病人,自然也不会有中毒事件发生。
      
      三鹿奶粉事件,从一个侧面,反映了中国严重的食品安全问题,我们现在究竟还剩下什么东西可以安全地吃进肚子里?三聚氰胺这个黑手,从最初的牛羊饲料市场开始蔓延,发展到今天,终于伸到了婴儿奶粉这个领域。我想数以亿计的中国人,不知不觉中,早已吃了好多年用三聚氰胺喂养出来的猪肉,牛肉,鸡肉,喝了很多年添加了三聚氰胺的成人奶粉,不知不觉中,都受到了三聚氰胺的污染。有没有谁做过三聚氰胺对人类健康长期影响吗?我想肯定还没有,因为谁都不会想到,一个国家几亿人,竟然会去吃这种跟食品风牛马不相及的塑料工业的原料。

    2008.09.12 / 1 条评论 / 426 次点击 / 分类: 借此鉴彼