Olá a todos, hoje vamos falar sobre um tipo de impressão digital do navegador: os Client Rects. Já em 2016, os utilizadores começaram a discutir sobre esta impressão, pois nessa altura surgiu uma forma simples de a detetar na ferramenta de testes browserleaks. Na altura, parecia que esta impressão era fácil de modificar. Mas, na realidade, modificá-la de forma natural e indetetável é muito mais difícil do que parece. Mesmo hoje em dia, a maioria das soluções populares não consegue modificar esta impressão com alta qualidade.
Primeiro, vamos explicar o que são os Client Rects de forma simples. Os Client Rects são uma tecnologia do navegador que fornece informações sobre a posição e o tamanho de certos elementos da página web.
Estes elementos podem ser de diferentes tipos: campos de entrada de texto, botões, menus suspensos, tabelas ou outros elementos HTML.
A informação sobre o tamanho inclui a largura e a altura do elemento, medidas em píxeis.
A informação de posição inclui as coordenadas do canto superior esquerdo (left ou X; top ou Y) e do canto inferior direito (right e bottom) do elemento em relação à janela do navegador.
A informação recolhida é chamada de 'rects' (retângulos). Na imagem abaixo, podes ver mais claramente o que significam.

Agora vamos analisar em detalhe como os Client Rects são recolhidos como impressão digital, tomando como exemplo a ferramenta do browserleaks.com[https://browserleaks.com/rects].

Este site utiliza três elementos (String 1, 2, 3) para gerar a impressão. Ao abrir a página, o Browserleaks recolhe os dados de posição (x, y, right, bottom) e tamanho (largura e altura) de cada um dos elementos. Como podes ver, estes dados não são inteiros, mas números de vírgula flutuante com uma precisão de até 16 dígitos.
Uma vez recolhidos os dados necessários, o Browserleaks gera um hash para cada elemento (Hash String 1, 2, 3), e depois combina estes dados num único hash final (Full Hash), que representa a impressão digital dos Client Rects.
Este é um exemplo básico de como esta impressão é gerada. Ferramentas como https://privacycheck.sec.lrz.de/active/fp_gcr/fp_getclientrects.html usam métodos mais complexos com uma maior variedade de elementos HTML. Os sistemas antifraude modernos também usam métodos mais avançados para recolher esta impressão, compará-la com bases de dados e combiná-la com outras técnicas de rastreio e IP para identificar utilizadores e bloquear contas múltiplas.
Os sistemas antifraude podem usar esta impressão para identificar utilizadores, rastrear o seu comportamento e prevenir contas múltiplas principalmente porque estes parâmetros diferem ligeiramente entre dispositivos. Se abrires a ferramenta de deteção de Client Rects em dois computadores diferentes, embora os elementos pareçam iguais, os seus valores terão pequenas diferenças, o que gerará hashes individuais diferentes e um hash final distinto. Mesmo uma diferença mínima de uma fração de píxel pode alterar a impressão digital.
A seguir, é apresentada uma comparação das impressões digitais dos Client Rects geradas em dois dispositivos com Windows 10 usando o navegador Chrome:

Isto levanta uma questão lógica: que variáveis causam diferenças nestes parâmetros entre dispositivos? A resposta é simples: muitas! Tipo de dispositivo, versão do sistema operativo, placa gráfica, monitor, resolução, escala do sistema, tipo e versão do navegador, nível de zoom da página, configurações de fonte, etc., tudo afeta estes parâmetros e, portanto, a impressão digital.
Um exemplo com o Chrome: aceder a partir de um telemóvel dá uma impressão, a partir de um portátil outra; ligar um ecrã 2K dá uma impressão, ligar um 4K dá outra; mudar do Windows 10 para o 11 altera a impressão; mudar a escala do sistema de 100% para 125% também; usar gráficos integrados ou dedicados muda a impressão. As variáveis são quase infinitas.
Aqui são apresentados exemplos de como a impressão digital dos Client Rects muda no Chrome sobre Windows 10 com diferentes níveis de escala:

Se precisas de registar dezenas, centenas ou mesmo milhares de contas por mês, mudar constantemente de dispositivo, placa gráfica ou resolução não é uma solução viável. Por isso, o melhor é usar um navegador antideteção avançado que possa mascarar impressões digitais com alta qualidade.
Existem dois métodos principais para modificar as impressões digitais dos Client Rects: extensões do navegador e navegadores antideteção. Vamos ver as suas vantagens e desvantagens.
Usar extensões é a forma mais simples, mas tem desvantagens evidentes:
- As extensões podem ser detetadas. Os sistemas antifraude podem saber que extensões tens instaladas. Se detetarem que usas uma para modificar impressões digitais, isso é um sinal de alerta.
- A qualidade do mascaramento costuma ser baixa. Estas extensões usam técnicas simples que são facilmente detetáveis.
- Algumas não modificam, apenas bloqueiam. Em vez de alterar os Client Rects, algumas extensões simplesmente bloqueiam a informação, o que é ainda mais suspeito e pode causar erros de visualização.
As extensões servem apenas como proteção adicional, mas não são recomendadas para múltiplas contas ou uso comercial. No Firefox são populares o CanvasBlocker, Trace e Chameleon; no Chrome, o ClientRects Fingerprint Defender e o Trace.
Usar um navegador antideteção é a forma mais eficaz de modificar os Client Rects atualmente. Mas nem todos servem, é preciso procurar produtos com tecnologia madura.
A maioria das extensões ou navegadores adiciona 'ruído' (píxeis invisíveis) para alterar ligeiramente o tamanho dos elementos, mas isso pode ser facilmente detetado.
A nova geração do Linken Sphere usa um método diferente: um sistema de escala interno. Este método fornece um mascaramento perfeito em cerca de 80% das sessões.
Às vezes, basta comparar os resultados de deteção num navegador normal e num navegador antideteção para ver claramente a qualidade do mascaramento, sem necessidade de análises técnicas.

A imagem mostra como se comportam o Chrome, o Linken Sphere 2 e outro navegador antideteção nos testes do browserleaks. As distorções nos elementos são evidentes.
Recomendamos usar o CreepJS como ferramenta de deteção. Não só mostra se a impressão digital está exposta, mas também a qualidade do mascaramento. Uma vez ativado o mascaramento, abre o separador “Browser” e procura o campo “lies”.

O valor de 'lies' deve ser 'none', como na imagem à esquerda. Se for detetada a manipulação, este campo será realçado e mostrará o número de erros. Ao clicar, podes ver os detalhes. Os erros comuns são: Element.getClientRects, Range.getClientRects, DOMRect.height, DOMRectReadOnly.top, etc.
Aqui vemos um exemplo de erros quando o CreepJS deteta a manipulação dos Client Rects:

Agora comparamos os resultados do CreepJS entre o Linken Sphere 2 e outro navegador antideteção:

Esta ferramenta permite ver claramente se o mascaramento foi detetado. No caso do Linken Sphere, não foram observados problemas.
Para sermos justos, as versões anteriores do Linken Sphere não ofereciam uma proteção perfeita para esta impressão digital, por isso antes só a recomendávamos se fosse realmente necessário.
Aqui comparamos o nível de mascaramento de impressões digitais entre o Linken Sphere 2 e o Linken Sphere 9:

Em resumo: o objetivo do mascaramento de impressões digitais não é apenas ser único, mas não ser detetado. Para isso, precisas de produtos de alta qualidade com tecnologias modernas. Assim alcançarás os melhores resultados com menos esforço!