1 pontos por GN⁺ 2026-06-01 | 2 comentários | Compartilhar no WhatsApp
  • A verificação de dispositivo “Verify you're human” do Cloudflare Turnstile está entrando em loop infinito em navegadores baseados em WebKitGTK desde cerca de uma semana atrás
  • A causa direta que está bloqueando o acesso a vários sites parece ser o comportamento do Cloudflare de tentar obter a impressão digital do dispositivo por meio de WebGL
  • A mensagem do Turnstile afirma que usa coleta de impressão digital do navegador para verificar se é uma pessoa, e que ferramentas de bloqueio ou aleatorização podem fazer o navegador parecer um bot
  • O WebKit vem bloqueando esse tipo de recurso há anos, e isso não parece ser uma opção de privacidade que o usuário possa desativar facilmente
  • Enquanto se supõe que haja uma exceção para o Safari, todos os navegadores WebKitGTK estão sendo bloqueados, e usuários com proteções de privacidade do Firefox também podem ser afetados

Verificação Turnstile em loop no WebKitGTK

  • A verificação de dispositivo “Verify you're human” do Cloudflare Turnstile está entrando em loop infinito em navegadores baseados em WebKitGTK desde cerca de uma semana atrás, bloqueando o acesso a vários sites
  • A causa do bloqueio de acesso parece ser o comportamento do Cloudflare de tentar obter a impressão digital do dispositivo por meio de WebGL
  • O texto informativo do Turnstile afirma que usa coleta de impressão digital do navegador para verificar se é uma pessoa
  • Ferramentas de privacidade que bloqueiam ou aleatorizam a coleta de impressão digital podem fazer o navegador parecer um bot tentando ocultar sua identidade
  • O WebKit vem bloqueando esse tipo de recurso há anos, e isso não parece ser uma função de privacidade que possa ser facilmente desativada
  • Enquanto se supõe que o Cloudflare tenha feito uma exceção para o Safari, todos os navegadores WebKitGTK acabaram ficando bloqueados

Comportamento de proteção relacionado no Firefox

2 comentários

 
GN⁺ 2026-06-02
Opiniões no Lobste.rs
  • Parece que o artigo misturou várias coisas sobre o Firefox. Falo isso como alguém que esteve na equipe que trabalhou diretamente nisso: as defesas contra fingerprinting do Firefox funcionam de várias formas
    Primeiro, o Firefox limita as informações nas strings de vendor/renderer do WebGL, incluindo as chamadas strings “unmasked”. O código de exemplo para verificar isso diretamente foi postado pelo Fatih no comentário 14. A alegação de que isso quebrou alguma coisa está completamente errada
    Segundo, o Firefox também randomiza a saída do canvas. Se você chamar toDataURL() no mesmo canvas, o valor retornado varia sutilmente entre sessões. Dá para testar isso, por exemplo, entre modo privado/modo normal ou em diferentes container tabs
    Terceiro, esse recurso e proteções recentes contra fingerprinting foram feitos com base em análises empíricas para funcionar bem sem quebrar a web. A maior parte já vem ativada por padrão, e se quiser mais, basta mudar o “Enhanced Tracking Protection” para strict nas configurações
    Quarto, o modo resistFingerprinting não aparece nas configurações e só pode ser acessado via about:config, porque é sabido que ele pode quebrar a web. Ele continua lá por causa do Tor Browser, que é um fork do Firefox, mas pessoalmente acho que as proteções do Enhanced Tracking Protection são muito melhores

  • Não estou defendendo fingerprinting, mas isso faz parte do meu trabalho atual, então tenho interesse em ferramentas de bloqueio de bots
    Pelo que entendo, o objetivo do Cloudflare com o Turnstile é criar um widget de defesa contra bots em que humanos não precisem resolver captchas. Imagino que isso funcione observando o comportamento em vários sites por meio de fingerprinting e liberando a maioria dos usuários; queria saber se esse entendimento está correto
    É viável ter um widget sem captcha e sem fingerprinting? Isso é possível em primeiro lugar? Também já ouvi dizer que não é tão difícil assim contornar o Turnstile :tm:. Todo widget de bloqueio de bots acaba sendo, no fim, segurança baseada em obscuridade?

    • Já trabalhei nessa área, mas não falo em nome do meu antigo empregador. O fingerprinting é usado para correlacionar tráfego de um mesmo agente dentro do mesmo site através de vários IPs
      Não importa tanto se a pessoa navega por vários sites; o essencial é detectar acessos repetidos ao mesmo site
      Para criar um widget sem captcha e sem fingerprinting, atestado de hardware também funciona. Mas todo mundo odeia isso. A Apple oferece atestado de hardware, e como a Cloudflare usa isso no Safari, o Safari consegue passar mesmo com randomização de canvas. Ao contrário do que esse post do blog sugere, não é que a Cloudflare tenha aberto uma exceção para o Safari
      Você também pode exigir prova de trabalho, mas aí precisa aceitar excluir muitos usuários da web que só têm celulares Android baratos, e o valor de cada ação individual do bot precisa ser baixo o suficiente para que o operador do bot não tenha incentivo para pagar esse custo computacional. Às vezes essas condições existem, mas não servem para coisas como e-commerce ou banco
      Fora isso, não há grande solução. Não conheço bem o Turnstile, mas o produto da empresa onde eu estava era definitivamente difícil de contornar em escala. Quando não era em escala, porém, a gente deliberadamente não dificultava tanto, e eu não me surpreenderia se a Cloudflare tivesse feito a mesma escolha
      O objetivo de todo widget de bloqueio de bots não é tornar bots impossíveis, e sim tornar ataques com bots a um site economicamente inviáveis. Por isso o jogo é diferente do de outras áreas de cibersegurança, e obscuridade funciona razoavelmente bem. A meta é fazer o adversário continuar arcando com custos extras ao longo do tempo
    • O fingerprinting via canvas/webgl é, na prática, um problema já resolvido para quem faz web scraping. Isso até aparece em entrevistas para vagas da área de scraping web
      A solução comum é extrair os comandos de renderização. Dá para fazer isso com um navegador modificado que despeja os comandos ou obtendo-os por desofuscação do script
      Depois, basta hospedar esse script extraído de canvas/webgl em um site seu e gerar, a partir dos visitantes, fingerprints reutilizáveis para os bots
      Esse método é bastante robusto. Esses scripts de fingerprinting quase nunca mudam, porque se mudassem, invalidariam o banco de dados de canvas → pares GPU/vendor/browser/OS
      Em resumo, este é só mais um caso em que os usuários normais ficam mais incomodados, enquanto web scrapers sérios já conhecem várias estratégias de evasão
 
GN⁺ 2026-06-01
Comentários do Hacker News
  • A Cloudflare é conhecida por usar coleta de impressão digital do navegador para detectar scrapers. Por exemplo, ela compara a impressão digital JA3 com o user agent para bloquear coisas como cURL e permitir OkHttp (cliente Android), mas isso pode ser facilmente disfarçado com pacotes como o CycleTLS [1]
    Não quero defender isso, já que “proteção contra bots” acaba bloqueando uma grande parte da internet, mas se não for usar prova de trabalho (PoW), a coleta de impressão digital pode ser um método realista, e o resultado é destruir completamente a privacidade de todos os envolvidos
    O Cromite, um fork do Chromium para Android focado em privacidade, vive tendo problemas com o Cloudflare Turnstile [2], porque a Cloudflare coleta impressões digitais de várias formas para deixar o desafio passar
    Para resolver isso, seria preciso entrar no programa Cloudflare Browser Developer, que exigia assinatura de NDA, e parece justo que o mantenedor do projeto tenha recusado
    Se quiser ver até onde a Cloudflare vai na coleta de impressão digital do navegador, basta olhar na issue [2] quais flags precisam ser desativadas para conseguir passar pelo desafio. No mínimo, acho que a Cloudflare poderia ser flexível o bastante para substituir por prova de trabalho em vez de simplesmente impedir pessoas de enviar formulários ou acessar sites
    [1]: https://github.com/Danny-Dasilva/CycleTLS
    [2]: https://github.com/uazo/cromite/issues/2365

    • A “proteção contra bots” da Cloudflare bloqueia não só uma grande parte da internet, mas também muitas pessoas. É muito preocupante a tendência de terceirizar sem pensar o controle de acesso a sites para uma única empresa
    • A proteção contra bots baseada em impressão digital é quase uma ilusão. Sinais do lado do cliente podem ser falsificados se alguém estiver um pouco acima da média, e a coleta de impressão digital é só um mecanismo de concentração de mercado para negócios de publicidade
      Dar reputação a IPs residenciais e faixas comerciais também pode ser outra forma de alcançar o resultado desejado. Isso faria os provedores tomarem muito mais cuidado com abuso de IP, mas nesse caso os negócios de DDoS dos dois lados, atacantes e defensores, também poderiam desmoronar
      Ironicamente, há muitas empresas que investem tanto em criar seus próprios bots quanto em bloquear bots de outras empresas
    • A prevenção contra scraping da Cloudflare é como um cadeado de 5 dólares, então é tudo inútil. Talvez dê para barrar um adolescente entediado, mas não um ladrão amador, e se alguém quiser raspar dados públicos, no fim vai raspar. Não tem como impedir
    • A coleta de impressão digital para “proteção contra bots” é indistinguível da coleta de impressão digital para vigilância em massa
    • Gostaria que explicassem melhor a parte de que prova de trabalho é um pesadelo ecológico. Fazendo uma conta aproximada, não parece um grande problema
      Se forem 2 segundos com carga de 5 W, isso dá 0,002 Wh, e como também precisa funcionar em smartphones, não daria para exigir uma prova de trabalho de dezenas de segundos. Mesmo com 8 bilhões de verificações por dia durante 1 ano, isso daria 8 GWh
  • Existe um motivo para privacy.resistfingerprinting não ser ativado mesmo quando se escolhe “Strict” em “Enhanced Privacy Protection”. Eu usei isso por bastante tempo, mas os sites quebravam de formas estranhas, então eu sempre precisava desligar e criar exceções
    Em certos sites, o tratamento de fuso horário ficava quebrado, e por pouco não perdi compromissos algumas vezes. Para avisar ao usuário que não é o Firefox que está quebrado, seria preciso algo como um banner permanente dizendo “se sites quebrarem, aparecerem glitches estranhos, o horário do seu computador parecer errado, a fonte ficar esquisita ou vídeos às vezes não carregarem, clique aqui para desativar a proteção contra fingerprinting”
    Curiosamente, o Turnstile quebra com resistfingerprinting, mas funciona com fingerprintingProtection. Este último parece ter levado esse tipo de situação lixo em consideração

    • Isso até pode ser aceitável como motivo para não ativar por padrão, mas é ruim como motivo para não ativar nem mesmo na configuração Strict
      Na configuração Strict, eu até espero algum nível de quebra de site, mas não espero que os caminhos de rastreamento continuem totalmente abertos. Parece enganoso
  • Eu mantenho um navegador de nicho[0], e vários usuários vêm enfrentando esse problema há algumas semanas[1]. No momento eu não trato isso como bug do navegador, mas claro que pode haver algum bug relacionado, e seria bom ter mais gente olhando; preciso de ideias e ajuda para melhorar ou mitigar a situação
    [0]: https://konform-browser.codeberg.page/
    [1]: Não sei se é a maioria ou todos. Estou dependendo de relatos de usuários e testes próprios, sem telemetria

  • “Se descobriram que você está se disfarçando, é porque você não se disfarçou bem o suficiente.”
    Essa guerra idiota contra bots vai levar ao colapso da internet e acabar transformando tudo em mais um jardim murado onde só agentes hostis ao usuário “aprovados” serão permitidos. Não caiam nesse papo furado de “scrapers de IA”. É só um meio de fabricar consentimento

    • Se bots ficam martelando o servidor, basta aplicar limitação de taxa. Se é conteúdo que você não quer que outros acessem, então não o sirva por um servidor web
  • Google e Cloudflare fizeram algum acordo para dificultar o uso de navegadores que não sejam Chrome? A pressão para usar Chrome só aumenta, e o que dá para filtrar de anúncios no Chrome só diminui

    • Isso provavelmente é um dos resultados naturais de o Chrome ser o navegador mais popular da web. A maior parte do tráfego legítimo vem dele
    • Quando saí da Cloudflare, 5 anos atrás, o único navegador aprovado para uso interno era o Chrome
    • E não para por aí: https://blog.cloudflare.com/eliminating-captchas-on-iphones-...
  • Se você esconde alguma coisa, é automaticamente classificado do lado dos “agentes que têm motivo para esconder algo”
    Para ser claro, esse é o problema central. Como uma parte tão grande da internet passa pela Cloudflare, deveria haver sinais alternativos suficientes para demonstrar, com mais força do que um sinal específico, que você não é um agente malicioso
    Só que, como quase não existem usuários com a mesma configuração dentro da base, pode demorar muito até surgir uma solução real

  • Dizem “parece que você quer esconder sua identidade”, mas eles nunca tiveram o direito de exigir isso para começar

    • Pela mesma lógica, então você também não teria direito de ver o conteúdo do site
  • Eu não conhecia privacy.resistfingerprinting, mas daqui para frente vou deixar todos os Cloudflare Turnstile falharem

    • O Turnstile funciona normalmente mesmo com isso ativado
  • A configuração privacy.resistfingerprinting é para o Tor Browser

    • No Tor Browser ela vem ativada por padrão, e nem tenho certeza se dá para desligar
      Ela também vem ativada por padrão no Konform Browser e no Mullvad Browser, que trazem muitos dos patches de privacidade e segurança do Tor Browser
  • Gosto daquele ditado ligado ao crime: se X% da população está violando uma certa lei, então o certo é abolir essa lei. Drogas recreativas são um exemplo óbvio
    Se o rendering aleatório de canvas era tratado como comportamento de bot, mas agora todo mundo que usa Firefox faz isso, então talvez a Cloudflare também devesse simplesmente “legalizar” isso, não?