向用户提供批量图像的安全方法?

问题描述 投票:0回答:1

我最近为用户设置了一个API来提取信息,这是一个巨大的成功。 API返回包含名称和ID等信息的信息。然后,我告诉用户他们只需从以下位置拉出图像即可获得匹配的图像:

mysite.com/pics/ID_Retrieved_From_API.jpg

这一直很好,除了今天我醒来我的网站完全失败,因为它达到了它的资源限制(共享主机)。我检查了我的日志,注意到一个特定的IP拉了数千张我的图片:

[08/Feb/2019:07:06:54 +0000] "GET /pics/76600549.jpg HTTP/1.1" 508 224 "-" "python-requests/2.21.0"
[08/Feb/2019:07:06:54 +0000] "GET /pics/93700540.jpg HTTP/1.1" 508 224 "-" "python-requests/2.21.0"
[08/Feb/2019:07:06:54 +0000] "GET /pics/91000583.jpg HTTP/1.1" 508 224 "-" "python-requests/2.21.0"
[08/Feb/2019:07:06:54 +0000] "GET /pics/52300492.jpg HTTP/1.1" 508 224 "-" "python-requests/2.21.0"
[08/Feb/2019:07:06:54 +0000] "GET /pics/87400522.jpg HTTP/1.1" 508 224 "-" "python-requests/2.21.0"
[08/Feb/2019:07:06:54 +0000] "GET /pics/78400534.jpg HTTP/1.1" 508 224 "-" "python-requests/2.21.0"
[08/Feb/2019:07:06:54 +0000] "GET /pics/63100533.jpg HTTP/1.1" 508 224 "-" "python-requests/2.21.0"

我暂时阻止了IP以恢复我的网站。我并没有对用户感到恼火,因为我非常鼓励这一点,但除了有人如此积极地拉动图像之外我没有。我不确定现在该怎么办。什么是允许用户提取图像的最佳方式?我正在考虑将它们全部压缩在一起,但最终结果将是一个> 5gb的文件,我认为这仍然会扼杀服务器资源。

我尝试在cloudflare中限速,但这似乎不起作用,当我解锁IP时,我的资源再次出现。我的费率限制规则是:

mysite.com/pics/*
10 requests per 1 second = Block

任何建议表示赞赏。

html image api cloudflare
1个回答
0
投票

我当前正在运行的解决方案是注册Google Cloud Storage并在那里托管API的图像。

为了避免混淆,并且还可能避免将来发生这种情况,我将image_url添加到我的API中,该API指向Google云端存储图像位置,因此访问API的用户可以快速获取API的正确图像URL。

最后,我在托管图像存储桶上设置了Cross-Origin Resource Sharing(CORS),以便用户可以访问图像。

这已经设置了大约5天,我的网站自那以后没有任何问题。这是一个需要成本的解决方案,但在Google云端存储上托管图像实际上是cheap

© www.soinside.com 2019 - 2024. All rights reserved.