PHP-一个考试数据库的网站如何防止采集?
一个考试类的数据库的网站,没有静态页面,辛辛苦苦的导入考试数据,如何防止采集?我们的网站对搜索引擎并不看重。做成图片或pdf可能不行,因为网站为用户提供在线作答的功能。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
一个考试类的数据库的网站,没有静态页面,辛辛苦苦的导入考试数据,如何防止采集?我们的网站对搜索引擎并不看重。做成图片或pdf可能不行,因为网站为用户提供在线作答的功能。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(10)
一般小网站 最靠谱的就是 全都用AJAX调用 动态加载网站内容 最靠谱 方法还简单实用啊!
1、限制IP地址单位时间的访问次数
2、屏蔽ip
3、利用js加密网页内容
4、网页里隐藏网站版权或者一些随机垃圾文字,这些文字风格写在css文件中
5、用户登录才能访问网站内容
6、利用脚本语言做分页(隐藏分页)
7、防盗链措施(只允许通过本站页面连接查看,如:Request.ServerVariables(“HTTP_REFERER“) )
8、全flash、图片或者pdf来呈现网站内容
9、网站随机采用不同模版
10、采用动态不规则的html标签
最后看到你说你看重搜索引擎,我觉的你还是忠实起来吧,因为搜索引擎有先入为主的优势,你让搜索引擎先把你的收了,这样对于你的数据也是有保护的
验证问答机制. :
访问一个考试页面,随机从题库抽出一道问答
你可以将试卷分成多页,每次通过ajax从后台读取一页的内容显示到页面上即可。或者是你随机改变页面的模板,每看一份试卷都输入一次验证码。
说下我的思路,分为两步:
重点在于第一步,考试页面肯定是经过其他页面的连接进入的,也就说达到考试页面一定有一个必需经过的页面,那么就在那个必须经过的页面来设置一个验证的值,不要设置在cookie中,一定要存在服务器端。
接下来主要说这个值如何设置:
最好的方式就是使用图片请求,而且最好是写在样式里,最好是一个真实的请求图片地址,例如:
background: url("/images/xxx_background.jpg");
这个不建议使用1像素的图片,最好是将现有样式中的图片改装,而且这个图片有程序输出,
那么就需要rewrite了。
RewriteRule ^images/xxx_background.jpg$ /set_token.php [L]
然后在set_token.php 中 在session中设置一个值,并且输出一张图片:
$_SESSION['TEST'] = time();
header('Content-Type: image/jpg');
echo file_get_contents('/images/xxx_background.jpg');
最后在访问内容页时 判断 isset($_SESSION['TEST']) 就可以了。
你不考虑搜索引擎可以这么弄,因为这样一来蜘蛛就访问不了考试页面了。
但是这么做还有一个问题,就是采集你的内容时,先人为的用浏览器操作一次,成功的浏览到考试页面,然后拿到cookie,在程序采集时发送刚才拿到的cookie就绕过了验证,不过这个问题我也帮你考虑好如何解决了,如果你要使用这个方法,我再补充吧,因为描述比较费力。。。
在网站根目录下建立robots.txt来禁止搜索引擎访问
内容为:
User-agent: BadBot
Disallow: /
同时使用HTTP_REFERER来验证访问来源,如果非本站,给出错误提示.
1.检测来源;2对方问做限制,比如要求登录
3 其实最好的办法是 加验证 每次访问你的页面输入验证码
如果同才可以继续访问;
采集做的比较多,防采集有时做,据我所知的基本任何网站都能被采集,你可以从规则上去增加别人采集的成本
1)来源URL的判断
2)页面复杂度加大,比如跳转,ajax获取信息
3)登录才能查看
4)访问频率的控制
5)每个查看页面设置验证码,输入正确才能查看
6)根本的,一般的采集不会去采集相关文件CSS,图片,JS,日志里面能查看出来,你可以根据上一段时间的日志封IP,最好自己做一个封IP的系统,考虑IP的释放,和多次封IP的封IP时间加长
1-4有经验的采集人员很容易破解,5-6增加了难度,不过还是能突破,仅供参考!
可以随机的从内容中抽出部分文字做成图片。
1、用js加载页面。
2、混淆js