首先说明,只要是能让浏览器访问的,就没有不能采集的。
但是可以通过一定的手段让采集变得非常麻烦,进而在大量数据的情况下延迟采集完成时间,加大采集难度。
一般的情况略过不说,几种情况比较特别的:
1、验证来路,cookie,session这些,比如PHP可以用fsockopen自定义HTTP Header,基本上这些方法没什么效果。
2、限速,限制某段时间内打开页面数量。这个只是推迟了下,大部分时间效果一般。比如某站限制一分钟之内只能打开30个网页,页面大小平均30K,则用迅雷批量下载就OK了,设置限速为2K,一觉醒来什么都好了。这个方法效果也基本没有。
3、比较特别的方法,设置一个数量级的阀值,达到这样数量后,必须验证方能继续,比如打开10个页面需要输入验证码,这个时候只需要保证验证码不可识别,分配一个session,以后的浏览过程中用session保证用户合法性,这样不影响后续访问,同时可以有效防止采集。
4、第三条对蜘蛛是致命的,此时可通过手机蜘蛛IP段,放行,其它的按照严格规则来。
5、3+4真是无敌的吗?远非可以高枕无忧,比如此站有10万个页面,则设置100个代理,在阀值前循环使用代理,这样实际上绕过了3的限制。
6、还有别的办法吗?不能,因为你的网站能用浏览器打开。
7、另外的方案,开发专有浏览器,专有数据加密。
8、社会工程学来说,进行知识产权保护,让采集的风险远大于成本,前提是你的数据值得你付出这么多来折腾。
从另外的角度来说,数据并非最重要的,就像钱不如人重要。回想百多年前,你家大清帝国装备一流,也还是败的一塌糊涂。