Señales Math de CreepJS: leer los campos
Sigue los resultados Math de CreepJS, las referencias de navegador, las llamadas repetidas y el estado lie sin confundir etiquetas de código con pruebas en vivo.
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.
Un informe Math de CreepJS contiene valores que responden a preguntas distintas. El resultado numérico procede de una expresión. Los booleanos de familia de navegador comparan ese resultado con constantes incluidas en el código fuente fijado. Una comprobación de llamadas repetidas pregunta si una invocación se mantiene estable, mientras que lieProps aporta una observación heredada. Leer todo como una puntuación convierte metadatos del código en una afirmación que el recolector no hace. BotBrowser permite configurar superficies del perfil y comparar los valores declarados; no controla la etiqueta que una versión externa de CreepJS asigna a un resultado.
TL;DR
src/math/index.tsde la revisión fijada ejecuta funciones seleccionadas y guarda cada salida bajo la expresión correspondiente.chrome,firefox,torBrowserysafaricomparan con referencias declaradas en el código; no miden la familia del navegador actual.- Una primera pasada repite algunas llamadas y marca diferencias; esto es independiente del estado heredado
lieProps.Math.*. - Un valor ausente o bloqueado identifica una ruta de salida, no a una persona, un dispositivo ni un veredicto de bot.
- Una revisión reproducible necesita la revisión, el archivo y las líneas exactas.
Contents
- Fuente fijada y entradas
- Cuatro tipos de salida Math
- Estados ausentes, bloqueados y heredados
- Matriz de procedencia
- FAQ: campos Math de CreepJS
- Practical conclusion
Fuente fijada y entradas
La revisión pública pertinente es 10aa6724cd33a1015db1574211890518cd04f0cc. En src/math/index.ts, la lista check nombra 23 métodos Math, entre ellos acos, cos, hypot, sin, sqrt y pow. El primer bucle consulta lieProps[Math.<method>], llama a la función con argumentos fijos y compara ambas ejecuciones. Dos valores NaN cuentan como coincidentes; los demás se comparan mediante igualdad. Una diferencia activa el estado local lied y llama al registrador de incidencias.
La segunda tabla tiene otro propósito. Contiene expresiones como cos(Math.PI) y pow(Math.SQRT2, -100). Cada fila guarda un valor esperado y, a veces, valores opcionales asociados con chrome, firefox, torBrowser y safari. Por tanto, el código declara una correspondencia entre expresiones y posiciones de referencia. No afirma que una solicitud en vivo se haya ejecutado en cada navegador ni registra el sistema operativo o la revisión que originó cada constante.
La tabla tampoco es una muestra uniforme de todas las funciones. Algunos métodos tienen una fila y otros varias. cos incluye magnitudes grandes y constantes como Math.E y Math.LN2; hypot incluye llamadas de dos y seis argumentos; pow usa varias bases con exponente -100. Agruparlas bajo una sola “puntuación Math” elimina la forma de entrada que define cada comparación. La expresión forma parte de la evidencia, no es solo una etiqueta.
La pasada de repetición y la tabla de referencias usan argumentos distintos. La primera lista escoge una entrada pequeña para cada método; la segunda puede usar otras constantes y magnitudes. Por ejemplo, la repetición inicial de cos usa 1e308, mientras que sus referencias incluyen 0.123, Math.PI y otras expresiones. Aprobar la comprobación de repetición no demuestra que otra expresión coincida con una constante guardada. Mantén ambas pruebas en filas separadas.
La especificación del objeto Math de ECMAScript sigue siendo la autoridad para la semántica del lenguaje. No convierte las referencias de CreepJS en una garantía de compatibilidad actual. Un valor puede respetar la especificación y no coincidir con una constante histórica por diferencias de entrada, implementación o redondeo. Conserva la expresión, los argumentos y la revisión de origen junto a toda interpretación.
Cuatro tipos de salida Math
El objeto data usa el texto de la expresión como clave y attempt() produce su valor. En una fila normal, result contiene el cálculo y los cuatro nombres de navegador son booleanos. Responden “¿coincide el resultado con esta referencia del código?”, no “¿qué navegador está usando la persona?”. Coincidir con varias referencias, con ninguna o con una referencia de procedencia desconocida no permite afirmar una identidad de navegador.
La comprobación local de igualdad es una señal aparte. Antes de procesar la tabla, ejecuta dos veces algunos métodos con los mismos argumentos. Una diferencia puede indicar inestabilidad para esa comprobación, pero el código no explica la causa: podría ser una función alterada, un fallo transitorio o un problema de entrada. Registra el método, los argumentos, los dos valores disponibles y la revisión fijada. Un único booleano lied pierde esos detalles.
El estado heredado de incidencias Math se lee de lieProps, mantenido por el módulo lies. Ese código también incluye una búsqueda genérica de métodos Math. Las rutas se relacionan, pero no son el mismo productor: separa “el método ya estaba marcado”, “las dos llamadas difieren” y “el resultado coincide con una referencia”. La guía de señales y limitaciones de CreepJS explica los grupos generales, no sustituye este recorrido campo por campo.
| Campo o ruta | Productor en la fuente fijada | Lectura segura | No demuestra |
|---|---|---|---|
result | Math[fn] o la expresión polyfill | Valor para la entrada indicada | Identidad de dispositivo o persona |
chrome / firefox / torBrowser / safari | Igualdad con una referencia de la fila | Comparación con una etiqueta del código | Familia o versión actual |
lied local | lieProps y diferencia entre llamadas | Se registró una incidencia heredada o local | Por qué cambió un valor o quién lo cambió |
undefined de attempt | La función lanzó una excepción o no estaba disponible | La llamada no devolvió valor | La causa exacta |
| Resultado de módulo ausente | Error exterior del recolector | El módulo no devolvió el objeto normal | Que falten todas las API Math |
Por qué importan las filas individuales
La lista contiene 23 métodos: acos, acosh, asin, asinh, atan, atanh, atan2, cbrt, cos, cosh, expm1, exp, hypot, log, log1p, log10, sin, sinh, sqrt, tan, tanh y pow. El nombre permite relacionar una diferencia observada con la operación y sus argumentos exactos.
Los argumentos muestran qué borde numérico ejercita cada fila. cos(1e308) usa una entrada muy grande; atanh(0.5) una interior; atan2(1e-310, 2) incluye un componente diminuto; y hypot(1, 2, 3, 4, 5, 6) proporciona más de dos operandos. Estos ejemplos no explican por qué una implementación obtiene un valor. Solo identifican los casos de esa revisión. Un diagnóstico requiere una reproducción controlada con la misma compilación y contexto de aplicación.
Algunas constantes están muy próximas, pero no son iguales. La referencia listada para atan(2) es 1.1071487177940904, mientras que otra opción es 1.1071487177940906. La diferencia ocupa los últimos dígitos representables; no es una tolerancia universal. La operación de ECMAScript y el requisito de la aplicación determinan si conviene igualdad exacta, tolerancia o una aserción de dominio.
Una posición NaN en una matriz de referencias indica que el código no ofrece un valor numérico para esa columna en esa fila; no es un NaN observado en una ejecución real de Firefox, Tor Browser o Safari. El comparador trata la referencia falsa o ausente como no coincidente. Escribe “sin referencia de código para esta fila”, no “este navegador devolvió NaN”.
El HTML puede mostrar un hash abreviado y el estado lied, pero el hash es una decisión de presentación, no una prueba criptográfica de que dos sesiones pertenecen a la misma persona. Además, puede ocultar qué expresión difiere. Para soporte, conserva la revisión y la fila mínima relevante, no una cadena completa de huella.
El artículo sobre consistencia Math entre navegadores explica las reglas de ECMAScript y las tolerancias de una aplicación. Los grupos de señales y las incidencias de CreepJS cubren la lectura general de los grupos. Esta página añade la procedencia específica de cada campo Math y no sustituye ninguno de esos objetivos.
Estados ausentes, bloqueados y heredados
attempt() convierte una excepción de la función en un valor no disponible. Por eso, una celda undefined puede corresponder a una operación que lanzó una excepción, un método no disponible u otro límite de la llamada. La celda visible no conserva la categoría de excepción. No la completes con una etiqueta de navegador supuesta; conserva método y línea, y clasifica la causa solo con evidencia adicional.
getMaths() tiene además un try/catch exterior. Si un error escapa de la fila, el módulo registra una prueba fallida y no devuelve el objeto normal. No equivale a que falte una fila. Una tarjeta bloqueada puede representar ausencia del módulo, campo ausente o una decisión de presentación heredada. Mantén esos estados distintos.
Las etiquetas de navegador son datos históricos de la fuente. Sirven para explicar qué compara el recolector, pero no son un benchmark. Una versión Chromium actual, una configuración de perfil o una revisión distinta de CreepJS pueden producir otro resultado compatible con la especificación. La guía de consistencia Math entre navegadores trata tolerancias y reglas por operación para aplicaciones; debe consultarse antes de llamar a una diferencia numérica un fallo de compatibilidad.
También importa cómo se construye el mapa de expresiones. Cada clave se forma con la etiqueta legible que acompaña a la función y sus argumentos. attempt() invoca la función y el comparador contrasta el resultado con las columnas de referencia. Si una edición cambia solo la etiqueta, una diferencia posterior puede parecer una fila eliminada y otra nueva. Guarda clave y revisión para distinguir un cambio de nombre de un cambio matemático.
Las entradas fijas no son una muestra aleatoria de cargas de trabajo reales. Incluyen constantes, magnitudes altas y bajas y expresiones compuestas elegidas por quien mantiene el recolector. No describen la distribución de una aplicación, su precisión requerida, frecuencia de llamadas ni efecto visible para usuarios. Para diagnosticar compatibilidad, reduce el caso a una entrada mínima que reproduzca un defecto real y comprueba la cláusula de ECMAScript pertinente. La lista detectora explica su código, no reemplaza pruebas de aceptación de una aplicación.
Además, los valores de referencia están en una revisión, pero la compilación de navegador y el entorno que los originaron no se registran junto a cada fila. Otra revisión podría cambiar constantes, añadir expresiones o modificar la comparación. Antes de comparar capturas de fechas distintas, revisa también el código del recolector y sus auxiliares; si no, una actualización del detector puede parecer un cambio de navegador. La revisión de fuente es un campo obligatorio.
Los nombres chrome, firefox, torBrowser y safari tampoco identifican compilador, biblioteca matemática, sistema operativo, arquitectura ni versión exacta. Si el análisis necesita esos datos, deben documentarse por separado. No infieras procedencia no registrada ni combines etiquetas con datos de cuenta para afirmar identidad. Si falta procedencia, el resultado correcto es “no especificado por esta fuente”.
Matriz de procedencia
Usa esta matriz al revisar un informe. Puede copiarse a una incidencia sin almacenar una huella completa.
| Fila | Registra | Regla de decisión |
|---|---|---|
| Identidad de fuente | commit 10aa6724…, archivo y líneas | Rechaza una interpretación sin productor identificable |
| Entrada | etiqueta de expresión y argumentos | Compara solo entradas y opciones iguales |
| Salida calculada | result, undefined o módulo ausente | Mantén “desconocido” en lugar de inferir una causa |
| Comparación | booleanos de familia verdaderos | Describe coincidencia con una referencia, nunca identidad |
| Igualdad | método y coincidencia entre llamadas | Separa esta señal de las referencias |
Procedencia de lied | lieProps heredado o diferencia local | Nombra la ruta; no la conviertas en puntuación |
| Conservación | identificador de incidencia y fecha de borrado | Guarda solo evidencia necesaria para decidir soporte |
Mantén separados los registros de rutas distintas del código. La fila de referencia para cos(Math.PI) es result=-1 con los booleanos de familia correspondientes en la línea 86; no incluye un resultado de repetición. La comprobación de llamadas repetidas usa cos(1e308) en las líneas 42-49, así que registra por separado los resultados de ambas llamadas antes de derivar repeatMatch. lieProps.Math contiene claves de incidencias presentes; no tiene la forma de origen Math.cos=false, y la ausencia no es un false registrado. Ninguna fila identifica el navegador del visitante ni predice la decisión de un servicio externo.
Si dos informes difieren, compara primero el mismo commit; después la misma clave y argumentos; luego el result; después los booleanos de referencia; por último comprueba si lied fue heredado o activado por llamadas repetidas. Si cambia commit o entrada, no es una comparación controlada. Si coinciden fuente y entrada, una diferencia sigue siendo una observación numérica hasta que una especificación o requisito de aplicación explique su importancia.
Este orden evita dos errores de categoría. Un booleano de referencia no es un voto independiente: deriva del mismo resultado. lied tampoco es otra referencia numérica: lee estado distinto o compara ejecuciones. Contarlos como tres confirmaciones independientes exagera la evidencia. El artefacto debe conservar relaciones de dependencia además de valores.
Para reproducir, basta con la revisión pública, línea, expresión, argumentos, resultado disponible, marcas de comparación y estado ausente. No adjuntes identificadores de cuenta, cookies, historial de navegación ni valores de API ajenos. Si una incidencia requiere la compilación, regístrala separada de las etiquetas del código. Elimina el registro al terminar su propósito de soporte.
BotBrowser permite configurar superficies de perfil para comparaciones autorizadas, pero no garantiza que una versión externa de CreepJS clasifique un resultado de una manera determinada. Mantén configuración del perfil, inspección de fuente y resultado de aplicación como registros distintos.
FAQ: campos Math de CreepJS
¿chrome y firefox identifican el navegador?
No. Indican igualdad con constantes de la fuente fijada. Varias marcas, ninguna o una revisión distinta no demuestran la familia actual.
¿lied: true significa que falló una prueba Math?
No. El módulo combina observaciones heredadas lieProps y diferencias entre algunas llamadas repetidas. Una fila puede ser estable mientras otra propiedad ya estaba marcada.
¿undefined explica qué API falló?
No. El envoltorio convierte excepciones en valores no disponibles. Hace falta el nombre de fila y un diagnóstico independiente para distinguir excepción, API ausente y otro límite.
¿La tabla de referencia es un benchmark entre navegadores?
No. Son comparaciones declaradas por el código. No se afirma que cada constante se midiera en versiones actuales o en un sistema operativo idéntico.
Practical conclusion
Fija el commit de CreepJS, registra expresión y argumentos, y conserva result, referencias, repetición y procedencia de lied en campos distintos. Trata rutas bloqueadas o ausentes como desconocidas. Así el informe público resulta auditable sin convertir una etiqueta de fuente en identidad o veredicto de seguridad. Cuando se muestran juntos los resultados por señal, el análisis de agregación de predicciones de CreepJS sigue la reducción de candidatos y los estados del renderizador sin tratarlos como identidad.
Public sources
Este artículo forma parte de la guía: ¿Qué es la huella digital del navegador?
Artículos Relacionados
Informe Intl de CreepJS: campos y valores ausentes
Huella digitalInformes de audio CreepJS: renderizado y valores ausentes
Huella digitalInforme WebGL de CreepJS: contextos y señales
Huella digitalDetección de Android WebView con CreepJS: límites
Huella digitalPredicción CreepJS: agregación y estados desconocidos
Huella digitalInforme WebGL de BrowserLeaks: etapas y datos ausentes
Lleva BotBrowser de la investigación a producción
Usa estas guías para entender el modelo y después avanzar hacia validación multiplataforma, contextos aislados y despliegue de navegador preparado para escalar.