3 pontos por GN⁺ 2025-04-14 | 1 comentários | Compartilhar no WhatsApp
  • Anubis foi implantado em policytoolbox.iiep.unesco.org, da UNESCO, ganhando mais atenção como exemplo de ferramenta de combate a bots usada por grandes organizações
  • Após a confirmação de que unesco.org é o domínio oficial da UNESCO, esta implantação é vista como um caso real de uso por uma organização ligada às Nações Unidas
  • Seu uso vem se ampliando junto a implantações já conhecidas, como os arquivos da Linux Kernel Mailing List, FreeBSD SVN, SourceHut, FFmpeg, Wine e GNOME GitLab
  • O fato de organizações desse tipo adotarem o Anubis mostra que o problema de tráfego de bots na internet pode ser mais grave do que se imaginava
  • É preciso dedicar mais tempo ao Anubis e à stack ao seu redor; com patrocínio suficiente, seria possível trabalhar nisso em tempo integral e até contratar pessoas

Confirmação da implantação na UNESCO

  • Anubis foi implantado em policytoolbox.iiep.unesco.org, da UNESCO, órgão ligado às Nações Unidas
  • unesco.org consta na Wikipedia como o domínio oficial da United Nations Educational, Scientific and Cultural Organization
  • A intenção é entrar em contato com a equipe de administradores de sistemas da UNESCO para verificar se houve problemas durante a instalação e tornar o processo de instalação mais fácil

Casos conhecidos de implantação e próximos trabalhos

  • Entre os casos confirmados de implantações em grande escala estão:
    • Arquivos da Linux Kernel Mailing List
    • SVN do FreeBSD, em breve git
    • SourceHut
    • FFmpeg
    • Wine
    • UNESCO
    • The Science Olympiad Student Center
    • Ambiente de desktop Enlightenment
    • GitLab do GNOME
  • Se organizações desse porte estão usando o Anubis, o problema de tráfego de bots pode estar em um nível muito mais grave do que se estimava
  • Assim como o YouTube chegou perto, em certo momento, de uma “the inversion”, em que o tráfego de bots supera o tráfego humano, a questão que resta é quão disseminado um fenômeno semelhante está pela internet como um todo
  • É necessário dedicar tempo de verdade ao Anubis e à stack relacionada; se houver patrocínio suficiente, será possível trabalhar nisso em tempo integral e até contratar pessoas
  • Se o Anubis for útil para você, o autor pede apoio pelo Patreon

1 comentários

 
GN⁺ 2025-04-14
Comentários do Hacker News
  • Post relacionado: Anubis: um proxy de prova de trabalho para bloquear crawlers de IA (100 points, 23 days ago, 58 comments) https://news.ycombinator.com/item?id=43427679

  • É interessante que a Xe tenha transformado algo que antes era quase uma piada/postagem meio inútil em um produto realmente útil. Sempre disseram que timing é tudo
    É um pouco surpreendente que tantos sites queiram ou precisem disso. Dá para entender o problema de páginas Git lentas em alguns servidores Git muito profundos, sem cache e servidos a partir de discos lentos
    A UNESCO foi um pouco inesperada. Aquele subsite é bem grande, com milhares de documentos, mas é conteúdo estático, então deveria ser fácil de servir. Olhando melhor, era um WordPress implantado de forma relaxada em cima do Apache, sem cache, sem compactação de conteúdo e sem HTTP/2 ou HTTP/3
    Provavelmente seria fácil consertar para servir isso de forma muito barata até em uma máquina minúscula, mas, claro, exige conhecimento especializado, e conhecimento especializado ainda não é barato
    Dá até para perguntar a um LLM, mas, se você nem sabe o que perguntar, ele ainda não ajuda muito. Se você nem sabe que o site é lento para começo de conversa, por que perguntaria? Você só vai ouvir que está sendo esmagado pelo tráfego e acabar procurando um defensor furry

    • “Exige conhecimento especializado, e conhecimento especializado ainda não é barato” é verdade, mas, ao mesmo tempo, acho que há muito menos gente capaz de configurar o Anubis do que gente com experiência administrando WordPress, então isso continua me surpreendendo
      Não quero dizer que seja difícil; quero dizer que, para começar, pouca gente sequer sabe que ele existe
      Se eu tivesse que chutar, o motivo para não mexerem no WordPress talvez não seja técnico, mas sim não querer tocar em uma instância frágil, ou problemas de permissões na organização, ou o administrador já presumir que o WP está bem configurado
    • O site em que eu gostaria de aplicar isso tem muitos posts, e a busca facetada baseada em tags cria um número praticamente infinito de combinações e páginas possíveis
      Não há como fazer cache disso, e os bots nem respeitam o arquivo robots, então continuam requisitando URLs e baixando posts repetidamente em várias combinações e números. É uma verdadeira dor de cabeça
    • Scrapers de IA não só são mal implementados como também fazem invalidação de cache de propósito
      Até agora, as soluções que vi foram Cloudflare, exigir login, Anubis ou uma infraestrutura de escala absurda
      Um site disse que 60% do tráfego vinha de bots, e em sites menores essa proporção provavelmente é muito maior
    • Defesas contra bots/scraping/DDoS baseadas em prova de trabalho já existiam 10 anos atrás; não entendo por que só agora estão se espalhando
      Também me lembro de projetos que tentavam transformar a prova de trabalho em computação útil
  • Se você está confuso sobre o que é isso, é para impedir scraping por IA
    “O Anubis usa desafios de prova de trabalho para garantir que o cliente esteja usando um navegador moderno e seja capaz de calcular checksums SHA-256”
    https://anubis.techaro.lol/docs/design/how-anubis-works
    Bem legal, e talvez ajude em um ou dois dos meus projetos

    • Há alguns anos venho me perguntando se a web é para humanos ou para máquinas. Não consigo pensar em um bom motivo para bloquear bots especificamente na entrega de conteúdo
      Permitir que publiquem conteúdo ou executem ações obviamente pode ser problemático em várias situações
      Mas, na simples entrega de conteúdo, normalmente o critério para filtrar ou bloquear não é se é humano ou bot. Se um determinado cliente não está abusando do sistema, por que eu deveria me importar se ele é humano?
  • “Ele também usa o tempo como entrada. Porque, por causa da natureza da linha temporal linear, tanto o servidor quanto o solicitante sabem o que é o tempo”
    É uma frase engraçada na documentação

    • Meu Deus, eu tinha esquecido que deixei isso lá. Engraçado. Acho que vou simplesmente manter
    • Infelizmente, fora de contexto, essa afirmação está errada. O Anubis arredonda o tempo para a semana mais próxima, e, se a semana adjacente também for válida, isso provavelmente basta
      Por vários motivos, dessincronização de relógio é comum. Não dá para esperar que os 10% inferiores dos usuários estejam corretos nem no nível de dias, e até os 25% inferiores podem estar uns 5 minutos defasados
  • As imagens da página intermediária exibidas até a verificação do Anubis terminar são muito fofas. Sempre achei as ilustrações e personagens do blog da Xe bonitos
    Como observação lateral, eu também estava curioso sobre que impacto isso teria em mecanismos de busca comuns e como se diferencia da solução da Cloudflare para bloquear crawlers de IA, e isso está explicado na página do GitHub [1]
    “Se você instalar e usar isso, é muito provável que alguns mecanismos de busca não indexem seu site. Isso não é considerado um bug do Anubis, mas sim um recurso”
    “Esta é uma resposta meio nuclear, mas os bots scrapers de IA têm raspado de forma agressiva demais, então não houve muita escolha”
    “Na maioria dos casos, você não precisa usar isso, e proteger servidores de origem específicos com Cloudflare provavelmente é suficiente. Mas, em situações em que você não pode ou não quer usar Cloudflare, existe o Anubis”
    [1]: https://github.com/TecharoHQ/anubis/

    • Sim. No momento, infelizmente, ele bloqueia a indexação por buscadores. Talvez no futuro seja possível colocar IPs de mecanismos de busca em uma lista de permissões
      Só que lugares como o Google às vezes usam os mesmos IPs para IA e para indexação de busca
      Ainda assim, estão melhorando coisas como deixar passar tags Open Graph, para pelo menos permitir que prévias enriquecidas funcionem
    • Concordo que as imagens da página intermediária são fofas. Mas é horrível pensar que algum dia alguém vai decidir, de alguma forma, que elas são “problemáticas” e que acabarão sendo removidas
  • Li sobre o Anubis e é um projeto bacana. Infelizmente, como apareceu nos comentários, os visitantes do site precisam ativar o JavaScript™
    Se o site já precisa de JavaScript™ para melhorar a experiência do usuário, tudo bem, mas não é muito adequado para sites estáticos que não precisam de JS algum
    Eu criei uma solução própria que bloqueia efetivamente esses “bots ruins” no nível de rede. Usando o banco de dados da MaxMind e um WAF/proxy reverso feito por mim, bloqueio redes inteiras de várias grandes “Big Tech / Big LLM” por ASN (BGP)

    • Uma parte considerável do tráfego de bots que este texto quer abordar vem de faixas de IP residenciais comuns
      É claro que também há truques com ASN e fraude de reputação, mas é muito difícil responder a isso. Investigando os logs por alto, esses bots pareciam fazer mais ou menos uma solicitação a partir de um IP residencial específico, e é bem provável que essas faixas também sejam usadas por usuários humanos reais
      Em termos simples, há risco de bloquear tráfego legítimo. Esta solução também tem riscos, mas o risco real para a maioria dos humanos é muito menor
      Seria bom não precisar de JavaScript e poder oferecer suporte também a usuários que o desativaram, mas nunca vi um cliente ou usuário final reclamar da necessidade de ativar JavaScript
      Quem se opõe à exigência de JavaScript é uma minoria barulhenta, e a maioria deles simplesmente o ativa quando encontra um site que exige JavaScript. Mesmo então, imagino que pouquíssimos deem aquele suspiro derrotado
    • Para quem estiver curioso, a marca “JavaScript” pertence à Oracle: https://javascript.tm/
    • Como saber se isso é LLM ou VPN? Como separar tráfego de LLM com o banco de dados da MaxMind?
    • Existe algum link para a solução que você criou?
  • Gosto da ideia, mas, quando a natureza do desafio estiver melhor definida, provavelmente ela terá que descer para o nível de protocolo
    Em termos de acessibilidade, no fim das contas seria melhor que o desafio de prova de trabalho virasse algo mais próximo do TCP, em vez de ser implementado separadamente em JavaScript por cada site

    • Existe o Cloudflare PrivacyPass, que virou padrão do IETF [0], mas ele é bem estranho e a implementação de referência é um monte de bugs
      [0] https://datatracker.ietf.org/wg/privacypass/about/
    • Bastaria enviar desafios arbitrários como uma caixa-preta em SPIR-V ou MLIR. Integrar a troca desafio-resposta ao HTTP permitiria amplo suporte e aceleração de hardware flexível
      Uma solução “boa o bastante” é o SHA(seed, nonce), já amplamente usado. Se as grandes empresas de tecnologia quisessem, isso poderia ter sido facilmente integrado em camadas mais baixas da stack
  • No meu celular, resolver a detecção de bot leva 5 segundos inteiros

    • Uso o Fennec, um fork do Firefox do F-Droid, e um Pixel 9 Pro XL; na dificuldade 4 leva cerca de 8 segundos
      Pessoalmente, como não preciso fazer nada, não acho a experiência do usuário tão ruim. Com certeza prefiro isso a um CAPTCHA
    • Muito melhor do que um loop infinito de CAPTCHA da Cloudflare
    • Você deu sorte. Para mim levou 30 segundos
    • No meu caso foi cerca de 0,5 segundo, o que é interessante
  • Estou criando um protótipo que por enquanto chamo de “fonte web Enigma”. A ideia é aplicar um seed e valores de rotação personalizados por sessão de usuário às fontes web servidas e armazenadas em cache
    O objetivo é tornar o web scraping inviável por causa do custo computacional de OCR. Hoje é um jogo de gato e rato, e quero mudar um pouco o equilíbrio
    Sem uma sessão de usuário, o código-fonte HTML fica praticamente sem sentido; e, se o cache de assets desaparecer com um comportamento parecido com OTP, a página web também se torna ilegível
    Isso permitiria criar um CAPTCHA em que o usuário ajusta uma janela de seed local até conseguir ler uma determinada palavra. Por exemplo: “mova o controle deslizante até que a palavra Foxtrott fique legível”
    Gostaria muito de ouvir a opinião da Xe. Será que podemos unir forças?
    A stack técnica é Go, porque foi a única linguagem em que foi fácil modificar diretamente arquivos de fonte web sem problemas

    • Mesmo deixando de lado os problemas óbvios de acessibilidade, isso não seria, no máximo, uma cifra de substituição? Com um corpus suficiente, parece que a criptoanálise ficaria muito mais fácil
    • O problema não é o fato de o site ser raspado em si, mas o volume de requisições que derruba a infraestrutura ou aumenta os custos. Mecanismos de busca fazem isso há mais de 30 anos
      Quebrar o texto não vai ajudar. Eles vão continuar batendo de qualquer jeito. Olhando o padrão de tráfego, quem fez esses bots simplesmente... <https://www.youtube.com/watch?v=ulIOrQasR18>
      Quanto a “quero ouvir a opinião da Xe. Será que podemos unir forças?”, pelo que entendi, mais do que adicionar funcionalidades, parece que o projeto precisa de ajuda para se tornar mais sustentável no futuro próximo e no futuro distante. O Anubis já parece funcionar muito bem
  • Com certeza funciona bem para bloquear usuários que desativaram o JavaScript

    • Sim. Como tentativa de torná-lo mais atraente para mais pessoas, é realmente fraco. A menos que lancem uma versão nojs, ele não é diferente dos scrapers de “IA” no sentido de quebrar a web