例如现在用angularjs开发的web app,后端几乎只输出JSON数据,前端通过angularjs来显示和做交互。 那问题来了。 既然后端输出的都是JSON,那如何防止第三方抓取数据?
22 回复
跟https没关系。 如果是封闭系统,可以限制带身份信息(登录后)才可获取数据; 如果不希望有此限制,可以在访问页面时种cookie,由js计算cookie的特征值作为参数带上发给接口,后台比对cookie与特征值参数是否符合即可
要想防止爬数据,很难滴!!!除非: 1、使用硬件令牌(比如银行的USB盾); 2、数据加密传输(AMF3)和显示使用Flash,并且对Flash代码进行混淆、加密、加外壳; 3、API被连续请求一定次数后,要求输入验证码(各种变态点的验证码);
就算是以上几点你都做到,俺还是能抓取你的数据滴,只是难度高一点,效率低一点而已…… 兄弟,别想了,这个很难得……
@xlaok 计算特征值的算法是你自己决定的,虽然说可以通过看js代码了解计算算法,但是如果对js代码做了混淆,并刻意制造复杂逻辑,抓取者要搞清楚并模拟出这个过程代价是很大的。这种情况只能利用这种信息不对称实现防抓取,既然是希望资源可以被公开(不经身份认证)访问的话。
这个完全防不胜防,唯一的办法就是进行用户数据获取行为分析,找出可疑IP或用户进行智能封禁,但是吧,你的规则被知道后也就是增加难度而已,就跟微博永远都能有人刷广告评论一样,无论他的广告规则有多牛,增加的只是难度。