← Todos os textos
Privacidade26 de outubro de 20265 min de leitura

Como contar visitantes sem cookie e sem guardar o IP

Eu vendo sites sem mensalidade e queria que cada cliente soubesse quantas pessoas visitam o site dele. As ferramentas prontas ou custavam por mês, ou exigiam banner de cookies, ou limitavam o número de sites. Então criei o Movimento. A parte mais interessante dele é como ele conta visitantes únicos sem identificar ninguém.

O problema de contar gente

Contar "visitas" é fácil: cada acesso soma um. Contar pessoas é mais difícil, porque a mesma pessoa pode voltar ao site cinco vezes no mesmo dia. O jeito tradicional é gravar um cookie no navegador e reconhecer quem volta. Só que cookie pede aviso, consentimento e dá trabalho ao dono do site.

A outra saída é guardar o endereço IP, mas o IP é um dado pessoal e eu não quero guardá-lo em lugar nenhum.

A ideia: um código que muda todo dia

Em vez de guardar o IP, o Movimento guarda só um hash dele, misturado com outras informações e com um segredo do dia:

visitante = sha256(sal_do_dia + ip + user_agent + site)

E o sal_do_dia também não é fixo: ele é calculado como HMAC(segredo, data). O resultado é que:

  • O IP nunca é gravado. Só o hash vai pro banco.
  • No mesmo dia, a mesma pessoa gera o mesmo código, então eu consigo contar ela uma vez só.
  • No dia seguinte o sal muda, e o código dela muda junto. Não dá pra seguir ninguém de um dia pro outro.

É a mesma técnica que ferramentas como o Plausible e o Pirsch usam.

O que se perde (e por que tudo bem)

Esse método tem um custo: quem visita o site na segunda e na terça é contado como duas pessoas diferentes. Para o dono de um site de uma página, isso não atrapalha. O que ele quer saber é quantas pessoas chegaram naquele dia, de onde vieram e quantas clicaram no WhatsApp, e isso o hash responde bem.

Os detalhes que fazem o número bater

Contar direito pede alguns cuidados além do hash:

  • Robôs: o Movimento filtra pelo user-agent e também pela rede de origem da visita (provedor de internet ou servidor de nuvem). Essa informação é usada na hora e não é guardada.
  • Recarregar a página: a mesma página aberta de novo em menos de 10 segundos não conta de novo.
  • Fuso: as datas são gravadas em UTC e mostradas no fuso de Fortaleza, para o "hoje" do painel ser o "hoje" do cliente.

O que eu aprendi

Privacidade e boa medição não precisam brigar. Com um hash que muda todo dia, eu consigo números úteis para o dono do negócio sem cookie, sem banner e sem guardar nada que identifique quem visitou. E o custo de infraestrutura ficou em R$ 0 por mês, porque tudo roda no plano grátis do Cloudflare.

Quer ver como foi feito?

O Movimento tem uma página com o case completo, com as alternativas que avaliei, como validei os números e as decisões que tomei.

Escrito por Henry Kauã, desenvolvedor em Fortaleza.