Señales del navegador Linux armv81: límites de plataforma
Interpreta Linux armv81, User-Agent Client Hints y WebGL sin convertir la superficie del navegador en identidad de hardware.
BotBrowser Team
Quieres la documentación estructurada de Huella digital?
Este artículo forma parte de la biblioteca editorial. Para pasos de configuración, material de referencia y actualizaciones continuas, entra en la sección de docs.
Cuando una página muestra Linux armv81, la pregunta útil no es qué teléfono es. Hay que separar los campos visibles, las sugerencias opcionales que no estuvieron disponibles y las capacidades gráficas observadas. La documentación de emulación Android explica por qué BotBrowser puede presentar esta familia de plataforma, pero no convierte la cadena en un identificador de dispositivo.
TL;DR
navigator.platformes una cadena visible para la página, no un modelo de CPU ni una identidad.- User-Agent Reduction y User-Agent Client Hints exponen conjuntos distintos; una sugerencia ausente no significa una respuesta negativa.
- WebGL puede aportar capacidad corroborativa, pero un contexto o extensión ausente no demuestra otro host.
- Conserva
unknown,not-requested,not-exposedy los valores reales como estados distintos. - Un registro de coherencia documenta lo observado y lo que no se pudo comparar, sin prometer un veredicto externo.
Contents
- La cadena de plataforma es un campo
- User-Agent reducido y Client Hints
- WebGL como capacidad corroborativa
- Registro de coherencia con estados desconocidos
- Fallos y límites de interpretación
- Diagnóstico de una diferencia de plataforma
- Límite de la documentación de BotBrowser
- Conclusión práctica
La cadena de plataforma es un campo
Navigator.platform expone una cadena al contenido web. Sirve para una rama de compatibilidad amplia, pero no promete CPU, kernel, placa, emulador ni identidad. La página /docs/platform/android-emulation/ muestra el ejemplo de BotBrowser donde puede aparecer Linux armv81; describe una superficie configurada, no todos los perfiles o contextos.
| Campo | Observación | Lo que no demuestra |
|---|---|---|
navigator.platform | Cadena exacta, por ejemplo Linux armv81 | CPU física, modelo o persona |
navigator.userAgent | Texto UA reducido o heredado | Sistema operativo completo |
navigator.userAgentData | Valores de baja entropía disponibles | Que se autorizaron hints de alta entropía |
uaData.architecture | unknown si no se solicitó | Una arquitectura física |
| WebGL | Contexto, extensiones y parámetros | GPU única o veredicto |
No uses platform.includes('arm') como autorización. Para compatibilidad, combina la cadena con detección de la función real. Si cambia entre perfiles, registra qué configuración cambió en vez de inventar un cambio de dispositivo.
User-Agent reducido y Client Hints
User-Agent Reduction omite detalles de sistema y dispositivo del UA predeterminado. NavigatorUAData ofrece valores básicos y una solicitud opcional mediante getHighEntropyValues(). La guía de reducción de User-Agent trata la cabecera, mientras que la guía del límite del renderer WebGL separa capacidad gráfica e identidad.
| Observación | Interpretación | Sustitución incorrecta |
|---|---|---|
userAgentData no existe | La interfaz no está expuesta | No es Chromium |
platform está disponible | Hay un token amplio | Es el sistema completo |
architecture vuelve tras una solicitud | Se recibió ese hint en el contexto | Es la CPU física |
| La promesa falla | Solicitud no disponible o rechazada | La arquitectura no es ARM |
Guarda el estado de la solicitud junto al valor. Este helper preserva la diferencia entre no expuesto, no solicitado y error:
async function readPlatformSurface() {
const result = {
platformString: typeof navigator.platform === 'string' ? navigator.platform : 'not-exposed',
userAgent: typeof navigator.userAgent === 'string' ? navigator.userAgent : 'not-exposed',
uaData: 'not-exposed',
highEntropy: 'not-requested',
};
if (!navigator.userAgentData) return result;
result.uaData = { mobile: navigator.userAgentData.mobile, platform: navigator.userAgentData.platform };
try {
result.highEntropy = await navigator.userAgentData.getHighEntropyValues([
'architecture',
'model',
'platformVersion',
]);
} catch {
result.highEntropy = 'request-failed';
}
return result;
}
WebGL como capacidad corroborativa
WebGLRenderingContext permite crear un contexto y consultar extensiones. El resultado depende del contexto y de la política del navegador; no es un detector ARM.
| Observación | Apoya | No prueba |
|---|---|---|
| Contexto creado | La página obtuvo esa capacidad | GPU física |
getExtension() devuelve null | Extensión ausente aquí | Ausencia en todos los hosts |
| Parámetro devuelve valor | Ese parámetro está expuesto | Identidad única |
| Creación falla | Esta solicitud no pudo ejecutarse | Causa sin más datos |
Registro de coherencia con estados desconocidos
Un registro mínimo puede conservar el contexto, la cadena exacta, el resultado UA-CH y la operación WebGL. architecture: unknown significa que la hint no se obtuvo; no significa x86. Guarda también la fecha, el release y el perfil para no comparar entradas con inputs distintos.
| Clave | Ejemplo | Regla |
|---|---|---|
context | Window / secure | Indica dónde se leyó |
platformString | Linux armv81 | Conserva el texto literal |
uaData.architecture | unknown | No rellenes una ausencia |
webgl.context | webgl2 | Nombra el contexto pedido |
webgl.extension | available / absent | Nombra la extensión |
Compara primero release y contexto, luego plataforma y UA reducido, después la solicitud de hints y finalmente la operación WebGL. Una diferencia es una pista de compatibilidad, no una identidad distinta.
Fallos y límites de interpretación
Si aparece Linux armv81 pero falta una hint, conserva unknown y revisa si la solicitud se ejecutó. Si falla WebGL2, diagnostica el contexto, la política y la excepción; no cambies la plataforma. Si dos contextos difieren, compara perfil, release y modo embebido antes de comparar usuarios. Un modelo devuelto por una hint sigue siendo un valor del navegador, no una atestación física.
Diagnóstico de una diferencia de plataforma
Registra primero el contexto de la ventana y después conserva sin normalizar navigator.platform y navigator.userAgent. Anota si existe navigator.userAgentData, qué claves de baja entropía llegaron y si se solicitó una hint de alta entropía. Una interfaz ausente y una promesa rechazada son estados diferentes.
La comprobación WebGL debe registrar el contexto solicitado, el resultado de getContext() y solo la extensión o parámetro que explica la decisión de la aplicación. Si la llamada falla, conserva la clase de excepción y detén esa rama.
| Paso | Evidencia que se conserva | Condición de parada |
|---|---|---|
| Ventana segura | isSecureContext y contexto | No solicitar hints en contexto inválido |
| Plataforma | Cadena exacta de navigator.platform | No asignarla a un modelo |
| UA-CH | Interfaz, claves y resultado | Mantener desconocido lo que falte |
| WebGL | Tipo de contexto y extensión relevante | No crear un inventario de renderer |
| Comparación | Mismo release, perfil y fixture | No comparar entradas distintas |
| Resultado | Interpretación segura |
|---|---|
architecture no solicitada | No hubo petición, no una arquitectura negativa |
architecture rechazada | La política o el contexto rechazó la petición |
Linux armv81 y WebGL2 fallido | Dos observaciones separadas que requieren repetir el mismo contexto |
El registro ayuda a repetir una comprobación de compatibilidad; no identifica una persona ni un dispositivo.
Límite de la documentación de BotBrowser
La documentación de emulación Android describe la superficie de plataforma que el producto puede presentar. No garantiza cada Client Hint, un backend WebGL concreto ni el resultado de un detector externo. Una configuración es evidencia de configuración; una lectura de página es evidencia de observación. No son una tasa de éxito, anonimato o identidad.
BotBrowser puede presentar una superficie de plataforma configurada para una revisión de compatibilidad; no controla directamente cada Client Hint ni garantiza el renderer WebGL o el resultado de un detector externo.
FAQ
¿Linux armv81 demuestra Android?
No. Es una cadena visible para la página y puede ser compatible con una superficie Android, pero no prueba kernel, modelo ni dispositivo.
¿Una hint ausente significa x86?
No. Ausente, no solicitada y rechazada son estados diferentes; conserva el desconocido.
¿WebGL identifica un dispositivo ARM?
No. Describe capacidades de un contexto concreto, no una identidad física.
¿Este registro identifica a una persona o un dispositivo?
No. Conserva valores visibles y estados de disponibilidad para investigar compatibilidad, no para crear una identidad.
Sources
Para ampliar la comparación, consulta el mapa de superficies de plataforma y la guía de propiedades navigator.
Conclusión práctica
Trata Linux armv81 como un campo visible. Guarda el texto, el UA reducido, el estado de cada Client Hint y la capacidad WebGL exacta. Mantén desconocido lo que no fue devuelto y usa el registro para resolver compatibilidad, nunca para convertir una familia de plataforma en hardware, persona o veredicto.
Este artículo forma parte de la guía: ¿Qué es la huella digital del navegador?
Artículos Relacionados
WEBGL_debug_renderer_info: límites de privacidad y del renderer
IdentidadSuperficies de identidad del navegador: panorama de coherencia
Huella digitalClient Hints Fingerprinting: encabezados HTTP e identidad
Huella digitalDetección de Android WebView con CreepJS: límites
PlataformaMigración de User-Agent Reduction a Client Hints
Huella digitalRenderizador WebGL ausente: privacidad o contexto
Ejecuta la misma comprobación en BotBrowser
Carga un perfil, mantén dentro del navegador las señales que acabas de leer y confirma el resultado en tu propia máquina antes del despliegue.