帝国cms在防止内容采集方面做的工作
时间:2022-07-24
本文章向大家介绍帝国cms在防止内容采集方面做的工作,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在某论坛偶然看到有讨论帝国CMS关于防止复制和防止采集方面的内容。于是下载了一份学习一下。
首先找到了相关函数的定义位置:
防止复制
防止复制函数 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标签的结束标签替换成<span style="display:none">随机三位字符+站点标题</span><br />
。不过为什么这么做,我没有查找到相关资料。只看到2011年已经有相关的文章了。
防止采集
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;
}
也可以很轻易的看出,是把文章输出模板中的 <!--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注释、标签)一并获取到。以进行一个对采集内容的混淆。
对,就是这样~
- java:利用xpath删除xml中的空节点
- java array to list
- Python之Dijango的“坑” hostname, aliases, ipaddrs = gethostbyaddr(name) UnicodeDecodeError: 'utf-8' cod
- nGrinder 简易使用教程
- UI设计高效学习网站&工具,来自学长的收藏夹哦
- 安装git出现templates not found的问题
- 时间戳 时间
- jenkins 设置 gitlab web hooks
- 测试流程?项目管理流程?
- 学web前端开发写给新手的建议,超实用!
- 价值22万的5字母域名sanwa.com被启用
- Django admin 一些有用的设置
- mysql @value := 用法
- css样式—字体垂直、水平居中
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【DB宝14】在Docker中只需2步即可拥有Oracle 11g企业版环境(11.2.0.4)
- 别忘了给gcc编译器工具链加上-fno-common选项
- 轻量安全的部署方案
- 算法集锦(34) | 强化学习| 出租车载客问题
- 前端测试题:(解析)关于ajax跨域的说法,下面错误的是?
- 什么才是定制化 IDE 的核心价值?
- RTOS内功修炼记(八)— CMSIS RTOS API,内核通用API接口
- 从零搭建Spring Boot脚手架(1):开篇以及技术选型
- 盘点 Python 10 大常用数据结构(下篇)
- 「干货」你需要了解的六种渲染模式
- 分享两个操作Java枚举的实用方法
- 从零开始强化学习:在Python笔记本中设计和解决一个任务
- 基于深度学习的新闻推荐算法(1)
- 以复现图表的方式来学习一篇文章
- 盘点 Python 10 大常用数据结构(上篇)