Rate Limit
Alterar regra
Rate Limit disponível a partir do plano CUSTOM
Alterar uma regra de rate limit.
PUT /v1/rules/ratelimit/{dominio}/{id}
$ curl -i https://api.gocache.com.br/v1/rules/ratelimit/seudominio.com.br \
-X PUT \
-H 'GoCache-Token:seu_token' \
-d 'match[host]=www.gocache.com.br' \
-d 'match[scheme]=http*' \
-d 'match[request_uri]=/static/js/*' \
-d 'match[request_method]=GET' \
-d 'match[request_method]=POST' \
-d 'match[remote_address]=255.255.255.0/24' \
-d 'match[cookie]=mycookie1,mycookie2,mycookie3' \
-d 'match[cookie_content]=mycookie1=123*' \
-d 'match[http_referer]=www.google.com.br' \
-d 'match[header]=Accept:*' \
-d 'match[http_user_agent]=*Mozilla*' \
-d 'match[origin_country]=US|UK' \
-d 'match[origin_continent]=SA|EU|OC' \
-d 'match[bots]=others' \
\
-d 'action[rate_limit_action]=block' \
-d 'action[rate_limit_amount]=600' \
-d 'action[rate_limit_period]=3600' \
-d 'action[rate_limit_block_ttl]=600'
<?php
$ch = curl_init("https://api.gocache.com.br/v1/rules/ratelimit/seudominio.com.br");
curl_setopt($ch, CURLOPT_PUT, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("GoCache-Token: seu_token"));
$urls = array(
"match[host]=www.gocache.com.br",
"match[scheme]=http*",
"match[request_uri]=/static/js/*",
"match[request_method]=GET",
"match[request_method]=POST",
"match[remote_address]=255.255.255.0/24",
"match[cookie]=mycookie1,mycookie2,mycookie3",
"match[cookie_content]=mycookie1=123*",
"match[http_referer]=www.google.com.br",
"match[header]=Accept:*",
"match[http_user_agent]=*Mozilla*",
"match[origin_country]=US|UK",
"match[origin_continent]=SA|EU|OC",
"match[bots]=others",
"action[rate_limit_action]=block",
"action[rate_limit_amount]=300",
"action[rate_limit_period]=3600",
"action[rate_limit_block_ttl]=600"
);
curl_setopt($ch, CURLOPT_POSTFIELDS, implode("&", $urls));
$response = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
?>
Parâmetros
Campo | Opcional | Tipo | Descrição |
---|---|---|---|
metadata | ✓ | Object | |
status | ✓ | Boolean | Indica se a regra está ativa ou inativa Valor padrão: true Valores permitidos: true, false |
name | ✓ | String | Nome da regra |
notes | ✓ | String | Descrição da regra |
match | Object | Critério da regra | |
host | ✓ | String | Domínio/subdomínio de acesso do site. Ex: www.gocache.com.br |
scheme | ✓ | String | Protocolo de acesso. Valores permitidos: http, https, http* |
request_uri | ✓ | String | URI. Ex: /admin/* |
http_user_agent | ✓ | String | User agent. Suporta wildcard "(*)". Ex: "*Mozilla*" |
cookie | ✓ | String | Se possui um cookie, de uma lista de um ou mais cookies, presente. Pode ser mais de um, separado por vírgula. Suporta wildcard "(*)". Ex: wp_login,wp_test |
cookie_content | ✓ | String | Se um cookie possui um valor específico. O nome e o valor são separados igual (=). Suporta wildcard "(*)" no valor do cookie. Ex: wp_test=yes |
request_method | ✓ | Array | Método da requisição Valores permitidos: GET, POST, PUT, DELETE |
http_referer | ✓ | String | Referer da requisição |
remote_address | ✓ | String | IP ou range de IP da origem da requisição. Para ranges apenas as máscaras /32, /24 e /16 estão disponíveis |
header | ✓ | String | Se a requisiço possui um cabeçalho específico. O nome e o valor são separados por dois-pontos (:). Suporta wildcard "(*)" no valor do cabeçalho. Ex Accept:* |
origin_country | ✓ | String | País de origem Valores permitidos: "BR", "US", "CN", "RU", "..." |
origin_continent | ✓ | Array | Continente de origem Valores permitidos: "SA", "NA", "OC", "EU", "AF", "AS" |
bots | ✓ | String | Bots conhecidos Valores permitidos: "good", "others" |
action | Object | Ação | |
rate_limit_amount | ✓ | Number | A quantidade de acessos limite para ativar a regra. Valores permitidos: 10-10000 |
rate_limit_period | ✓ | Number | Define o tempo mínimo (em segundos) para que a quantidade de acessos em rate_limit_amount ativem a regra. Valores permitidos: 86400, 43200, 14400, 3600, 1800, 600, 300, 120, 60, 30, 10 |
rate_limit_block_ttl | ✓ | Number | Define o tempo mínimo (em segundos) de bloqueio após a regra ser ativada. Funciona somente se rate_limit_action for block Valores permitidos:86400, 43200, 14400, 3600, 1800, 600, 300, 120, 60 |
rate_limit_action | ✓ | String | Define modo de operação de uma regra ativa. A ação block faz o bloqueio dos acessos, challenge mostrará uma página de desafio para validar o usuário e simulate apenas contabiliza os acessos e gera eventos. Valores permitidos: "block", "challenge", "simulate" |
Exemplo de sucesso
HTTP/1.1 200 OK
{
"response": {
"msg": "Success"
}
}
<?php
if( $statusCode == 200 ) {
echo("Sucesso!\n");
$obj = json_decode($response);
echo("ID da regra criada: " . $obj->response->id);
}
?>
Criar regra
Criar regra de rate limit.
POST /v1/rules/ratelimit/{dominio}
$ curl -i https://api.gocache.com.br/v1/rules/ratelimit/seudominio.com.br \
-X POST \
-H 'GoCache-Token:seu_token' \
-d 'match[host]=www.gocache.com.br' \
-d 'match[scheme]=http*' \
-d 'match[request_uri]=/static/js/*' \
-d 'match[request_method]=GET' \
-d 'match[request_method]=POST' \
-d 'match[remote_address]=255.255.255.0/24' \
-d 'match[cookie]=mycookie1,mycookie2,mycookie3' \
-d 'match[cookie_content]=mycookie1=123*' \
-d 'match[http_referer]=www.google.com.br' \
-d 'match[header]=Accept:*' \
-d 'match[http_user_agent]=*Mozilla*' \
-d 'match[origin_country]=US|UK' \
-d 'match[origin_continent]=SA|EU|OC' \
-d 'match[bots]=others' \
\
-d 'action[rate_limit_action]=block' \
-d 'action[rate_limit_amount]=600' \
-d 'action[rate_limit_period]=3600' \
-d 'action[rate_limit_block_ttl]=600'
<?php
$ch = curl_init("https://api.gocache.com.br/v1/rules/ratelimit/seudominio.com.br");
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("GoCache-Token: seu_token"));
$urls = array(
"match[host]=www.gocache.com.br",
"match[scheme]=http*",
"match[request_uri]=/static/js/*",
"match[request_method]=GET",
"match[request_method]=POST",
"match[remote_address]=255.255.255.0/24",
"match[cookie]=mycookie1,mycookie2,mycookie3",
"match[cookie_content]=mycookie1=123*",
"match[http_referer]=www.google.com.br",
"match[header]=Accept:*",
"match[http_user_agent]=*Mozilla*",
"match[origin_country]=US|UK",
"match[origin_continent]=SA|EU|OC",
"match[bots]=others",
"action[rate_limit_action]=block",
"action[rate_limit_amount]=300",
"action[rate_limit_period]=3600",
"action[rate_limit_block_ttl]=600"
);
curl_setopt($ch, CURLOPT_POSTFIELDS, implode("&", $urls));
$response = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
?>
Parâmetros
Campo | Opcional | Tipo | Descrição |
---|---|---|---|
metadata | ✓ | Object | |
status | ✓ | Boolean | Indica se a regra está ativa ou inativa Valor padrão: true Valores permitidos: true, false |
name | ✓ | String | Nome da regra |
notes | ✓ | String | Descrição da regra |
match | Object | Critério da regra | |
host | ✓ | String | Domínio/subdomínio de acesso do site. Ex: www.gocache.com.br |
scheme | ✓ | String | Protocolo de acesso. Valores permitidos: http, https, http* |
request_uri | ✓ | String | URI. Ex: /admin/* |
http_user_agent | ✓ | String | User agent. Suporta wildcard "(*)". Ex: "*Mozilla*" |
cookie | ✓ | String | Se possui um cookie, de uma lista de um ou mais cookies, presente. Pode ser mais de um, separado por vírgula. Suporta wildcard "(*)". Ex: wp_login,wp_test |
cookie_content | ✓ | String | Se um cookie possui um valor específico. O nome e o valor são separados igual (=). Suporta wildcard "(*)" no valor do cookie. Ex: wp_test=yes |
request_method | ✓ | Array | Método da requisição Valores permitidos: GET, POST, PUT, DELETE |
http_referer | ✓ | String | Referer da requisição |
remote_address | ✓ | String | IP ou range de IP da origem da requisição. Para ranges apenas as máscaras /32, /24 e /16 estão disponíveis |
header | ✓ | String | Se a requisiço possui um cabeçalho específico. O nome e o valor são separados por dois-pontos (:). Suporta wildcard "(*)" no valor do cabeçalho. Ex Accept:* |
origin_country | ✓ | String | País de origem Valores permitidos: "BR", "US", "CN", "RU", "..." |
origin_continent | ✓ | Array | Continente de origem Valores permitidos: "SA", "NA", "OC", "EU", "AF", "AS" |
bots | ✓ | String | Bots conhecidos Valores permitidos: "good", "others" |
action | Object | Ação | |
rate_limit_amount | ✓ | Number | A quantidade de acessos limite para ativar a regra. Valores permitidos: 10-10000 |
rate_limit_period | ✓ | Number | Define o tempo mínimo (em segundos) para que a quantidade de acessos em rate_limit_amount ativem a regra. Valores permitidos: 86400, 43200, 14400, 3600, 1800, 600, 300, 120, 60, 30, 10 |
rate_limit_block_ttl | ✓ | Number | Define o tempo mínimo (em segundos) de bloqueio após a regra ser ativada. Funciona somente se rate_limit_action for block Valores permitidos:86400, 43200, 14400, 3600, 1800, 600, 300, 120, 60 |
rate_limit_action | ✓ | String | Define modo de operação de uma regra ativa. A ação block faz o bloqueio dos acessos, challenge mostrará uma página de desafio para validar o usuário e simulate apenas contabiliza os acessos e gera eventos. Valores permitidos: "block", "challenge", "simulate" |
Exemplo de sucesso
HTTP/1.1 200 OK
{
"response": {
"id": "aXBfYWRkcmVzcy1kZWZhdWx0fGlwX2FkZHJlc3N8MS4xLjEuMQ=="
}
}
<?php
if( $statusCode == 200 ) {
echo("Sucesso!\n");
$obj = json_decode($response);
echo("ID da regra criada: " . $obj->response->id);
}
?>
Listar regras
Listar regras de rate limit de um domínio.
GET /v1/rules/ratelimit/{dominio}
$ curl -i https://api.gocache.com.br/v1/rules/ratelimit/seudominio.com.br \
-X GET \
-H 'GoCache-Token:seu_token'
<?php
$ch = curl_init("https://api.gocache.com.br/v1/rules/ratelimit/seudominio.com.br");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("GoCache-Token: seu_token"));
$response = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
?>
Exemplo de sucesso
HTTP/1.1 200 OK
{
"response": {
"rules": [{
"match": {
"host": "www.gocache.com.br",
"request_method": ["POST", "DELETE"]
},
"action": {
"rate_limit_amount": "300",
"rate_limit_action": "challenge",
"rate_limit_period": "3600"
"rate_limit_block_ttl": "60",
},
"id": "aabbccddeeff",
"metadata": {
"name": "Mostrar challenge em POST e DELETE",
"status": "true"
}
},
{
"match": {
"origin_country": "US|UK"
},
"action": {
"rate_limit_action": "simulate",
"rate_limit_block_ttl": "3600",
"rate_limit_period": "3600",
"rate_limit_amount": "300",
},
"id": "gghhiijjkkll",
"metadata": {
"name": "Mostrar eventos de rate limit para Estados Unidos e UK",
"status": "false"
}
}]
}
}
<?php
if( $statusCode == 200 ) {
echo("Sucesso!\n");
$obj = json_decode($response);
foreach($obj->response->rules as $rule) {
echo("\n<br /><br />\n");
echo("Regra rate limit:" . "<br />\n");
echo("ID: " . $rule->id . "<br />\n");
foreach($rule->match as $match_type => $match_value) {
echo("Match " . $match_type . ": " . $match_value . "<br />\n");
}
foreach($rule->action as $action_type => $action_value) {
echo("Action: " . $action_type . ": " . $action_value . "<br />\n");
}
if($rule->metadata->status == "true") {
echo("Rule is enabled<br />\n");
} else {
echo("Rule is disabled<br />\n");
}
}
}
?>
Remover regra
Remover uma regra de ratelimit.
DELETE /v1/rules/ratelimit/{dominio}/{id}
$ curl -i https://api.gocache.com.br/v1/rules/ratelimit/seudominio.com.br/aabbccddeeffgghh \
-X DELETE \
-H 'GoCache-Token:seu_token'
<?php
$ch = curl_init("https://api.gocache.com.br/v1/rules/ratelimit/seudominio.com.br/aabbccddeeffgghh");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("GoCache-Token: seu_token"));
$response = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
?>
Exemplo de sucesso
HTTP/1.1 200 OK
{
"response": {
"msg": "Success"
}
}
<?php
if( $statusCode == 200 ) {
echo("Sucesso!\n");
$obj = json_decode($response);
echo($obj->response->msg);
}
?>