Limites de taxa
Presets de limite de taxa por formulário com os números exatos, como eles se recarregam e como é um 429.
Os limites de taxa impedem que um visitante, ou um script, inunde um formulário. Todo formulário tem um preset, e todo limite é contado com exatidão, antes de o corpo ser lido. Um envio rejeitado não consome nada da cota.
Presets
| Preset | Por visitante e formulário | Indicado para |
|---|---|---|
| Standard (padrão) | 5 por minuto, no máximo 3 em 10 segundos | A maioria dos formulários |
| Relaxed | 20 por minuto | Formulários atrás de login, ferramentas internas, eventos com Wi-Fi compartilhado |
| Strict | 2 a cada 10 minutos | Formulários de contato e de vendas, onde uma repetição é um clique duplo ou um bot |
| Custom | De 1 a 1.000 a cada 10 segundos, minuto, 10 minutos, hora ou dia | Uma participação por pessoa, quiosques e outros casos especiais |
Os presets comparados
Standard 5 por minuto, 3 em 10 segundos14 de 120 aceitos
Relaxed 20 por minuto59 de 120 aceitos
Strict 2 a cada 10 minutos2 de 120 aceitos
Como os limites se recarregam
Os limites são uma cota contínua, não uma janela fixa de relógio. Um visitante que estava quieto começa com a cota cheia e pode usá-la de uma vez. Depois disso, mais um envio é permitido a cada janela dividida pelo limite: a cada 12 segundos no Standard, a cada 3 segundos no Relaxed e a cada 5 minutos no Strict. Depois de uma janela inteira sem envios, a cota fica cheia de novo.
O Standard também tem uma regra de rajada de 3 envios a cada 10 segundos, então a primeira rajada dele é 3, não 5. Relaxed, Strict e Custom não têm regra de rajada separada.
Limites que sempre valem
| Regra | Limite | Contado por |
|---|---|---|
| Proteção contra flood, antes da busca do formulário | 600 por minuto | IP, somando todos os formulários |
| Entre formulários | 30 por minuto, ou a taxa por minuto do Custom quando for maior | IP, somando todos os formulários |
| Por formulário inteiro | 300 por minuto, ou um teto Custom de 1 a 10.000 | Formulário, somando todos os visitantes |
GET /f/<formId>/schema | 60 por minuto | IP e formulário |
| O frame de verificação do Ikiform | 60 por minuto | IP e formulário |
| API REST | 100 por minuto | Chave de API |
Taxas Custom mais rápidas que a proteção contra flood são recusadas quando você salva; por exemplo, uma janela de 10 segundos permite no máximo 100. Carregar o schema de um formulário ou a verificação humana nunca gasta a cota de envios.
Custom
- Envios por visitante: um número inteiro de 1 a 1.000, e uma janela de 10 segundos, um minuto, 10 minutos, uma hora ou um dia.
- Teto por minuto do formulário inteiro: opcional, de 1 a 10.000. Ele substitui o padrão de 300 por minuto para o formulário inteiro.
- Uma janela de uma hora ou de um dia serve para formulários com uma participação por pessoa, como sorteios ou confirmações de presença. Lembre que muitas pessoas podem compartilhar um IP, por exemplo em um escritório ou evento.
Quando um limite é atingido
O envio é recusado com 429 rate_limited e um header Retry-After com os segundos inteiros até o próximo envio ser permitido. Envios de formulário pelo navegador veem uma página hospedada "Slow down". Código com fetch consegue ler o Retry-After, porque o Ikiform o expõe via CORS.
HTTP/1.1 429 Too Many Requests
Retry-After: 12
X-Request-Id: req_01k7v2c9t3e8m5q4x6z0a1b2c3
Content-Type: application/json; charset=utf-8
{"ok":false,"error":{"code":"rate_limited","message":"Too many requests. Please slow down."},"request_id":"req_01k7v2c9t3e8m5q4x6z0a1b2c3"}- Espere os segundos de
Retry-Afterantes de enviar de novo. - Se visitantes legítimos atingirem o limite, mude o formulário para Relaxed ou Custom.
- Se o seu servidor envia em nome dos visitantes, todo envio compartilha o IP do seu servidor. Veja A partir de um servidor.