O que é a identificação por impressão digital HTTP/2?
Identificação de perfis de HTTP/2 é uma técnica de detecção na camada de conexão que identifica um cliente analisando a forma como ele constrói os quadros do protocolo HTTP/2, e não apenas o conteúdo da solicitação. Navegadores reais enviam um padrão específico e consistente de parâmetros SETTINGS, valores WINDOW_UPDATE e ordenação de pseudo-cabeçalhos. A maioria das bibliotecas HTTP e dos bots não reproduz esse padrão, tornando-os detectáveis antes mesmo de enviarem uma única URL.
Como funciona a identificação por impressão digital do HTTP/2?
Quando um cliente abre uma conexão HTTP/2, ele envia vários quadros de baixo nível antes de quaisquer dados de aplicativo. Pesquisadores da Akamai documentaram que os servidores podem identificar um cliente a partir de quatro sinais observáveis: os parâmetros do quadro SETTINGS (na forma de pares ID:valor ordenados), o incremento de WINDOW_UPDATE, os dados do quadro PRIORITY e a ordem dos pseudo-cabeçalhos (:method, :authority, :scheme, :path) (Documento técnico da Akamai — Identificação passiva de clientes HTTP/2, Black Hat EU 2017, 2017).
Todos os principais navegadores (Chrome, Firefox, Safari) geram uma impressão digital consistente e conhecida. Clientes HTTP básicos, como o curl ou o Python’s requests A biblioteca gera uma diferente, pois não reproduz a inicialização do HTTP/2 no nível do navegador. Os sistemas de detecção de bots criam tabelas de referência com impressões digitais conhecidas de navegadores e sinalizam qualquer coisa que não corresponda.
Um ambiente completo de navegador que executa JavaScript e renderiza páginas produz, por padrão, uma assinatura HTTP/2 autêntica. É por isso que uma abordagem baseada em renderização é aprovada nessa verificação, ao passo que um cliente HTTP simples ou um proxy básico não o são.
Perguntas frequentes
Os servidores leem o quadro SETTINGS (parâmetros específicos e sua ordem), o incremento de WINDOW_UPDATE, os dados de PRIORITY e a ordem dos pseudo-cabeçalhos (:method, :authority, :scheme, :path). Juntos, esses sinais formam uma assinatura digital praticamente única para cada tipo de cliente HTTP.
A análise de impressão digital TLS (JA3/JA4) examina o handshake TLS antes que quaisquer dados HTTP sejam trocados. A análise de impressão digital HTTP/2 ocorre em uma camada superior, após a abertura do túnel criptografado, por meio da leitura da estrutura dos primeiros quadros HTTP/2. Ambas as técnicas são frequentemente combinadas para a detecção de bots em camadas.
Um proxy apenas encaminha o tráfego; ele não altera o cliente HTTP que gera os quadros. Se o software por trás do proxy enviar quadros HTTP/2 que não sejam de navegador, a assinatura digital continuará sendo sinalizada. Somente um ambiente de navegador real gera a estrutura de quadros esperada de forma nativa.