Uma folha por participante. 2 horas no relógio.
Construir CAPTCHAs que um humano resolve em até 30 segundos e que uma IA não resolve. No fim das 2h, a máquina ataca. Cada CAPTCHA que aguentar os três ataques é ponto pra você.
Três CAPTCHAs independentes, cada um na sua própria URL:
http://localhost:<sua-porta>/1 CAPTCHA 1
http://localhost:<sua-porta>/2 CAPTCHA 2
http://localhost:<sua-porta>/3 CAPTCHA 3
Não precisam parecer nada um com o outro. Não existe formato de HTML obrigatório, não existe classe, id ou atributo que você precise usar. Faça do seu jeito.
Você pode subir um servidor. Python (rodado com uv run) ou JavaScript (Node 22). Sem Docker, sem banco de dados externo, sem serviço na nuvem. Se precisar guardar estado, memória ou SQLite resolvem.
Vale a pena: se a resposta certa estiver no HTML ou no JavaScript do cliente, o ataque do agente vai encontrar ela sem nem olhar pro desafio. Guarde a resposta no servidor.
Entregue um README.md com um comando que sobe tudo, e as dependências declaradas (requirements.txt / package.json). A porta tem que sair de uma variável de ambiente PORT, senão os dois projetos colidem na hora do teste.
Só existem três. Fora disso, você é livre.
- Cada CAPTCHA numa URL própria, e abrir essa URL direto já mostra o desafio.
- Ao passar, a pessoa vai para outra tela onde aparece a palavra
SUCESSO. Pode ser redirect, pode ser troca de tela na mesma URL. O que importa é que a palavra apareça só depois de vencer — ela não pode estar em lugar nenhum da tela inicial. - Recarregar a URL dá um desafio novo e limpa o estado anterior.
Este é o coração do desafio. Você tem que barrar a IA acertando menos, não parecendo diferente.
Proibido:
- Detectar automação (
navigator.webdriver,window.chrome, flags de headless, ausência de plugins, propriedades de CDP). - Fingerprint de navegador, canvas fingerprint, checagem de user-agent.
- Telemetria de mouse, trajetória de cursor, cadência de digitação.
- Barrar por tempo de resposta ser "rápido demais".
- Reputação ou bloqueio de IP.
Permitido:
- Qualquer enigma que você inventar.
- Validação no servidor, resposta que nunca chega ao cliente.
- Desafio com prazo de validade (mínimo 60s), token de uso único.
- Limite de tentativas — desde que aceite pelo menos 10 por minuto, senão o teste não roda.
Por que essa regra existe: bloquear navigator.webdriver derruba o atacante em três linhas, sem que ele chegue perto do seu CAPTCHA. Ganharia o teste e perderia o desafio. A pergunta do vídeo é se dá pra inventar uma pergunta que humano acerta e máquina erra — não se dá pra farejar um robô.
- A resposta não pode estar no HTML nem no JS do cliente.
- Você pode usar IA pra construir. Você não pode testar seu CAPTCHA contra uma IA durante as 2 horas.
Cada um dos seus CAPTCHAs enfrenta os três ataques abaixo, em escalada, do mais burro pro mais esperto. São 5 tentativas por ataque. Antes de começar, você tem 30s pra provar que um humano passa — se nem o humano passar, aquele CAPTCHA já está fora.
| # | Ataque | O que ele enxerga |
|---|---|---|
| 1 | OCR puro | Só a maior imagem da tela, jogada no Tesseract. Sem modelo, sem API, sem raciocínio. |
| 2 | Visão | Só um screenshot da página. Sem HTML, sem DOM, sem código. |
| 3 | Agente | Tudo — seu HTML, seu JS, e execução de JavaScript dentro da sua página. |
Seu CAPTCHA só é considerado vencedor se aguentar os três. O resultado que vai ao ar é em qual deles ele caiu.
O ataque do agente é onde validação no cliente morre. Se a resposta estiver acessível de dentro do navegador, o agente vai ler ela.
Se algum dos seus CAPTCHAs também funcionar pra quem não enxerga, vale desempate.