O que é Touch Fingerprinting? Como Pontos de Toque Rastreiam Seu Dispositivo
Navegador & Dispositivo

O que é Touch Fingerprinting? Como Pontos de Toque Rastreiam Seu Dispositivo

O touch fingerprinting lê navigator.maxTouchPoints e APIs de eventos de toque para classificar seu tipo de dispositivo — diferenciando smartphones, tablets, laptops com toque e desktops sem permissão.

7 min de leitura·

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 DispositivomaxTouchPointsmedia query pointerTouchEvent in window
PC / Mac desktop (sem touchscreen)0finefalse (Gecko) / true (Chromium)
iPhone (todos os modelos modernos)5coarsetrue
Smartphone Android5 ou 10coarsetrue
iPad / tablet Android5 ou 10coarsetrue
Microsoft Surface / laptop com toque10fine (quando mouse usado)true (Chromium)
Chromebook (sem toque)0finefalse

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 maxTouchPoints diretamente, 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 reporta maxTouchPoints = 0 e suprime as APIs de eventos de toque independentemente do seu hardware.
  • Tor Browser (proteção mais forte): O Tor Browser herda o privacy.resistFingerprinting do 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

Verifique seu endereço IP, localização e pontuação de privacidade — instantaneamente.

Zero logs. Zero rastreamento. Zero APIs externas.

Executar a verificação agora →

Artigos relacionados

O que é Touch Fingerprinting? Como Pontos de Toque Rastreiam Seu Dispositivo | whatsmy.fyi