O touch fingerprinting (impressão digital por toque) é uma técnica de rastreamento do navegador que lê navigator.maxTouchPoints e as APIs de eventos de toque para determinar se você está em um smartphone, tablet, laptop com toque ou desktop tradicional — silenciosamente, sem cookies e em uma única linha de JavaScript. Você pode ver o que seu próprio dispositivo expõe agora mesmo no whatsmy.fyi.
Resumo
O touch fingerprinting usa navigator.maxTouchPoints, o construtor TouchEvent e a media query CSS pointer para classificar o tipo do seu dispositivo. Um desktop sem touchscreen retorna maxTouchPoints = 0; um iPhone retorna 5; um Surface Pro retorna 10. Combinado com dimensões de tela e razão de pixels, esse sinal separa de forma confiável o tráfego móvel do desktop e contribui com entropia mensurável para uma impressão digital completa do navegador.
O que é Touch Fingerprinting?
O touch fingerprinting é um subconjunto do browser fingerprinting que tem como alvo o hardware de toque do seu dispositivo. Todo navegador expõe um conjunto de APIs JavaScript descrevendo se o dispositivo tem uma tela sensível ao toque e, se sim, quantos pontos de toque simultâneos suporta. Essas APIs foram projetadas para ajudar desenvolvedores a construir interfaces adaptativas — mas também servem como um sinal de classificação de tipo de dispositivo que não requer consentimento, armazenamento ou interação do usuário.
A propriedade principal envolvida é navigator.maxTouchPoints, um inteiro somente leitura introduzido na especificação W3C Pointer Events. Retorna o número máximo de contatos de toque que o dispositivo pode rastrear simultaneamente. Zero significa sem touchscreen. Cinco ou dez indica um smartphone ou tablet. Laptops com toque e conversíveis 2-em-1 tipicamente reportam 10. Como esse valor reflete hardware físico, é estável entre sessões, resistente à limpeza de dados de navegação e idêntico no modo incógnito.
Como Funciona o Touch Fingerprinting?
Um script de fingerprinting lê três sinais complementares para construir seu perfil de tipo de dispositivo. Cada um pode ser lido em menos de um milissegundo sem permissão do usuário.
Sinal 1 — navigator.maxTouchPoints
Este é o sinal mais direto. Por especificação da W3C Pointer Events, o valor deve refletir o máximo de hardware — não pode ser definido por software ou alterado limpando dados de navegação. Um dispositivo com um digitalizador multi-touch de 10 pontos sempre retorna 10.
Sinal 2 — Verificação do Construtor TouchEvent
Código de fingerprinting mais antigo verifica a existência do construtor TouchEvent no escopo global. Em dispositivos sem toque, esse construtor não existe. Navegadores baseados em Chromium expõem o construtor mesmo em desktops sem toque para compatibilidade — mas o Firefox só o expõe em dispositivos com toque real. Essa assimetria é ela própria um sinal de fingerprinting do motor do navegador.
Sinal 3 — Media Query CSS pointer via JavaScript
O recurso de media CSS pointer, legível via window.matchMedia, distingue entre ponteiros grosseiros (dedos numa tela sensível ao toque), ponteiros finos (um mouse ou caneta) e nenhum ponteiro. Ao contrário de maxTouchPoints, essa query reflete o dispositivo de entrada primário em vez da presença de hardware de toque.
// Touch fingerprinting: reading all three signals
function getTouchFingerprint() {
// Signal 1: maximum simultaneous touch points (hardware constant)
const maxTouchPoints = navigator.maxTouchPoints ?? 0;
// Signal 2: legacy TouchEvent constructor presence check
const hasTouchEvents = 'TouchEvent' in window;
// Signal 3: CSS pointer media query via matchMedia
const pointerType = window.matchMedia('(pointer: coarse)').matches
? 'coarse' // finger / touchscreen
: window.matchMedia('(pointer: fine)').matches
? 'fine' // mouse / stylus
: 'none'; // no pointer device
// Device classification based on combined signals
const isTouch = maxTouchPoints > 0;
const isMobile = isTouch && window.screen.width <= 768;
const isTablet = isTouch && window.screen.width > 768 && window.screen.width <= 1366;
return {
maxTouchPoints, // 0 = desktop, 5 = smartphone, 10 = tablet / 2-in-1
hasTouchEvents,
pointerType,
isTouch,
isMobile,
isTablet,
};
}
// Example outputs:
// MacBook Pro (no touchscreen) → { maxTouchPoints: 0, pointerType: "fine", isTouch: false }
// iPhone 15 Pro → { maxTouchPoints: 5, pointerType: "coarse", isMobile: true }
// Surface Pro 11 → { maxTouchPoints: 10, pointerType: "fine", isTablet: true }
// iPad Air → { maxTouchPoints: 5, pointerType: "coarse", isTablet: true }Valores de maxTouchPoints por Tipo de Dispositivo
| Tipo de Dispositivo | maxTouchPoints | media query pointer | TouchEvent in window |
|---|---|---|---|
| PC / Mac desktop (sem touchscreen) | 0 | fine | false (Gecko) / true (Chromium) |
| iPhone (todos os modelos modernos) | 5 | coarse | true |
| Smartphone Android | 5 ou 10 | coarse | true |
| iPad / tablet Android | 5 ou 10 | coarse | true |
| Microsoft Surface / laptop com toque | 10 | fine (quando mouse usado) | true (Chromium) |
| Chromebook (sem toque) | 0 | fine | false |
Quem Usa Touch Fingerprinting no Mundo Real?
Redes de Publicidade e Analytics
Plataformas de ad-tech leem maxTouchPoints para segmentar audiências por tipo de dispositivo para precificação de lances e seleção de criativos de anúncio. O inventário mobile e tablet tem CPMs diferentes do desktop. O mesmo sinal que permite a um desenvolvedor construir um menu responsivo é reutilizado para atribuir seu dispositivo a um bucket de preço sem seu conhecimento.
Detecção de Fraudes e Mitigação de Bots
Plataformas de segurança como a Fingerprint.com e DataDome usam sinais de toque como verificação de consistência. Um bot que alega ser um navegador móvel no seu user agent enquanto reporta maxTouchPoints = 0é uma contradição que revela automação.
Aplicação de Paywall e Restrição Geográfica
Alguns editores servem versões de conteúdo diferentes para usuários móveis versus desktop. Um usuário que limpa cookies e recarrega pode perder sua sessão, mas o valor de maxTouchPoints do dispositivo persiste inalterado. Combinado com resolução de tela e timezone, dados de toque ajudam a re-identificar visitantes que retornam após excluir cookies.
O Touch Fingerprinting é um Risco de Privacidade?
O touch fingerprinting é menos um risco direto de privacidade do que o canvas fingerprinting ou o áudio fingerprinting porque produz dados de classificação de baixa entropia, não um identificador único. Um valor de 5 para maxTouchPoints é compartilhado por todo iPhone. O risco se materializa quando os dados de toque são combinados com outros sinais: resolução de tela, razão de pixels do dispositivo, concorrência de hardware, timezone e dados do renderer WebGL.
Como se Proteger do Touch Fingerprinting
- Brave Browser (recomendado para uso diário): O Farbling do Brave randomiza uma variedade de sinais de fingerprinting por sessão e por site. Embora o Brave não randomize atualmente
maxTouchPointsdiretamente, sua randomização de impressão digital mais ampla torna a impressão digital combinada menos estável e menos útil para rastreamento entre sites. - Firefox com
privacy.resistFingerprinting: Quando esta flag está ativada, o Firefox reportamaxTouchPoints = 0e suprime as APIs de eventos de toque independentemente do seu hardware. - Tor Browser (proteção mais forte): O Tor Browser herda o
privacy.resistFingerprintingdo Firefox e normaliza a superfície completa da impressão digital, incluindo dados de toque. Todos os usuários do Tor Browser parecem ter perfis de toque idênticos. - As VPNs não ajudam aqui: Uma VPN roteia seu tráfego através de um endereço IP diferente, mas não modifica as respostas das APIs do navegador. Seu valor de
navigator.maxTouchPointsé idêntico com ou sem VPN ativa. Verifique o que sua impressão digital completa do navegador expõe no whatsmy.fyi.
Perguntas Frequentes
O que navigator.maxTouchPoints retorna em um desktop?
Em um desktop ou laptop padrão sem touchscreen, navigator.maxTouchPoints retorna 0. Esse valor é uma constante de hardware — reflete a ausência de um digitalizador de toque no dispositivo. Limpar o histórico do navegador, usar o modo incógnito ou trocar de rede não altera esse valor.
O modo incógnito oculta minha impressão digital de toque?
Não. Os modos de navegação incógnita e privada impedem que seu navegador salve histórico, cookies e dados de formulário no disco. Não modificam os valores retornados pelas APIs voltadas para hardware. Seu valor de navigator.maxTouchPoints, dimensões de tela e tipo de ponteiro são idênticos em uma janela incógnita e em uma sessão de navegação normal.
O touch fingerprinting pode me identificar individualmente?
Não sozinho. maxTouchPoints é um sinal categórico — a maioria dos dispositivos se enquadra em um de alguns valores (0, 5 ou 10). Milhões de dispositivos compartilham cada valor. O touch fingerprinting se torna um risco de privacidade quando é combinado com outros sinais como resolução de tela, razão de pixels do dispositivo, dados de renderer WebGL e áudio fingerprinting.
Artigos Relacionados
- O que é Browser Fingerprinting? Como Sites Rastreiam Você Sem Cookies — o guia completo de todos os sinais de fingerprinting combinados
- O que é Screen Fingerprinting? Como o Tamanho da Tela Rastreia Você Online — como as dimensões da tela se combinam com dados de toque para classificação de dispositivo
- O que é Canvas Fingerprinting? Como Sites Rastreiam Você Sem Cookies — como diferenças de renderização de GPU produzem um identificador único de dispositivo
- O que é Áudio Fingerprinting? Como o AudioContext Rastreia Seu Navegador — um sinal companheiro de alta entropia frequentemente implantado junto com dados de toque
- O que é CPU Fingerprinting? Como a Concorrência de Hardware Rastreia Seu Dispositivo — como navigator.hardwareConcurrency expõe os specs de hardware do seu processador



