Navigation API, historique et limites de confidentialité
Un scénario contrôlé pour observer les transitions dans le même document et entre documents, history state, l'ordre des événements et le repli.
BotBrowser Team
Vous voulez la documentation structurée pour Plateforme ?
Cet article fait partie de la bibliothèque éditoriale. Pour les étapes de configuration, la référence et les mises à jour continues, passez directement à la section docs.
BotBrowser peut rejouer une navigation autorisée dans un profil déclaré et enregistrer des résultats visibles de transition et d'historique. Il ne peut pas lire l'historique d'une autre origine, déduire une identité depuis une URL, contourner la politique du navigateur ni garantir le même support dans chaque version. Un événement observe un document; il n'accorde pas l'accès à l'historique complet de l'utilisateur.
TL;DR
- Navigation API structure les changements d'URL du même document et, si le support existe, les validations entre documents.
navigate,currententrychangeet les promesses de transition correspondent à des étapes différentes; journalisez temps et résultat.navigation.currentEntryethistory.stateconcernent l'entrée active du document courant, pas une base d'historique inter-origines.- Testez séparément même-document, entre-documents et le repli lorsque
window.navigationmanque. - BotBrowser rejoue le parcours déclaré avec des preuves limitées; une transition n'est pas une preuve d'identité.
Sommaire
- Ce que voit Navigation API
- Entrées d'historique et confidentialité
- Ordre des événements
- Scénario contrôlé et repli
- Table de décision
- Conclusion
- Sources publiques
Ce que voit Navigation API
La spécification WICG Navigation API décrit une navigation par URL cible, type et transition. Un fragment ou history.pushState() peut garder le document tout en changeant l'entrée active; une navigation entre documents remplace le document. La page MDN Navigation API aide à évaluer le support, mais la détection de window.navigation, de l'événement requis et du repli doit rester dans le scénario.
navigate permet d'observer ou d'intercepter une navigation éligible. event.intercept() et event.transitionWhile() associent le rendu à la transition, sans transformer une promesse en commit. Le modèle WHATWG HTML reste l'autorité pour les entrées URL/état et leur parcours.
Entrées d'historique et confidentialité
navigation.currentEntry et history.state restaurent l'état local de l'origine courante. Ils ne révèlent ni tout l'historique, ni la navigation privée, ni les entrées d'une autre origine. Gardez un identifiant de route synthétique; ne stockez jamais jeton, e-mail ou donnée client dans pushState(). Le script de la même origine peut copier cet état: ce n'est pas une identité.
Une page ne peut pas lire l'état d'une destination inter-origines. Les journaux du serveur, Referer, cookies et paramètres applicatifs sont d'autres canaux. Une même URL peut avoir plusieurs IDs d'entrée; elle ne signifie donc ni une visite unique ni une personne.
Ordre des événements
navigate ouvre l'observation; currententrychange peut suivre une mise à jour même-document. Une navigation entre documents peut décharger l'ancienne page avant d'autres événements. Journalisez un temps monotone, le nom, un chemin réduit, l'ID d'entrée et le résultat de la promesse. transitionWhile() achevée prouve seulement la fin du travail client, pas celle d'une API ou d'un paiement. Testez aussi retour et avance.
Scénario contrôlé et repli
Le scénario suivant utilise des chemins synthétiques et exclut cookies, autorisations et URL client:
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);
Sans API ou interception, utilisez des liens normaux et popstate, puis laissez le navigateur effectuer la navigation entre documents. Le critère est l'invariant produit, pas la copie de chaque événement interne. Notez le mode et la version du navigateur.
Table de décision
| Observation | Lecture sûre | Ne pas conclure | Action |
|---|---|---|---|
navigate avant mise à jour | Le document a observé une navigation | Commit serveur ou identité | Journaliser cible et issue |
| ID d'entrée changé | L'entrée active a changé | Nouveau document certain | Séparer état et cycle de vie |
| Promise achevée | Travail client terminé | API ou paiement réussi | Vérifier le réseau |
window.navigation absent | Repli nécessaire | Incompatibilité universelle | Tester lien et popstate |
| Destination externe chargée | Navigation effectuée | Lecture de l'historique source | Tester l'isolation |
BotBrowser rejoue le scénario autorisé avec le navigateur, la plateforme, le proxy et le profil déclarés. Il ne contourne pas les politiques, ne lit pas l'historique externe, ne force pas un événement absent et ne certifie pas un résultat serveur.
Conclusion
Considérez Navigation API comme une surface d'observation du contexte courant. Séparez état même-document et validation entre documents, mesurez l'ordre, puis exercez un repli réel. Gardez l'état synthétique et minimal, et décrivez précisément ce que la preuve montre et ne montre pas.
À lire ensuite
- Politique de même origine et isolation des sites
- Limites CORS entre origines
- Recherche de confidentialité avec des spécifications publiques
Sources publiques
Articles Connexes
Faites passer BotBrowser de la recherche à la production
Utilisez ces guides pour comprendre le modèle, puis passez à la validation multi-plateforme, aux contextes isolés et au déploiement navigateur prêt pour l'échelle.