Browser fingerprinting explicado para scrapers
O browser fingerprinting é a prática de identificar um visitante pelo conjunto de características do navegador, e não por um cookie ou uma conta. Sites usam isso para reconhecer visitantes que voltam, detectar fraudes e reconhecer automação. Se você faz scraping da web, vai encontrar essa técnica. Este guia explica o que é medido, por que uma única incoerência causa problemas e como manter um perfil consistente e bem comportado para coletar dados públicos. Também explica os limites do que o ajuste de fingerprint pode e deve fazer.
Do que um fingerprint é feito
Nenhum valor isolado identifica um navegador por si só, mas muitos valores pequenos juntos muitas vezes identificam. As entradas mais comuns incluem:
- User agent e client hints. O nome, a versão e o sistema operacional que o navegador informa.
- Geometria de tela e janela. Tamanho da tela, profundidade de cor, razão de pixels do dispositivo e tamanho da área de visualização.
- Idioma e fuso horário. O cabeçalho
Accept-Language,navigator.languagese o fuso horário que o navegador informa. - Fontes instaladas. As fontes que a página consegue detectar, que variam entre sistemas operacionais e softwares instalados.
- Saída de canvas, WebGL e áudio. Pequenas diferenças na forma como a pilha gráfica ou de áudio desenha ou processa uma imagem ou um som de teste.
- Características de rede. O handshake TLS, as configurações de HTTP/2 e a ordem dos cabeçalhos da requisição. Elas são visíveis para o servidor mesmo antes de qualquer JavaScript rodar.
Os scripts de fingerprinting combinam esses itens em um hash ou um score. Quanto mais sinais estáveis e incomuns, mais identificador é o resultado.
Por que uma incoerência se destaca
Um navegador real é internamente consistente. O sistema operacional combina com as fontes, o fuso horário combina com a configuração de idioma, e o tamanho da tela combina com o dispositivo em que roda. Scrapers muitas vezes quebram essa consistência sem perceber:
- Um user agent copiado de um navegador de desktop, enviado por um servidor sem fontes instaladas.
- Um cabeçalho
Accept-Languageem alemão em uma requisição cujo IP está em outro país, com um fuso horário que não combina com nenhum dos dois. - Um ambiente headless que informa um tamanho de janela que nenhum monitor real usa.
- Um perfil totalmente novo a cada execução, para que os cookies e o histórico nunca pareçam os de um visitante que volta.
Cada incoerência é um sinal pequeno. Juntas, elas podem levar uma requisição de "visitante comum" para "precisa de uma olhada mais atenta".
Passo 1: meça a sua própria configuração
Você pode ver o que uma página descobre sobre o seu cliente carregando uma página de teste de fingerprint que você controla, ou uma página de diagnóstico que você roda localmente. Observe os valores e pergunte se eles descrevem uma máquina coerente. Aqui está um exemplo mínimo com Playwright que imprime alguns deles:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
context = browser.new_context(locale="en-GB", timezone_id="Europe/London")
page = context.new_page()
page.goto("https://example.com") # substitua por uma página que você possui
print(page.evaluate("""() => ({
language: navigator.language,
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
platform: navigator.platform,
viewport: [innerWidth, innerHeight]
})"""))
browser.close()
Passo 2: mantenha uma identidade por perfil
O hábito mais útil é tratar cada identidade de scraping como um perfil. Dê a ela um único conjunto de características e mantenha-as durante toda a sua vida:
- Uma versão de navegador, um user agent e um sistema operacional.
- Um locale, idioma e fuso horário que combinem com a região de onde vem o tráfego.
- Uma área de visualização e uma escala de dispositivo que combinem com uma tela real.
- Um cookie jar persistente, para que o perfil se comporte como um visitante que volta.
Mudar uma dessas características a cada requisição é mais suspeito do que mantê-las estáveis. A consistência é o que faz um perfil parecer comum.
Passo 3: controle o ritmo do perfil como um visitante
O fingerprint é apenas uma entrada. Os sites também observam a velocidade com que um perfil percorre o site. Um perfil que carrega duzentas páginas de produto em um minuto não é um humano, independentemente do seu fingerprint. Espalhe as requisições, guarde os resultados em cache e pare quando uma página indicar que você deve parar. O checklist para fazer scraping sem ser bloqueado cobre o controle de ritmo com mais detalhes.
Passo 4: conheça os limites
O ajuste de fingerprint não consegue fazer um perfil automatizado parecer uma pessoa que não está ali. Sites que dependem de fingerprinting costumam combiná-lo com limites de taxa, verificações de conta e, às vezes, um captcha. Quando um captcha aparece, você precisa de um token de um solver, e não de mais ajustes de fingerprint. O tipo de captcha disponível na Scarnox hoje é o PopularCaptcha; o guia de PopularCaptcha em Python mostra a requisição. Para uma visão mais ampla dos widgets que existem, leia tipos de captcha explicados.
Mais importante ainda: a evasão de fingerprint não é uma licença para ignorar as regras de um site. Se o dono restringiu o acesso automatizado, o certo é parar, e não tornar o seu perfil mais difícil de notar. O fingerprinting também é um tema de privacidade. Alguns sites o usam para rastrear pessoas entre visitas, e isso é mais um motivo para coletar apenas o que o seu projeto precisa.
Faça scraping com responsabilidade
- Leia o
robots.txte os termos antes de fazer scraping de um site. - Use menos requisições, mais lentas, e guarde em cache o que já coletou.
- Não crie perfis para se passar por pessoas reais ou para contornar um bloqueio.
- Não armazene dados pessoais de que você não precisa e trate com cuidado os que guarda.
Onde seguir a partir daqui
Se o seu alvo estiver atrás de uma verificação em nível de navegador, comece por detecção de navegador headless, que cobre os sinais específicos de navegadores automatizados. Páginas que precisam de JavaScript para mostrar o conteúdo são tratadas em scraping de sites com JavaScript.
Comece com crédito de teste grátis, sem cartão: crie uma conta e teste o fluxo do PopularCaptcha em uma página que você possui. Para os valores atuais, veja a página de preços.