Pinchtab : l’API Navigateur Go de 12 Mo pour les Agents IA
Pinchtab : l’API Navigateur Go de 12 Mo pour les Agents IA
Les agents IA modernes ont besoin d’un moyen fiable et peu coûteux pour lire, interagir avec et contrôler des pages web. Les solutions existantes telles que Playwright, Puppeteer ou Browser Use apportent souvent des runtimes lourds, des liaisons linguistiques étroites ou des surcoûts inutiles. Pinchtab résout ce problème avec un binaire Go autonome unique qui lance une instance Chrome sans tête, expose une API HTTP pure et est efficace en jetons pour les charges de travail lourdes en lecture.
Qu’est‑ce que Pinchtab ?
- Serveur HTTP autonome – aucune SDK linguistique requise ; curl, Python, Rust ou tout agent OpenAI peuvent y communiquer.
- Binaire Go de 12 Mo – construit avec
go build, sans dépendances externes à l’exécution. - Chrome en arrière‑plan – gère Chromium proprement, mais masque tout le travail lourd derrière une API propre et structurée.
- Modes duals –
headlesspour les pipelines d’automatisation complète etheadedpour les workflows humains. - Furtivité intégrée – corrige automatiquement
navigator.webdriver, falsifie le User‑Agent et d’autres indicateurs. - Persistance de session – les cookies et le stockage local persistent après redémarrages ; utile pour les connexions multi‑étapes.
- Sortie efficace en jetons – propose
/text(~800 tokens) et?filter=interactive(~3 600 tokens), réduisant le coût lors de l’alimentation des LLM.
Le résultat est un outil navigateur qui ressemble à un plugin de LLM : démarrage rapide, utilisation facile et hautement configurable.
Pourquoi Pinchtab surpasse les habituels concurrents
| Fonctionnalité | Pinchtab | Playwright MCP | Browser Use |
|---|---|---|---|
| Taille binaire | 12 Mo binaire unique | Arbre de dépendances de 10 + GB | Conteneur 5 GB |
| Protocole | REST + WebSocket | CDP + wrapper personnalisé | WebSocket + RPC |
| Portabilité | Go cross‑compile | Environnement Node.js | Docker requis |
| Coût en jetons | /text 800 jetons/page |
Snapshot complet 10 k+ jetons | 10 k+ jetons |
| Headless/Headed | Bascule intégrée | Headless uniquement en CLI | Headless uniquement |
| Furtivité | Patches intégrés | Script personnalisé requis | Pas de support natif |
Lorsque vous avez seulement besoin de lire une page ou de cliquer sur un bouton, le snapshot texte ou interactif de Pinchtab est 3 à 10 fois moins cher en jetons qu’une capture d’écran complète avec un modèle vision, traduisant des économies à l’ordre de magnitude pour le scraping ou la surveillance à grande échelle.
Démarrage
1. Installation
# Depuis le code source
$ go install github.com/pinchtab/pinchtab@latest
# Ou Docker (le plus simple)
$ docker run -d -p 9867:9867 --security-opt seccomp=unconfined pinchtab/pinchtab
Le binaire écoute sur le port 9867 par défaut. Remplacez avec BRIDGE_PORT=9870 ./pinchtab.
2. Utilisation basique avec curl
# Vérifier la santé
$ curl http://localhost:9867/health
# Lire une page
$ curl http://localhost:9867/text?tabId=1
# Cliquer sur un bouton par référence (ID provenant du snapshot)
$ curl -X POST http://localhost:9867/action \
-d '{"kind":"click","ref":"e5"}'
Tous les endpoints renvoient un JSON propre. Consultez la section API ci‑dessous pour les détails de paramètres d’interrogation et options avancées.
3. Mode Headed (humain + agent)
$ BRIDGE_HEADLESS=false ./pinchtab
Ouvrez une fenêtre de navigateur, connectez‑vous, résolvez le CAPTCHA, puis utilisez l’API du même profil (ex. http://localhost:9869). Les profils résident dans ~/.pinchtab/profiles/<nom>/ et persistent entre les redémarrages.
4. Utilisation du Dashboard
$ pinchtab dashboard
# ouvrir http://localhost:9867/dashboard dans un navigateur
# créer/importer des profils, lancer des instances headed, les arrêter
Le tableau de bord offre une interface simple pour gérer plusieurs profils et instances.
Vue d’ensemble de l’API
| Méthode | Chemin | Description |
|---|---|---|
| GET | /health |
Statut du serveur |
| GET | /tabs |
Liste des onglets ouverts |
| GET | /snapshot |
Arbre d’accessibilité (JSON structuré) |
| GET | /screenshot |
Image JPEG |
| GET | /text |
Texte de la page (readability ou raw) |
| POST | /navigate |
Aller à une URL |
| POST | /action |
Cliquer, taper, faire défiler, etc |
| POST | /evaluate |
Exécuter JavaScript arbitraire |
| POST | /tab |
Ouvrir/fermer des onglets |
| POST | /tab/lock / /unlock |
Verrouiller un onglet pour un accès exclusif |
Paramètres de requête Snapshot
filter=interactive– inclut seulement boutons, liens, entrées, réduisant la taille.format=text– arbre textuel brut, ~40‑60 % de tokens de moins que JSON.diff=true– renvoie seulement le delta depuis le dernier snapshot.noAnimations=true– désactive les animations CSS pour un rendu déterministe.
Paramètres de requête Text
mode=raw– texte interne brut, sinon supprime publicités/navigation via readability.
Fonctionnalités avancées
Mode Furtif
Pinchtab propose deux niveaux de furtivité : light (flags de base) et full (falsification canvas/WebGL/font). Activez avec BRIDGE_STEALTH=full. Crucial lors de l’automatisation de sites avec une forte détection de bots.
Persistance de session
Par défaut, Pinchtab écrit cookies, stockage local, même onglets ouverts dans ~/.pinchtab. Vous pouvez pointer l’outil vers un répertoire personnalisé avec BRIDGE_PROFILE=/my/profile. En mode sans tête vous pouvez aussi injecter des cookies via POST /cookies.
Blocage d’images & média
Mettez BRIDGE_BLOCK_IMAGES=true ou BRIDGE_BLOCK_MEDIA=true pour réduire la bande passante et accélérer les snapshots.
Flags Chrome personnalisés
Passez n’importe quel flag Chrome avec CHROME_FLAGS="--no-sandbox --disable-gpu". Utile sur CI ou avec ressources limitées.
Considérations de sécurité
Pinchtab confie essentiellement à un agent le contrôle direct d’un navigateur réel exécutant vos données de compte. **Toujours ** :
- Sécuriser le point d’extrémité HTTP avec
BRIDGE_TOKEN. - Exécuter sur un réseau restreint ou derrière un pare‑feu.
- Utiliser des profils Chrome jetables pour les agents expérimentaux.
Le binaire n’envoie jamais vos données en dehors de votre machine sans que vous l’ayez activé. Protégez ~/.pinchtab comme vous protégez vos mots‑de‑passe.
Référence rapide : Travailler avec le Dashboard
# Démarrer le tableau de bord
$ pinchtab dashboard
# Dans l’UI
# 1. Importer un profil (cliquer sur "Import Profile")
# 2. Démarrer une nouvelle instance (choisir headed ou headless)
# 3. Utiliser l’URL API retournée dans votre agent
Le tableau de bord expose également POST /start/{id} et /stop/{id}, permettant une gestion programmatique du cycle de vie.
Cas d’usage communs
| Cas d’usage | Pourquoi Pinchtab | Exemple |
|---|---|---|
| Scraping web | Rapide, extraction texte peu coûteuse en jetons | Scraping d’articles d’actualité sur un planning de 100 pages coûtant <0,05 € |
| Chatbots IA | Intégration navigateur fluide | LLM OpenAI envoie des actions de clic en temps réel |
| Tests automatisés | Mode headed pour débogage visuel | Exécuter des tests d’intégration avec Docker Compose + instance headed |
| Pipelines de données | Maintient les sessions entre les exécutions | Connexion unique à un portail puis récupère des rapports quotidiens |
Conclusion
Pinchtab est une solution pragmatique, open‑source, qui élimine la friction d’intégrer un navigateur dans les flux de travail IA. Son empreinte réduite, son interface HTTP‑première et son output efficace en jetons en font un compagnon idéal pour les agents IA de nouvelle génération qui doivent lire, interagir avec et manipuler le web sans les surcoûts d’un framework navigateur complet. Essayez‑le – le binaire de 12 Mo fonctionne sur votre ordinateur portable, votre serveur ou dans Docker, et l’API ressemble à un nouveau plugin pour votre LLM préféré.