Dinoer

Ce qu'un agent ne peut pas deviner

Le clic a réussi. Cette phrase est vraie et ne vous en dit presque rien. C'est là que la réussite mécanique et l'effet réel divergent, et pourquoi cet écart est imperceptible de l'intérieur.

Un agent pilotant le noyau de navigateur intégré sait une chose avec certitude : si sa propre instruction a été exécutée. Il a cliqué, le clic s’est produit, succes: true.

Cette affirmation est vraie. Elle est également compatible avec le fait que le serveur n’ait rien reçu, que le formulaire ait été rejeté, que la session ait expiré et que la page soit incorrecte depuis le début.

La perception ne se limite pas à la lecture du texte. Elle consiste également à savoir où la lecture s’arrête.

La différence entre « ça a fonctionné » et « ça a marché »

Trois cas concrets, tous aboutissant à un succès :

Le navigateur a refusé la soumission. Un champ required était vide. La validation HTML5 l’a bloqué. Le clic s’est produit – Dinoer a raison – et rien n’a été envoyé.

Le clic était artificiel. Un script JavaScript .click() sur un bouton de soumission déclenche l’événement DOM sans garantir l’envoi HTTP. Une mise à jour de la configuration s’est terminée avec un message indiquant qu’aucun changement n’avait été effectué.

La cible n’était pas celle attendue. Une redirection a affiché une page différente de celle prévue dans le scénario ; le clic a abouti à une page inconnue.

Dans les trois cas, l’agent n’avait aucun moyen de le savoir à partir de sa propre sortie uniquement. C’est le but de cette page.

Le temps est invisible

Une page peut être entièrement chargée et ne pas encore être prête.

Après la soumission d’un formulaire de connexion, le réseau devient silencieux et la navigation se termine. L’agent conclut que la session est établie et accède à une page protégée, puis revient à l’écran de connexion.

Le serveur n’avait pas terminé. De nombreuses applications régénèrent l’identifiant de session immédiatement après l’authentification ; le navigateur a terminé, le serveur non, et il n’y a pas de différence structurelle entre « silencieux parce que terminé » et « silencieux parce qu’entre deux états ».

{"type": "cliquer", "selecteur": "button[type=\"submit\"]"},
{"type": "pause", "ms": 2000},
{"type": "naviguer", "url": "https://target.local/protected"}

Deux secondes d’attente délibérée, car le silence du réseau n’est pas la même chose que la disponibilité. Rien sur la page ne l’indique.

Ce que Dinoer fait à ce sujet

Il ne peut pas combler le fossé — aucun outil ne le peut, depuis l’intérieur du navigateur. Ce qu’il peut faire, c’est empêcher l’agent de raisonner comme si le fossé n’existait pas.

Indiquez votre position actuelle. La boussole affiche l’URL actuelle après les redirections, le titre de la page et le dernier statut HTTP. Un agent qui pense être ailleurs va découvrir la vérité.

Détection de dérive. session_derive indique que la session n’est plus valide. Et dernier_code_http permet de distinguer deux erreurs qui semblent identiques : une expiration réelle redirige avec un 302, une erreur d’application masquée par un display_errors=0 provoque un 500 et affiche la même page de connexion.

Signalement d’escalade. repli_js_utilise n’apparaît que lorsqu’une solution de repli JavaScript a effectivement été exécutée, et non à cause du simple fait que le drapeau a été activé.

Aucune de ces affirmations n’est une garantie. Ce sont des signaux qui transforment une hypothèse erronée et implicite en une affirmation claire et compréhensible.

L’habitude que cela plaide en faveur de

Lisez la réponse, pas le verdict. succes: true est le champ le moins informatif de la sortie — il dit seulement que l’instruction s’est exécutée.

Ce qui vous indique si le travail a été effectué se trouve dans tout ce qui l’entoure : où vous êtes, ce que le serveur a dit, et si quelque chose a dû être forcé. Un agent qui ne vérifie que le verdict sera confiantement faux dans les cas précis qui comptent, et la chaîne de recherche construite sur cette même base hérite de la même discipline : campagne.py lit succes/statut par source, et ne suppose jamais qu’une page collectée est une page utilisable.

En bref

  • Le succès mécanique et l’effet réel sont des affirmations différentes.
  • Un réseau silencieux ne signifie pas un serveur opérationnel.
  • Les signaux existent — boussole, statut HTTP, dérive, indicateur de repli JavaScript —, et ils valent plus que le verdict.
  • Savoir où s’arrête la perception fait partie de la perception elle-même.