¿Qué es el «fingerprinting» de HTTP/2?

Identificación de dispositivos mediante HTTP/2 Es una técnica de detección a nivel de conexión que identifica a un cliente analizando cómo construye las tramas del protocolo HTTP/2, y no solo el contenido de la solicitud. Los navegadores auténticos envían un patrón específico y coherente de parámetros SETTINGS, valores WINDOW_UPDATE y orden de los pseudoencabezados. La mayoría de las bibliotecas HTTP y los bots no reproducen ese patrón, lo que permite detectarlos antes incluso de que envíen una sola URL.

¿Cómo funciona la identificación mediante HTTP/2?

Cuando un cliente establece una conexión HTTP/2, envía varias tramas de bajo nivel antes de cualquier dato de la aplicación. Los investigadores de Akamai han documentado que los servidores pueden identificar a un cliente a partir de cuatro señales observables: los parámetros de la trama SETTINGS (en forma de pares ordenados de ID:valor), el incremento de WINDOW_UPDATE, los datos de la trama PRIORITY y el orden de las pseudo-encabezadas (:method, :authority, :scheme, :path) (Informe técnico de Akamai: «Identificación pasiva de clientes HTTP/2», Black Hat EU 2017, 2017).

Todos los navegadores principales (Chrome, Firefox, Safari) generan una huella digital coherente y conocida. Los clientes HTTP básicos, como curl o el de Python, requests La biblioteca genera una diferente, ya que no imita la inicialización de HTTP/2 a nivel del navegador. Los sistemas de detección de bots crean tablas de consulta con huellas digitales conocidas de los navegadores y marcan todo aquello que no coincida.

Un entorno de navegador completo que ejecuta JavaScript y representa páginas genera, por defecto, una huella digital auténtica de HTTP/2. Por eso, un enfoque basado en la representación supera esta comprobación, mientras que un cliente HTTP sencillo o un proxy básico no lo hacen.

Preguntas frecuentes

Los servidores leen el marco SETTINGS (parámetros específicos y su orden), el incremento de WINDOW_UPDATE, los datos de PRIORITY y el orden de las pseudo-encabezadas (:method, :authority, :scheme, :path). En conjunto, estas señales conforman una huella casi única para cada tipo de cliente HTTP.

La identificación de huellas TLS (JA3/JA4) analiza el protocolo de enlace TLS antes de que se intercambien datos HTTP. La identificación de huellas HTTP/2 se lleva a cabo un nivel más arriba, una vez abierto el túnel cifrado, mediante el análisis de la estructura de las primeras tramas HTTP/2. Ambas técnicas suelen combinarse para la detección de bots por niveles.

Un proxy se limita a redirigir el tráfico; no modifica el cliente HTTP que genera los tramas. Si el software que hay detrás del proxy envía tramas HTTP/2 que no proceden de un navegador, la huella digital seguirá siendo detectada. Solo un entorno de navegador auténtico genera de forma nativa la estructura de tramas esperada.