Execute Bot Manager em caminhos selecionados
Execute uma instância do Bot Manager só nos caminhos que precisam dela, como um login ou um checkout, com threshold, action e log tag próprios.
Você executa uma instância do Bot Manager nos caminhos que escolher, como /account/ e /checkout/, pelo Azion Console, pela Azion CLI ou pela API. Para executar uma instância em toda requisição que um firewall recebe, consulte Execute Bot Manager em toda requisição.
Bot Manager cobra cada requisição que pontua, e um caminho que nenhuma regra corresponde não é pontuado. Uma instância carrega um threshold e uma action, então caminhos de valores diferentes, como um catálogo e um checkout, exigem uma instância cada, com a sua própria regra.
- A regra compara a URI da requisição com os caminhos selecionados. Uma requisição a qualquer outro caminho não é pontuada.
- Uma requisição de imagem, folha de estilo, script ou outro asset estático nesses caminhos também não é pontuada.
- A instância pontua todas as outras requisições e grava uma linha de report marcada com o
log_tagdela. - Uma requisição cujo score atinge o threshold recebe a action da instância, e uma requisição abaixo dele segue.
Pré-requisitos
- Um firewall vinculado ao workload que serve os caminhos, com Functions ativado nas configurações principais. Consulte Primeiros passos com Bot Manager.
- Bot Manager habilitado na conta, ou Bot Manager Lite instalado pelo Azion Marketplace, e o ID da função instalada para a CLI e a API. Para instalar o Bot Manager Lite, consulte Instale o Bot Manager Lite.
- Um personal token, para a API e a CLI.
- A Azion CLI instalada e autorizada, para o procedimento pela CLI.
- Acesso ao Azion Console, para o procedimento pelo Console. Consulte Acesse o Azion Console.
Os exemplos pontuam /account/ e /checkout/ em www.example.com, com a instância checkout-bots no firewall <firewall-id>. Substitua-os pelos seus caminhos, nomes e firewall.
Crie uma instância para os caminhos
A instância recebe um único objeto JSON de argumentos, e nada o valida: uma chave escrita errado, como thresold, é armazenada, e a função nunca a lê. Escreva threshold e action em toda instância. Bot Manager Lite traz deny em 30, e Bot Manager documenta allow em Infinity, então uma instância que não define nenhum dos dois recusa requisições em uma edição e as deixa passar na outra. O objeto abaixo começa em modo de observação: action é allow, então nada é recusado, e internal_logs é 2, então toda requisição grava uma linha de report. log_tag nomeia esta instância nessas linhas.
Execute-o por 24 a 72 horas, depois defina threshold no intervalo entre os scores dos clientes que você reconhece e os dos automatizados, e escolha uma das sete actions:
action | O que a função faz no threshold |
|---|---|
allow | Deixa a requisição seguir, qualquer que seja o score |
custom_html | Retorna o HTML de custom_html, com o status code de custom_status_code |
deny | Retorna 403 com a página de erro padrão da Azion |
drop | Encerra a requisição sem resposta |
hold_connection | Mantém a conexão aberta por 1 minuto e depois descarta a requisição |
random_delay | Espera um período aleatório entre 1 e 10 segundos e depois deixa a requisição seguir |
redirect | Redireciona a requisição para o endereço de redirect_to |
Um valor fora dos sete é lido como allow, assim como custom_html e redirect sem o segundo argumento. No Bot Manager, mode definido como api pontua web services e tráfego de API que não carrega cookies. Para o threshold inicial por tipo de caminho, consulte Execute uma instância mais rigorosa do Bot Manager em um caminho de alto valor.
Para criar a instância no Azion Console:
Acesse Azion Console > Firewalls e selecione o firewall.
Em um firewall que ainda não tem nenhuma instância, o botão mostra + Function Instance.
Na seção General, insira checkout-bots como Name.
Na seção Function, selecione a função instalada do Bot Manager ou do Bot Manager Lite.
Na seção Arguments, insira o objeto.
A instância aparece na lista Functions Instances, que mostra Name, Function, Last Editor e Last Modified.
A instância existe no firewall e não pontua nada até que uma regra a execute.
Crie a regra que a executa nos caminhos
A regra tem dois blocos de critérios, e uma requisição só corresponde a ela quando corresponde aos dois. O primeiro bloco nomeia os caminhos, unidos por or: Request Uri starts with /account/, ou starts with /checkout/. O segundo bloco deixa os assets estáticos de fora, porque nenhum deles é um cliente e cada um é uma requisição que o Bot Manager cobra: Request Uri does not match esta expressão, que também corresponde a um asset pedido com query string:
O comportamento Run Function nomeia a instância, e uma regra carrega no máximo um, então uma segunda instância em outros caminhos exige uma segunda regra.
Para criar a regra no Azion Console:
Acesse Azion Console > Firewalls, selecione o firewall e depois a aba Rules Engine.
Insira checkout - score clients.
Na seção Criteria, selecione a variável Request Uri, o operador starts with e /account/ como argumento.
Selecione Or e depois Request Uri, starts with e /checkout/.
Selecione Add Criteria. No novo bloco, selecione Request Uri, does not match e a expressão acima.
Na seção Behaviors, selecione Run Function e depois checkout-bots.
A instância pontua toda requisição a /account/ e /checkout/, exceto os assets estáticos, e nenhuma requisição a outro caminho. Um formato adicionado ao seu site depois é pontuado até que você o acrescente à expressão.
Confirme que a instância pontua só os caminhos
Uma regra nova chega ao tráfego de 6 minutos e 29 segundos a 9 minutos e 18 segundos depois de salva, e uma mudança nos argumentos de uma instância, cerca de 105 segundos depois. Repita cada verificação até que as respostas concordem.
Para confirmar o que a instância pontua:
-
Envie uma requisição sem user agent a um caminho selecionado e uma a um caminho fora deles:
Shell -
Consulte o dataset
functionConsoleEventsem busca das linhas de report, com umtsRangeque cubra as requisições:Shell -
Leia as linhas. A requisição a
/checkout/tem uma, que começa com a tag da instância e carregarequest_uri,score,matched_ruleseaction:A requisição a
/não tem nenhuma linha, porque a regra não corresponde a ela.
A instância pontua os caminhos selecionados e nada mais. Leia score e matched_rules em vez de classified, que depende do threshold em vigor. Para cada campo de uma linha, consulte Logs, e para mudar a action quando a janela terminar, consulte Recuse requisições acima do threshold.