是否可以使用随机令牌保护json-api抓取



我已经使用Laravel为在线商店构建了一个restful json api。

我现在希望创建一个AngularJS应用程序来运行前端web应用程序。我的商店的产品价格需要每秒更新一次,所以Angular需要每秒从服务器获取一次产品json来更新html。

我希望以某种方式保护这个json数据不被scraper/bots反复点击我的api来窃取我的产品和定价数据所窃取。

我的想法:

每个json-api响应都包含一个随机使用一次的令牌(我知道要做一些事情来阻止冲突)。

这个随机令牌通过AngularJS注入到html页面中的一个隐藏字段中。Angularjs在重新请求api之前读取隐藏的令牌,并在下一个get请求的头中使用它。

json响应只在标头中提供正确的令牌。一旦使用了令牌,它就会过期,任何重复使用过期令牌的尝试都会导致该IP地址被锁定一段时间或标记给管理员进行调查。

有没有更好的方法来完成上面的工作?对于我的问题,有什么实际可行的解决方案吗?考虑到我首先要为产品定价订阅源付费,我真的不想因为我暴露了一个api就让一些笨蛋免费从我这里得到它!

我认为一个更简单的解决方案是向您的api添加签名,并在Angular应用程序中存储密钥。这是一个很好的资源,在过去帮助过我:

http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html

这里还有一个(潜在的)相关SO答案:使用laravel 的RESTAPI身份验证

最新更新