Retour au Blog
Plateforme

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

Documentation

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.

Schéma neutre montrant les événements de navigation, l'état d'historique et la frontière de confidentialité.

TL;DR

  • Navigation API structure les changements d'URL du même document et, si le support existe, les validations entre documents.
  • navigate, currententrychange et les promesses de transition correspondent à des étapes différentes; journalisez temps et résultat.
  • navigation.currentEntry et history.state concernent 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.navigation manque.
  • 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

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

ObservationLecture sûreNe pas conclureAction
navigate avant mise à jourLe document a observé une navigationCommit serveur ou identitéJournaliser cible et issue
ID d'entrée changéL'entrée active a changéNouveau document certainSéparer état et cycle de vie
Promise achevéeTravail client terminéAPI ou paiement réussiVérifier le réseau
window.navigation absentRepli nécessaireIncompatibilité universelleTester lien et popstate
Destination externe chargéeNavigation effectuéeLecture de l'historique sourceTester 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

Sources publiques

#Navigation API#Historique#Confidentialité#Navigation Même Document#Transitions

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.