Automatisation du navigateur
Ce guide couvre la configuration des capacités d’automatisation de navigateur dans ZeroClaw, y compris l’automatisation en mode headless et l’accès à l’interface graphique via VNC.
Aperçu
ZeroClaw prend en charge plusieurs méthodes d’accès aux navigateurs :
| Méthode | Cas d’utilisation | Exigences |
|---|---|---|
| CLI agent-browser | Automatisation headless, agents IA | npm, Chrome |
| VNC + noVNC | GUI d’accès, débogage | Xvfb, x11vnc, noVNC |
| Chrome Bureau à Distance | GUI distant via Google | XFCE, compte Google |
Démarrage rapide : automatisation sans tête
Installer agent-browser
Linux
# Installer CLI
npm install -g agent-browser
# Télécharger Chrome for Testing (inclut les dépendances système)
agent-browser install --with-deps
macOS / Windows
# Installer CLI
npm install -g agent-browser
- Téléchargez Chrome for Testing
agent-browser install
2. Vérifier la configuration ZeroClaw
L’outil de navigateur est activé par défaut avec allowed_domains = ["*"]. Restreignez les domaines ou désactivez-le via zeroclaw config set :
sh
zeroclaw config set browser.allowed_domains '["example.com", "docs.example.com"]'
zeroclaw config set browser.enabled false
Tableau de bord de la passerelle
Ouvrez /config/browser dans le tableau de bord web.
zerocode
Dans le volet Config, sous Navigateur.
Politique de schéma d’URL.
browser_openaccepte à la fois les URLhttp://ethttps://(tout commeweb_fetch,http_requestet l’outilbrowser, qui acceptent déjà le HTTP en clair). Le bloc local/private-host et la liste d’autorisationallowed_domainss’appliquent àhttp://exactement comme àhttps://. Étant donné queallowed_domainsest par défaut défini sur["*"], la configuration par défaut permet d’ouvrir tout hôte public via HTTP en clair. Pour réduire l’exposition au HTTP en clair, remplacez la liste d’autorisation par joker par les hôtes publics spécifiques en lesquels vous avez confiance. Notez que cela n’impose pas HTTPS pour ces hôtes : la liste d’autorisation contrôle les origines et non les schémas ; un comportement HTTPS uniquement pour un hôte autorisé nécessite que cet hôte lui-même redirige ou refuse le HTTP en clair (HSTS, 308 côté serveur), ou une future politique de navigateur sensible aux schémas.
Pour le backend agent_browser, définissez browser.headed = true pour lancer le navigateur en mode visible (headed) à des fins de débogage ou de configuration initiale de la connexion, ou browser.headed = false pour forcer le mode headless. Lorsque browser.headed n’est pas défini, Zeroclaw conserve le comportement hérité de l’environnement AGENT_BROWSER_HEADED. Le backend rust-native continue d’utiliser browser.native_headless.
Consultez la référence de configuration pour connaître tous les champs et valeurs par défaut des navigateurs.
3. Test
sh
echo Ouvrez https://example.com et dites-moi ce qu'il indique | zeroclaw agent -a assistant
Configuration VNC (accès GUI)
À des fins de débogage ou lorsque vous avez besoin d’un accès visuel au navigateur :
Installer les dépendances
Debian/Ubuntu
apt-get install -y xvfb x11vnc fluxbox novnc websockify
# Facultatif : environnement de bureau pour Chrome Remote Desktop
apt-get install -y xfce4 xfce4-goodies
Démarrer le serveur VNC
bash
#!/bin/bash
# Start virtual display with VNC access
DISPLAY_NUM=99
VNC_PORT=5900
NOVNC_PORT=6080
RESOLUTION=1920x1080x24
# Démarrer Xvfb
Xvfb :$DISPLAY_NUM -screen 0 $RESOLUTION -ac &
sleep 1
# Démarrer le gestionnaire de fenêtre
fluxbox -display :$DISPLAY_NUM &
sleep 1
# Démarrer x11vnc
x11vnc -display :$DISPLAY_NUM -rfbport $VNC_PORT -forever -shared -nopw -bg
sleep 1
- Démarrez noVNC (VNC basé sur le web)
websockify --web=/usr/share/novnc $NOVNC_PORT localhost:$VNC_PORT &
echo « VNC disponible à : »
echo Client VNC : localhost:$VNC_PORT
echo Navigateur Web : http://localhost:$NOVNC_PORT/vnc.html
Accès VNC
- Client VNC : Se connecter à
localhost:5900 - Navigateur Web : ouvrez
http://localhost:6080/vnc.html
- Ouvrez le navigateur sur l’affichage VNC
sh
DISPLAY=:99 google-chrome --no-sandbox https://example.com &
Bureau à distance Chrome
Installer
sh
- Téléchargez et installez
wget https://dl.google.com/linux/direct/chrome-remote-desktop_current_amd64.deb
apt-get install -y ./chrome-remote-desktop_current_amd64.deb
# Configurer la session
echo "xfce4-session" > ~/.chrome-remote-desktop-session
chmod +x ~/.chrome-remote-desktop-session
Configuration
- Visitez https://remotedesktop.google.com/headless
- Copiez la commande de configuration de « Debian Linux »
- Exécutez-le sur votre serveur
- Démarrer le service :
systemctl --user start chrome-remote-desktop
Accès à distance
Allez sur https://remotedesktop.google.com/access depuis n’importe quel appareil.
Tests
Tests CLI
sh
- OpenBasic et FermerBasic
agent-browser open https://example.com
agent-browser get title
agent-browser close
# Instantané avec refs
agent-browser open https://example.com
agent-browser snapshot -i
agent-browser close
# Capture d’écran
agent-browser open https://example.com
agent-browser screenshot /tmp/test.png
agent-browser close
Tests d’intégration ZeroClaw
sh
# Extraction du contenu
echo Ouvrez https://example.com et résumez-le. | zeroclaw agent -a assistant
# Navigation
echo Accéder à https://github.com/trending et lister les 3 principaux dépôts | zeroclaw agent -a assistant
Interaction des formulaires
echo Allez sur Wikipédia, recherchez « langage de programmation Rust » et résumez | zeroclaw agent -a assistant
Dépannage
“Élément non trouvé”
La page n’est peut-être pas complètement chargée. Ajout d’un temps d’attente :
sh
agent-browser open https://slow-site.com
agent-browser wait --load networkidle
agent-browser snapshot -i
Fenêtres de consentement aux cookies bloquant l’accès
Gérer le consentement aux cookies d’abord :
sh
agent-browser open https://site-with-cookies.com
agent-browser snapshot -i
agent-browser click @accept_cookies - Cliquez sur le bouton d'acceptation
agent-browser snapshot -i # Maintenant, récupère le contenu réel
Restrictions réseau du bac à sable Docker
Si web_fetch échoue dans le sandbox Docker, utilisez agent-browser à la place :
sh
- Ne faites que renvoyer la chaîne traduite, rien d’autre.
agent-browser open https://example.com
agent-browser get text body
Notes de sécurité
agent-browserexécute Chrome en mode headless avec isolation- Pour les sites sensibles, utilisez
--session-nameafin de persister l’état d’authentification - La config
--allowed-domainsrestreint la navigation à des domaines spécifiques - Les ports VNC (5900, 6080) doivent être protégés par un pare-feu ou Tailscale