网站上的关键数据如何防止被采集?
发布于 11 年前 作者 anubiskong 10033 次浏览 最后一次编辑是 8 年前

假设我的网站上有用户的电话号码或者私人相册地址 如何防止这些数据被采集?

目前我能想到的是: 通过ajax请求这些数据而不是放在html内容里面. 但是这样做有个问题就是通信时数据是明文的, 如何加密这些数据呢?

或者有其他的办法防止扫描? 请有经验的人教教

21 回复

关键就是权限分配问题,如果对方无论是匿名或者登录后均无法访问到网站用户的电话号码或者私人相册地址,那么它就无法采集到这些数据。 如果对方能通过浏览器访问到这些数据,那么他就可以通过程序采集到这些数据。

说个简单的例子,如果某人拥有你家的所有钥匙,那么无论你家安了多少把锁,人家也照样能能出入自如。

如果是百姓网那种谁都能看的页面呢

@anubiskong 一般程序采集数据都是有规律的,比如短时间内访问大量的页面,或者按照列表顺序依次抓取页面,可以根据这些规律来判断是否为程序访问的,并返回出错页面。

58是把电话号码做成图片的,增长别人的采集难度,不过还是可以处理。

如果是点击之后有功能的链接呢? 比如邮箱地址, 或者下载链接

@anubiskong

  1. 如果是每次点击,通过ajax取数据,那么我就直接出发ajax功能。

  2. 如果数据是藏在html中的,点击后才显示,那么直接爬到页面解析dom就行了。

@anubiskong

只要能看到的,没有爬不到的。只有“采集难度”的区别。

刚发现一个网站用这种方法来增加采集难度:把网页中显示的字符串数据,ASCII字符部分全部替换成图片(通过CSS来显示背景图片,都是一张图片,不同的字符背景偏移量不一样,而且这个图片也是随机的),这样即使采集过来了,某部分数据也是不完整的,大大增加采集难度。

参考:http://www.bankrate.com.cn/creditcard/1310

这个很有意思, 谢谢

ajax通讯加密, 大家有办法吗?

防采集一直都是很让人蛋疼的问题。各种办法基本上都是防君子不防小人的。

我见过一个网站,很极端的防别人采集他的页面。

就是把页面HTML代码全部URLEncode加码。

然后再在前段用js的decode解码。

做一个例子

比如页面HTML代码是 <html><body>…呵呵呵…</body></html> 先在后台进行URLEncode成为一个字符串

String enHTML = “%20%sdf%s12%12…%asdf%qwe”

然后输出在模板上

document.write(decodeURI("${enHTML}"));

(ps : 我用的是JAVA的模板写法,{enHTML}就是再模板中调用 enHTML字符串)

这样在页面源代码中看到的就是

%20%sdf%s12%12…%asdf%qwe

因为用了js的decodeURI解码,所以页面显示确实正常的。。

这种方式极不利于SEO。。

不过防采集确实效果不错。

粗糙的伪代码,只表达一下思路。。。

希望你能理解我的意思 : )

其实这个思路我想过, 但是还是有办法采集的, 采集器用同样的方法解密一遍就好了, 破解难度不是很大

谁都能看的页面,那就是谁都能解密的页面。

用人机识别:你要看一个人的资料,先输一遍验证码。

只能增加成本,提高url规则的难度

这个影响用户体验, 而且现在验证码都已经不太好用了

具体如何做呢

@anubiskong @leizongmin

把数据做成图片有什么方法么?

url 地址随机 别搞那种 有规律的 如 uid=1。。。。。uid=100 再有最好别出现列表页面

@leizongmin 你好,因为链接不能访问了,想请教一下。我们这边现在有需求:网站对于数字比较敏感,所以不希望数字被抓取(让他们抓错的也行)。目前想的方案是在前端通过图片增加破解的成本。正好看到了您的这个回答,请问您是如何通过随机图片的方式来大大增加抓取和解析难度?

@shinyChen 原评论的意思是 发现有其他网站使用这样的方法去做,不是说我这样做过。

回到顶部