Caputchin
Entendendo a Caputchin

Instrumentação

O proof of work prova que esforço foi gasto. Ele não prova o que o gastou. Um atacante determinado com uma fazenda de navegadores reais consegue moer quebra-cabeças barato. A instrumentação é a segunda camada que fecha essa lacuna: ela prova que o trabalho aconteceu dentro de um navegador genuíno.

Como funciona

A cada requisição, a Caputchin gera um programa JavaScript novo e descartável e o roda no navegador do visitante. O programa exercita maquinário que só um navegador real tem, e reporta o que observou:

  • Sondas de API de navegador que checam que a funcionalidade genuína de navegador está presente e se comporta corretamente.
  • Cadeias de computação de operações bit a bit com inteiros.
  • Aritmética de DOM que constrói árvores de elementos, lê os valores que o motor de layout calcula para eles, e os desmonta de volta.

O truque é uma assimetria: um motor de renderização real produz as respostas certas quase de graça, enquanto um runtime headless ou roteirizado deixa essas operações como stub, as implementa incorretamente, ou as pula por velocidade. O descompasso entrega o visitante.

Content-Security-Policy

Como o programa roda eval no navegador do visitante, a página que embute seu widget precisa permitir 'unsafe-eval' na sua Content-Security-Policy de script-src. Não há fallback para isto: se 'unsafe-eval' está bloqueado, o programa não consegue rodar e a verificação falha. Se sua política não consegue permiti-lo, desligue a instrumentação para a chave na página de Segurança dela, o que remove o requisito ao custo da detecção de navegadores automatizados (o proof of work e qualquer jogo exigido ainda rodam). Veja sandbox de jogos para a política completa da página anfitriã.

Por que se emparelha com o proof of work

As duas camadas cobrem os pontos cegos uma da outra. O proof of work sozinho pode ser minerado barato por navegadores reais; a instrumentação sozinha poderia ser falsificada por um script que nunca faz o trabalho. Juntas elas elevam o custo em dois eixos independentes: o proof of work prova esforço, a instrumentação prova ambiente.

Ofuscação

Como o programa é enviado ao visitante, um atacante motivado poderia estudá-lo e tentar pré-computar as respostas. Para tornar isso mais difícil, o programa é ofuscado. A página de Segurança de uma chave expõe um Nível de ofuscação: subi-lo torna o programa mais difícil de fazer engenharia reversa, ao custo de mais CPU no servidor. Os mesmos sinais embasam a opção Bloquear navegadores automatizados, que rejeita de imediato clientes headless e WebDriver detectados.

Um limite honesto

A instrumentação não é à prova de falhas. Navegadores furtivos remendam os indícios que ela procura, e as próprias checagens notam que podem ser vencidas. Ela é uma camada entre várias, mais forte quando empilhada com o proof of work e o resto das configurações de segurança de uma chave.

Nesta página