Objetivos de aprendizado
Após ler este artigo, você será capaz de:
- Separar dados passivos da requisição de medições ativas
- Acompanhar um teste de renderização da entrada ao resultado
- Explicar diferenças entre relatórios de fingerprint
Informações enviadas com a requisição
O servidor recebe as informações da conexão e os cabeçalhos incluídos em uma requisição.
Exemplos incluem um endereço IP de origem, o User-Agent e preferências de idioma. Quais cabeçalhos aparecem depende do navegador, do contexto da requisição e da configuração. Uma página não precisa desenhar uma imagem em Canvas para que o servidor receba uma requisição HTTP.
Cookies que correspondem ao escopo da requisição também podem ser enviados. São valores salvos associados ao site, portanto mantenha-os separados das informações medidas no navegador atual.
Informações lidas por meio de APIs do navegador
O JavaScript pode consultar APIs compatíveis para obter informações sobre o ambiente atual da página.
| Método | Exemplo | O que afeta o resultado |
|---|---|---|
| Ler uma propriedade do navegador | Preferências de idioma ou capacidade de toque | Suporte do navegador e configurações de privacidade |
| Medir a página | Dimensões da viewport | Tamanho da janela, zoom e layout |
| Solicitar um recurso protegido | Geolocalização | Permissão, contexto de segurança e disponibilidade |
Dados indisponíveis podem significar funcionalidade sem suporte, uma solicitação negada, bloqueio de script ou um erro de teste. É útil registrar o motivo em vez de tratar cada campo vazio como ocultação.
Informações medidas a partir do resultado
Um teste de renderização fornece uma entrada, obtém uma saída e geralmente calcula um hash.
No Canvas, a entrada pode ser texto, formas e cores. A saída são dados de pixels. Um hash facilita a comparação, mas seu significado depende da amostra, do processamento da saída e do método de hash. Dois sites podem relatar hashes diferentes porque seus testes são diferentes.
Para uma comparação útil, mantenha a página de teste e as configurações fixas. Registre a versão do navegador, execute o teste novamente e depois altere uma condição. Isso separa uma mudança no ambiente de uma mudança na medição.
Por que os métodos de coleta fazem parte de um relatório
Mostrar de onde veio um valor transforma uma longa lista de campos em algo que você pode investigar. Um cabeçalho incompatível, uma API bloqueada e uma amostra de renderização alterada pedem verificações de acompanhamento diferentes.
Interpretando o resultado
- Uma API disponível não comprova que todos os sites a utilizem.
- Permissões do navegador e proteções de privacidade podem reduzir ou alterar as observações.
- Um hash de um teste só é comparável dentro de um método de medição compatível.
Perguntas frequentes
O fingerprinting sempre precisa de JavaScript?
Não. Os servidores podem observar propriedades da requisição e da conexão sem JavaScript na página. Muitas verificações mais ricas do navegador e de renderização usam scripts.
Por que um teste mostra mais campos que outro?
Os testes podem consultar APIs diferentes, usar permissões diferentes ou aplicar regras de interpretação diferentes. Compare seus métodos e os campos nomeados.
Ler um campo significa que o site o armazena?
Coleta, transmissão e retenção são etapas separadas. Um resultado de teste visível, por si só, não descreve todas as decisões de armazenamento no servidor.