Я недавно настроил 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-адрес, чтобы восстановить мой сайт.Я не раздражен на пользователя, так как я в значительной степени поощрял это, но я не сделал, кроме кого-то, кто так агрессивно тянет изображения.Я не уверен, как действовать сейчас.Каков оптимальный способ предоставления пользователям возможности извлекать изображения?Я думал о том, чтобы сжать их все вместе, но конечным результатом был бы файл> 5 ГБ, и я думаю, что это все равно убило бы ресурсы сервера.
Я пытался ограничение скорости в cloudflare, но это не такКажется, что он работает, и когда я разблокировал IP, мои ресурсы снова исчерпаны.Мое правило ограничения скорости было:
mysite.com/pics/*
10 requests per 1 second = Block
Любой совет приветствуется.