一个考试类的数据库的网站,没有静态页面,辛辛苦苦的导入考试数据,如何防止采集?我们的网站对搜索引擎并不看重。做成图片或pdf可能不行,因为网站为用户提供在线作答的功能。

2011-03-11 15:27:33

10 Answers

1、限制IP地址单位时间的访问次数
2、屏蔽ip
3、利用js加密网页内容
4、网页里隐藏网站版权或者一些随机垃圾文字,这些文字风格写在css文件中
5、用户登录才能访问网站内容
6、利用脚本语言做分页(隐藏分页)
7、防盗链措施(只允许通过本站页面连接查看,如:Request.ServerVariables(“HTTP_REFERER“) )
8、全flash、图片或者pdf来呈现网站内容
9、网站随机采用不同模版
10、采用动态不规则的html标签

最后看到你说你看重搜索引擎,我觉的你还是忠实起来吧,因为搜索引擎有先入为主的优势,你让搜索引擎先把你的收了,这样对于你的数据也是有保护的

2011-03-11 17:22:10

说下我的思路,分为两步:

(1)在到达内容页之前先做一个准备工作,比如说在session中存放一个值。

(2)然后访问内容页面的时候,先判断session值是否存在,如果不存在 显示404或者跳转到首页或列表页都可以。

重点在于第一步,考试页面肯定是经过其他页面的连接进入的,也就说达到考试页面一定有一个必需经过的页面,那么就在那个必须经过的页面来设置一个验证的值,不要设置在cookie中,一定要存在服务器端。

接下来主要说这个值如何设置:

最好的方式就是使用图片请求,而且最好是写在样式里,最好是一个真实的请求图片地址,例如:

  
background: url("/images/xxx_background.jpg");

这个不建议使用1像素的图片,最好是将现有样式中的图片改装,而且这个图片有程序输出,
那么就需要rewrite了。

  
RewriteRule ^images/xxx_background.jpg$ /set_token.php [L]
2011-03-11 19:30:10

你可以将试卷分成多页,每次通过ajax从后台读取一页的内容显示到页面上即可。或者是你随机改变页面的模板,每看一份试卷都输入一次验证码。

2011-03-11 20:18:28

在网站根目录下建立robots.txt来禁止搜索引擎访问
内容为:
User-agent: BadBot
Disallow: /

同时使用HTTP_REFERER来验证访问来源,如果非本站,给出错误提示.

2011-03-11 21:41:59

采集做的比较多,防采集有时做,据我所知的基本任何网站都能被采集,你可以从规则上去增加别人采集的成本
1)来源URL的判断
2)页面复杂度加大,比如跳转,ajax获取信息
3)登录才能查看
4)访问频率的控制
5)每个查看页面设置验证码,输入正确才能查看
6)根本的,一般的采集不会去采集相关文件CSS,图片,JS,日志里面能查看出来,你可以根据上一段时间的日志封IP,最好自己做一个封IP的系统,考虑IP的释放,和多次封IP的封IP时间加长

1-4有经验的采集人员很容易破解,5-6增加了难度,不过还是能突破,仅供参考!

2011-03-12 00:10:20

可以随机的从内容中抽出部分文字做成图片。

2011-03-12 01:22:01
您不能回答该问题或者回答已经关闭!

相关文章推荐

  • C#中using指令的几种用法

    using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到

  • C#实例解析适配器设计模式

    将一个类的接口变成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够一起工作

  • 使用托管C++粘合C#和C++代码(二)

    本文实现一下C++代码调用C#代码的过程。我构造一个简单并且直观的例子:通过C++ UI 触发C# UI.

  • C#开发高性能Log Help类设计开发

    项目中要在操作数据库的异常处理中加入写Log日志,对于商业上有要求,写log时对其它操作尽可能影响小,不能因为加入log导致耗时太多

  • Async和Await使异步编程更简单

    C#5.0中async和await两个关键字,这两个关键字简化了异步编程,之所以简化了,还是因为编译器给我们做了更多的工作

  • C#开发中的反射机制

    反射的定义:审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等

  • C#运行时相互关系

    C#运行时相互关系,包括运行时类型、对象、线程栈和托管堆之间的相互关系,静态方法、实例方法和虚方法的区别等等

  • C#协变和逆变

    “协变”是指能够使用与原始指定的派生类型相比,派生程度更大的类型,“逆变”则是指能够使用派生程度更小的类型

  • C#基础概念之延迟加载

    延迟加载(lazy load)是Hibernate3关联关系对象默认的加载方式,延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作

  • C#中的索引器的简单理解和用法

    C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集合成员时,索引器将大大简化对数组或集合成员的存取操作

  • 使用托管C++粘合C#和C++代码(一)

    C#在xml读写,数据库操纵,界面构造等很多方面性能卓越;C++的效率高,是底层开发的必备武器

  • 深入C# 序列化(Serialize)、反序列化(Deserialize)

    C#中的序列化和反序列化,序列化是.NET运行时环境用来支持用户定义类型的流化的机制