# 帝国cms如何防止内容被采集或复制

*Published:* 2023-11-19
*Author:* 客服001

#### 温馨提醒

如果文章内容或图片资源失效，请留言反馈，我们会及时处理，谢谢

本文最后更新于2023年11月19日，已超过 180天没有更新



### 防止复制：

防止复制函数 e/class/connect.php的第3176行：

```
//加上防复制字符
function AddNotCopyRndStr($text){
    global $public_r;
    if($public_r['opencopytext'])
    {
        $rnd=make_password(3).$public_r['sitename'];
        $text=str_replace("<br />","<span style=\"display:none\">".$rnd."</span><br />",$text);
        $text=str_replace("</p>","<span style=\"display:none\">".$rnd."</span></p>",$text);
    }
    return $text;
}
```

可以看到原理很简单，是把换行和p标签的结束标签替换成&lt;span style="display:none"&gt;随机三位字符+站点标题&lt;/span&gt;&lt;br /&gt;。

### 防止采集：

查找e/class/functions.php第3767行，这块有相关功能说明 http://www.phome.net/EmpireCMS/edu/base/66.html

```
function ReturnNotcj($string){
    global $notcj_r,$notcjnum;
    if(empty($notcjnum))
    {
        $rep="";
    }
    else
    {
        $i=rand(1,$notcjnum);
        $rep=$notcj_r[$i];
    }
    $cjword="<!--ecms.*-->";
    $string=str_replace($cjword,$rep,$string);
    return $string;
}
```

也可以很轻易的看出，是把文章输出模板中的 &lt;!--ecms.\*--&gt; 替换成我们自己在后台定义的防止采集字符。默认有以下内容：

> &lt;input type=hidden value='欢迎使用帝国网站管理系统：www.phome.net'&gt; &lt;phome 帝国网站管理系统,phome.net&gt; &lt;!--帝国CMS,phome.net--&gt; &lt;table style=display=none&gt;&lt;tr&gt;&lt;td&gt;
> 
> &lt;div style=display=none&gt;

这块就比较好理解了，市面上采集多采用元素选择器或者正则进行内容获取，可以把 这些不可显示的内容（html注释、标签）一并获取到。以进行一个对采集内容的混淆。