Глоссарий
Предел частоты (rate limit)
Предел частоты это потолок числа вызовов от одного обращающегося за окно времени, после которого в ответ приходит ожидание.
Что на самом деле считает предел
Предел частоты это обещание про скорость, а не про итоговое количество. Он говорит, сколько вызовов один обращающийся делает внутри окна и что приходит на следующий.
Смысл не в том, чтобы замедлить честную работу. Смысл в том, что один цикл с ошибкой внутри не отнимет службу у всех остальных.
Где стоят наши пределы
Один потолок стоит перед всем облачным интерфейсом, а перед ходами, которые стоит ломать, стоят потолки потеснее.
Любой ход
Общий потолок на минуту, поставленный одним стражем, а не вспоминаемый у каждого хода отдельно.
Вход
Теснее остальных: это та поверхность, в которую стучится каждый подбирающий пароль.
Передача входа в программу
Ещё теснее. Код, переносящий вход с сайта в программу, задуман как одноразовый.
Повторное письмо подтверждения
Самый тесный из всех: эта кнопка достаёт до чужого почтового ящика.
Форма поддержки
Считается за окно подлиннее, поэтому опечатка прощается, а сценарий нет.
Один страж перед всем сразу
Чей это счёт
Потолок считает обращающихся, а обращающийся здесь это адрес. Два сценария на одной машине делят один счёт, а один сценарий на двух машинах не делит.
За пограничной службой, дописывающей адрес посетителя в заголовок, верят только тем записям, за которыми мы действительно стоим. Адрес, приписанный в начало заголовка, не меняет ничего.
Лишнее доверие заголовку стирает потолок
Как выглядит ожидание в коде
Выше потолка в ответ приходит «слишком часто», а не та работа, о которой вы просили. Это ожидание, а не приговор, и следующее окно начинается чистым.
Отступите и повторите с растущей паузой. Наш отправитель поступает с таким же ответом вашего сервера точно так же, поэтому занятого приёмника мы не примем за мёртвого.
Три предела и три разных нрава
Пределом в этом продукте называются три разные вещи, и ведут они себя по-разному.
Дневной темп профиля
Считает открытые страницы, красит полосу и никогда не запрещает действие. Решение остаётся за вами.
Сколько профилей открыто
Вот этот отказывает по-настоящему: сверх числа следующее окно не откроется, пока вы не закроете одно. Само число вы поднимаете сами.
Как часто можно обращаться
Предел частоты, о котором эта страница. Он задаёт скорость вызовов и ничего не говорит про объём работы по тарифу.
Интерфейс на вашей машине
У интерфейса автоматизации на вашем компьютере своего потолка нет. Он доверяет машине, на которой идёт, и всю нагрузку там несут пропуск и отказ отвечать веб-странице.
Это размен со своей ценой, и цена ваша: сорвавшийся цикл на своей машине замечаете и останавливаете вы.
Чего это не делает
- Отдельной квоты на ключ нет. Счёт идёт по адресу, с которого пришёл вызов, поэтому два ключа с одной машины тратят один счёт на двоих.
- У интерфейса на вашем компьютере своего потолка нет, и поэтому всю работу там делают пропуск и отказ разговаривать со страницей.
- Счётчик дневного темпа ничего не запрещает. Он считает открытые страницы, красит полосу и оставляет любое решение читающему.
- Потолок на минуту это не квота на работу. Сколько у вас профилей и мест в команде, записано другим числом и в другом месте.
Проверить
Каждое утверждение выше указывает на файл, который можно открыть, и на стенд, идущий против настоящего сервера.
- Потолок по умолчанию стоит перед каждым ходом, а у входа он теснее
- apps/server/src/app.module.ts · apps/server/src/auth/auth.controller.ts
- За посредником счёт идёт по адресу самого человека, и подделка заголовка его не сдвигает
- apps/server/test/предел-попыток.js · apps/server/test/подбор-пароля.js
- Форма, доходящая до человека, считается за окно подлиннее
- apps/server/src/support/support.controller.ts · apps/server/test/поддержка.js
- У интерфейса на вашей машине вместо потолка стоит пропуск
- apps/desktop/src/lib/local-api.js · apps/desktop/test/local-api-gate.js
Вопросы
- Что делать, когда просят подождать?
- Выдержать паузу и повторить с растущим промежутком, а не сразу же. Тесный цикл повторов выглядит ровно как то нападение, ради которого потолок и поставлен.
- Счёт идёт на мой ключ или на меня?
- На адрес, с которого пришёл вызов. Ключ называет аккаунт, а потолок называет обращающегося, и это два разных вопроса.
- Попытки входа считаются отдельно?
- Да, и теснее обычных ходов. Подбор пароля это единственное, что чужой человек может попробовать, не имея у нас аккаунта.
- Можно ли заголовком притвориться новым обращающимся?
- Нет. Верят только тем посредникам, за которыми сервер действительно стоит, поэтому адрес в начале заголовка читается как утверждение, а не как правда.
- Делит ли вся команда один потолок?
- Только там, где у вас общий адрес. Счёт идёт по тому, откуда пришёл вызов, а не по тому, чьему аккаунту он принадлежит.
Потолки видны до первой строки кода
Каждый потолок здесь это одна строка в одном файле, а стенды идут против настоящего сервера, а не против его описания.