文章内容中随机插入防采集混淆字段

阅读747评论0

采集和防采集两个一直在较劲这,从未停止过。。

应客户的要求,给他网站加了一个防采集的功能,用的是比较原始的方法:加入混淆字段。。

这种方法不可以严格的禁止采集,但会让采集到的内容多许多你自定义的文字,也算变相打广告了。


采集这事吧,当你采集别人的时候,别人搞的干扰多了你也烦。你自己搞的站防采集吧,说实话好像没有有效的方法。。。

IP了,速度了,cookie了,UA了,这些都没啥用(可能想到的比较少,欢迎大家留言讨论),像这种加干扰文字的也就是在阅读上干扰了,搜索引擎可能会认为你的页面质量不高。


但这种方法也有弊端的,就是对SEO不是很友好。总之有利有弊吧。这功能甲方爸爸要求的,某得办法哈。

分享给大家,想用的就用吧,,,,

DEMO:

<?php
    $body='<p>第一段文字,无span</p><p>第二段文字,<span>有span</span></p><p>第三段文字,<span>有span</span></p><p>第四段文字,无span</p><p>第五段文字,无span</p><p>第六段文字,<span>有span</span></p>';
    
    function rndString($body,$rnd=array()){
        $num=substr_count($body,'</p>');
        $num+=substr_count($body,'<br>');
        $num+=substr_count($body,'<br/>');
        $num+=substr_count($body,'</span>');
        $findNum=0;
        $rndNum=1;
        //当有40个判断标签(p span br)的时候,插入5个混淆码
        if($num >= 40){
            $limit=5;
        }elseif($num >= 12){
            $limit=3;
        }elseif($num >= 8){
            $limit=2;
        }else{
            $limit=1;
        }
        $adNum=floor($num/$limit);
        $body=preg_replace_callback('/(</p>|<br>|<br/>|</span>)/', function($matches)use($adNum, $rnd, &$findNum, &$rndNum){
            $findNum++;
            if($findNum == ($rndNum * $adNum)){
                $randstr=isset($rnd[$rndNum - 1]) ? $rnd[$rndNum - 1] : $rnd[array_rand($rnd)];//匹配不到对应的数据时,随机获取一个
                $rndNum++;
                return $matches[1].'<font>'.$randstr.'</font>';
            }else{
                return $matches[1];
            }
        }, $body);
        return $body;
    }
    $body=rndString($body,array('<a href="http://www.webstr.top">我是第一个混淆码,我有链接</a>','我是第二个混淆码','我是第三个混淆码','我是第四个混淆码','我是第五个混淆码'));
    echo $body;
?>

效果展示:

混淆码效果展示



0 位网友评论:

欢迎来评论

请填写验证码