有没有办法防止内容缓存或从API抓取



想象一下以下情况。我有一个API,开发人员构建一个应用程序,每天从中检索新内容。她存储这些内容,并将这些数据提供给她开发的应用程序的所有实例。通过这种方式,这些应用程序不必直接调用API。有没有办法防止这种情况,并强制应用程序(因此最终用户(使用API,而不仅仅是服务器上的应用程序。我发现了许多关于如何缓存API数据的问题,但没有发现如何防止这种情况。我对这件事还很陌生,所以也许我忽略了什么,或者可能无法阻止。提前谢谢!

假设您使用Apigee进行API管理,那么您有一些选择。首先,如果这是一种业务关系,并且您可以通过合同与业务合作伙伴强制执行某些API行为,请考虑合同中提供的选项。

与法律方面的事情分开,我们记住,您控制您的API和您颁发的供API客户使用的凭据。实际上,你无法控制客户端开发人员如何处理你发布的凭据:她可以承诺将凭据嵌入移动应用程序的API客户端,但改变主意并集中使用它,然后设计她的移动客户端以调用她的中央缓存。如果你真的坚持只有移动应用程序客户端应该调用你的API,而不是集线器/缓存服务器,那么你可以考虑对你的API应用约束策略(在Apigee代理内,如访问控制(。例如,您可以将合作伙伴的集线器/缓存服务器IP地址列入黑名单,尽管这充其量是弱安全性。或者,您可以应用一个约束,即只允许具有特定标识User-Agent字符串的客户端(移动操作系统、客户端(连接到您的API。或者使用GeoIP过滤只允许来自特定地区的客户端,如果这适用于您的用例的话。

最后,根据数据模型的不同,您可能可以进行速率限制,从而使大容量缓存变得不切实际:如果边缘客户端的用例是获取单个记录,但缓存必须容纳数千条记录,那么您可以强制执行每个客户端的速率限制(配额策略(,这对单个移动客户端来说并不麻烦,但会使集线器/缓存服务器的工作无法维持。

最新更新