Navigation API, historial y límites de privacidad
Una prueba controlada para observar transiciones del mismo documento y de documentos distintos, history state, orden de eventos y ruta de compatibilidad.
BotBrowser Team
Quieres la documentación estructurada de Plataforma?
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.
BotBrowser puede repetir una navegación autorizada en un perfil declarado y registrar resultados visibles de transición e historial. No puede leer el historial de otro origen, deducir la identidad de una persona desde una URL, saltarse la política del navegador ni garantizar el mismo soporte en cada versión. Un evento del navegador observa un documento; no concede acceso al historial completo del usuario.
TL;DR
- Navigation API ofrece una vista estructurada de cambios de URL del mismo documento y, cuando existe soporte, de commits entre documentos.
navigate,currententrychangey las promesas de transición ocurren en fases distintas; registra el tiempo y el resultado.navigation.currentEntryyhistory.statepertenecen a la entrada activa del documento actual, no a una base de datos de historial entre orígenes.- Prueba por separado navegación del mismo documento, navegación entre documentos y una ruta de compatibilidad cuando falta
window.navigation. - BotBrowser repite el recorrido declarado y conserva evidencia acotada; no convierte una transición en una afirmación de identidad.
Contenido
- Qué observa Navigation API
- Entradas de historial y privacidad
- Orden de eventos y tiempo
- Prueba controlada y compatibilidad
- Tabla de decisión
- Conclusión
- Fuentes públicas
Qué observa Navigation API
La especificación WICG Navigation API modela una navegación con URL destino, tipo, contexto de activación y transición. Un cambio de fragmento o history.pushState() puede conservar el documento y cambiar la entrada activa; una navegación entre documentos reemplaza el documento. MDN describe la Navigation API, pero el soporte evoluciona: detecta window.navigation, el evento requerido y la ruta de compatibilidad dentro de la misma ejecución.
navigate permite observar o interceptar una navegación elegible. event.intercept() y event.transitionWhile() vinculan trabajo de renderizado a la transición, pero una promesa pendiente no equivale a un commit. El modelo de historial de WHATWG HTML sigue definiendo entradas con URL y estado opcional, y el recorrido activa una entrada.
Entradas de historial y privacidad
navigation.currentEntry y history.state ayudan a restaurar el estado local de la aplicación en el origen actual. No devuelven todo el historial del usuario, actividad privada ni entradas de otro origen. Mantén el estado mínimo: usa una clave de ruta sintética y no guardes tokens, correos o registros de clientes en pushState(). Un script del mismo origen podría copiar el estado; no es una credencial de identidad.
El documento actual puede observar sus propias entradas, pero no puede leer el estado del destino entre orígenes. Los registros del servidor, Referer, cookies y parámetros de aplicación son canales separados. La misma URL puede tener distintos IDs de entrada, así que no equivale a una visita ni a una persona.
Orden de eventos y tiempo
navigate es una oportunidad de observación; un cambio del mismo documento puede producir después currententrychange. Una navegación entre documentos puede descargar el documento antiguo antes de eventos posteriores. Registra timestamps monotónicos, nombre, ruta redactada, ID de entrada y resultado de la promesa. transitionWhile() cumplida solo indica trabajo cliente terminado, no éxito de una API o pago. Prueba atrás y adelante porque pueden restaurar una entrada sin crear documento.
Prueba controlada y compatibilidad
Usa rutas sintéticas y no guardes cookies, cabeceras de autorización ni URLs de clientes:
const events = [];
const log = name =>
events.push({
name,
atMs: Math.round(performance.now()),
entryId: window.navigation?.currentEntry?.id ?? null,
path: new URL(location.href).pathname,
});
if (window.navigation) {
navigation.addEventListener('navigate', () => log('navigate'));
navigation.addEventListener('currententrychange', () => log('currententrychange'));
}
history.pushState({ route: 'synthetic-a' }, '', '/fixture/a');
log('after-push');
await page.getByRole('link', { name: 'cross-document' }).click();
console.log(events);
Cuando falta la API o la intercepción, usa enlaces normales y popstate para restaurar estado, y deja que el navegador haga la navegación entre documentos. El criterio es conservar el invariante del producto, no imitar todos los eventos internos. Registra el modo elegido y la versión del navegador.
Tabla de decisión
| Observación | Interpretación segura | No afirmar | Acción |
|---|---|---|---|
navigate antes del cambio | El documento observó una navegación | Commit del servidor o identidad | Registra destino y resultado |
| Cambia el ID de entrada | Cambió la entrada activa | Que cargó otro documento | Separa estado y ciclo de vida |
| Promise cumplida | Terminó trabajo cliente | Éxito de API o pago | Comprueba la red por separado |
Falta window.navigation | Hace falta compatibilidad | Incompatibilidad universal | Ejecuta enlaces y popstate |
| Carga un destino externo | Se realizó la navegación | Que leyó el historial fuente | Verifica aislamiento con orígenes sintéticos |
BotBrowser repite esta prueba autorizada con navegador, plataforma, proxy y perfil declarados, conservando observaciones acotadas. No puede saltarse políticas, leer historial externo, activar eventos no soportados, inferir identidad ni certificar resultados del servidor.
Conclusión
Trata Navigation API como una superficie de observación del contexto actual. Separa estado del mismo documento y commit entre documentos, registra el orden con timestamps y ejecuta una ruta de compatibilidad real. Mantén el estado sintético y mínimo; la evidencia debe decir qué observó el documento, qué no pudo observar y qué modo de compatibilidad se usó.
Lecturas siguientes
- Política de mismo origen y aislamiento de sitios
- Límites de CORS entre orígenes
- Investigación de privacidad con especificaciones públicas
Fuentes públicas
Artículos Relacionados
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.