Quase publiquei que o Itaú bloqueia o ChatGPT
Meu estudo tinha um número forte e um controle metodológico que parecia sólido. A verificação final derrubou os dois — e o motivo é algo que quem mede bots precisa saber: WAFs modernos não olham o User-Agent.
Eu tinha o número. Depois de ler o robots.txt de 500 dos maiores sites brasileiros, o
achado mais forte não estava no arquivo — estava em quem não deixava nem ler o arquivo:
51 domínios devolviam HTTP 403, e não eram sites pequenos. Itaú, Santander, Magazine Luiza,
iFood, OLX.
A manchete se escrevia sozinha: “os maiores sites do Brasil bloqueiam robôs de IA no firewall, e o robots.txt nem chega a importar”. Bonito, novo, e alinhado com a tese da ferramenta que eu tinha acabado de construir.
Faltava uma coisa: provar que era bloqueio a robôs, e não o site inteiro fora do ar ou recusando qualquer coisa que não fosse gente.
O controle que parecia resolver
Montei o que achei ser um teste limpo. Mesmo momento, mesma origem, mesmos sites, três User-Agents diferentes:
ConquistoBot— meu robô, honesto mas desconhecidoGPTBot— robô conhecido, o que interessa de verdadeChrome— o controle negativo: se o navegador passa e os robôs não, é bloqueio a robôs
O resultado foi exatamente o esperado: 34 domínios responderam ao Chrome e recusaram os dois robôs. Bloqueio diferencial confirmado, mesmo IP, mesmo segundo. Eu já estava escrevendo o parágrafo com os nomes das marcas.
A verificação que derrubou tudo
Antes de publicar nome de empresa, refiz na mão alguns casos com curl. E o resultado não
bateu:
itau.com.br chrome=403 gptbot=403
santander.com.br chrome=403 gptbot=403
natura.com.br chrome=403 gptbot=403
estadao.com.br chrome=200 gptbot=403 ← só este confirmou
No meu script, o “Chrome” passava. No curl, com a mesma string de User-Agent, tomava 403
igual ao robô. Se as duas coisas não podem ser verdade ao mesmo tempo, o problema estava no
meu experimento.
E estava. O meu “Chrome” nunca foi um Chrome. Era Python com uma string de User-Agent dizendo que era.
O que eu não sabia
WAFs modernos — Cloudflare, Akamai, Imperva — praticamente ignoram o User-Agent para essa decisão. Eles olham a impressão digital da conexão TLS: a ordem exata das cifras oferecidas no handshake, as extensões, a versão do protocolo, o formato dos cabeçalhos HTTP. Essa assinatura (JA3, JA4 e parentes) é característica de cada cliente, e um navegador de verdade tem uma que nenhuma biblioteca de script reproduz.
Ou seja: urllib do Python, curl e um Chrome real são três clientes distintos aos olhos do
firewall, independentemente do que digam sobre si mesmos. Meu controle negativo não
controlava nada. Ele só provava que dois scripts diferentes recebem tratamentos diferentes —
o que não diz nada sobre robôs de IA.
O que sobrou de sólido foi um único caso, o Estadão, onde a diferença apareceu com o mesmo cliente trocando só o User-Agent. Um caso não sustenta uma manchete.
O que fiz em vez disso
Cortei o achado. O estudo saiu com a base menor e
defensável — os 317 sites cujo robots.txt eu consegui ler e interpretar — e a camada de
firewall virou uma seção de limitações, explicando por que não deu para medir e o que
precisaria para medir direito.
Perdi a manchete e fiquei com um número mais chato: quatro em cada cinco sites brasileiros nunca decidiram nada sobre robôs de IA, e quem decidiu costuma bloquear demais. É menos espetacular e tem a vantagem de ser verdade.
Nenhuma marca foi citada como bloqueadora. Se eu tivesse publicado a primeira versão, teria afirmado publicamente que grandes bancos brasileiros barram o ChatGPT com base num experimento que não provava isso.
O que fica
Para quem for medir bots: só dá para simular um navegador com um navegador. Playwright, Puppeteer ou similar, com engine real. Qualquer coisa abaixo disso mede o seu script, não o site. É o que vou usar na próxima rodada.
Para quem lê estudo de marketing: desconfie de achado que depende de “simulamos um navegador”. Pergunte qual cliente foi usado. Na maior parte das vezes a resposta é uma biblioteca de HTTP, e a conclusão não se sustenta.
Para mim: o passo que salvou isso não foi esperto, foi burocrático — reverificar na mão antes de publicar nome de empresa. Estava tudo pronto para sair. Se eu tivesse confiado no meu próprio script, o erro estaria no ar com o selo de “dados originais”.
Receba os experimentos
Um e-mail quando sai ferramenta nova ou experimento com dados. Sem spam, sem "newsletter semanal" só para ocupar caixa de entrada.
Me manda um e-mail que eu te incluo na lista.