
Un navigateur par agent : une automatisation du web qui ne se marche pas dessus
Les agents qui utilisent le web (vérifier un site, remplir un formulaire, lire une page) pilotent souvent un navigateur par son port de débogage à distance. L'installation tentante, c'est un navigateur pour tout le monde, chaque agent dans son onglet. Nous avons fait tourner vingt agents et six scripts ainsi, et les résultats mentaient.
Comment ces chiffres ont été obtenus. Mesurés sur nos propres machines (voir le protocole), en général en un seul passage, vitesses relevées par le serveur lui-même ; nous ne publions pas les journaux bruts. Ce sont des ordres de grandeur sur ce matériel, pas des garanties sur le vôtre. Les chiffres extérieurs sont accompagnés de leur source.
Ce qui n'allait pas, mesuré
- Un onglet emballé gelait tout le monde : un moteur de rendu à 10,7 Go et 162 % de CPU faisait attendre la connexion de chaque agent 180 secondes. Une fois tué, la connexion suivante prenait 0,4 s.
- Les navigations s'interrompaient entre elles : 11 chargements de page sur 20 échouaient sur « navigation interrompue », une course entre onglets, pas un refus du site.
- Des domaines sains déclarés morts : les rafales de requêtes DNS du navigateur partagé étaient bridées par notre propre filtre DNS, si bien que de grands sites revenaient en « ne résout pas ».
L'installation qui marche
Lancez un navigateur par agent, chacun avec son propre dossier de profil, son propre port de débogage et son propre processus. Donnez à chacun son DNS chiffré, pour que ses requêtes ne passent plus par le résolveur de la maison :
chromium --headless=new --user-data-dir=/tmp/agent-1 \
--remote-debugging-port=9301 \
--dns-over-https-mode=secure
Un profil vierge supprime aussi un faux positif subtil : « je suis connecté » ne peut plus venir d'une session qu'un autre passage a laissée ouverte.
Pièges
Les onglets s'accumulent d'un passage à l'autre. Fermez-les entre deux vagues : fermer 100 onglets a fait passer une machine de 28 Go utilisés à 19.
Connaissez votre plafond. Sur un portable de 30 Go, 16 navigateurs et 16 agents remplissaient la mémoire ; à 24 navigateurs, le système a commencé à tuer les nouveaux, et chaque processus tué ressemblait à un « site bloqué » instantané : 47 faux échecs en 29 secondes. Déplacez les navigateurs vers une plus grosse machine avant d'aller plus loin.
Des profils de navigateur dans un petit dossier en mémoire (comme $XDG_RUNTIME_DIR) peuvent le remplir, et d'autres programmes y gardent des choses importantes. Mettez les profils sur le disque.
Utile ? Dites-nous ce qu'il faut mesurer ensuite.