3

现在,我正在开发一项服务,该服务可以处理覆盖在 Google 地图上的当地餐馆的评论/推荐。基本上是 Yelp,但仅限于特定的利基市场。无论如何,由于我不想一次加载每个位置并查看,我终于开始使用 jQuery 和 AJAX 调用。

我的问题是:如何防止其他人从服务器上的 ajax 脚本中“抓取”数据?

主要的地图/位置信息功能需要公开,因为用户不必登录即可使用该应用程序,因此它可能简单地归结为难以抓取。我希望你们中的一位 AJAX 资深人士可以为我指出一个更好的想法,或者一些我还没有找到的“最佳实践”文档。

到目前为止,我所能想到的是:

  • 面向用户的脚本在服务器上打开一个短暂的会话,如果没有活动的会话,AJAX 调用将不会运行。
  • 与应用程序代码一起发送某种访问密钥,并在所有 AJAX 调用中要求它。但不确定如何以一种不容易解决的方式最好地实现这一点。
4

2 回答 2

5

您不能完全保护您的 AJAX Web 服务。即使您破坏了您的数据并混淆了您的源代码,只需启动数据包嗅探器或调试代理,找出并从中刮取,这也是微不足道的。

我要做的正是您建议的……只有在网站上具有活动会话的用户才能拨打电话。然后从那里限制请求。

即使是忙碌的普通用户每分钟发出的请求也不会超过少数。您可以分析您的日志以找出一个好的数字。即使您将服务限制为每分钟 20 次调用,这种限制对于想要复制所有内容的人来说也毫无用处。

也不要只限制会话数据...密切关注 IP 地址。完全有可能随时触发请求并获得新会话。定期检查您的日志以查看是否有任何事情通过,并相应地调整您的策略。

最后,定期搜索您的内容。Google 是查找版权侵权者的绝佳工具。如果你使用特定的数据,比如 GPS 坐标,你实际上可以在坐标的噪声区域用特定的值对坐标进行水印。

于 2012-11-29T16:39:52.307 回答
1

据我所知,您希望保护服务的 JavaScript 端。这是不可能的,因为 JavaScript 本质上是完全开源的(尽管不是公共领域)

Google 提供了一个名为 Google Closure 的工具,它可以通过删除空格和制表符来压缩脚本。它还可以通过用随机字符替换变量名称和函数名称来为您混淆文档。它是可定制的,因此您可以告诉它您想要什么。据我所知,谷歌将它用于他们自己的网站(通过查看他们网页的来源可以看出)

于 2012-11-29T16:39:07.130 回答