前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >帝国cms在防止内容采集方面做的工作

帝国cms在防止内容采集方面做的工作

作者头像
yumusb
发布2020-08-28 15:03:35
8180
发布2020-08-28 15:03:35
举报
文章被收录于专栏:坏男孩坏男孩

在某论坛偶然看到有讨论帝国CMS关于防止复制和防止采集方面的内容。于是下载了一份学习一下。


首先找到了相关函数的定义位置:

防止复制

防止复制函数 e/class/connect.php的第3176行(这里就不贴具体效果了。)

代码语言:javascript
复制
//加上防复制字符
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标签的结束标签替换成<span style="display:none">随机三位字符+站点标题</span><br />。不过为什么这么做,我没有查找到相关资料。只看到2011年已经有相关的文章了。

防止采集

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

代码语言:javascript
复制
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;
}

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

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

<div style=display=none>

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


对,就是这样~

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 防止复制
  • 防止采集
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档