| | |

OBSCURA : le navigateur Rust natif de 30 Mo pour les agents IA et le scraping

https://obscura.sh

📌OBSCURA est un navigateur headless écrit en Rust, sans Chromium, conçu pour le web scraping et l’automatisation d’agents IA. Il consomme 30 Mo de RAM, charge les pages en 85 ms et bloque plus de 3 500 traqueurs.

La promesse tient en peu de mots : un navigateur natif, écrit en Rust, qui fait ce que Chrome fait pour les humains, mais en dix fois plus léger et fait pour les machines. Lancé par h4ckf0r0day et déjà au-dessus des 22 000 étoiles sur GitHub, OBSCURA se présente comme le chaînon manquant entre les agents qui ont besoin d’un vrai navigateur et les pipelines qui ne peuvent pas se permettre la dette mémoire de Chrome.

Ce qui retient l’attention, c’est la cohérence. L’interface en ligne de commande couvre l’essentiel : obscura fetch URL --screenshot out.png pour une capture, --dump markdown pour le contenu, --eval pour exécuter du JavaScript, --stealth pour le mode furtif. Le serveur CDP accepte le code Playwright existant sans modification. Le serveur MCP expose les mêmes primitives aux agents IA via des outils standardisés : navigation, snapshot, screenshot, click, fill, evaluate. Vous remplacez l’URL de Chrome par ws://127.0.0.1:9222 et ça tourne. Je trouve cette approche particulièrement cohérente : un même binaire, trois interfaces selon le contexte.

Deux ou trois choses concrètes distinguent OBSCURA. D’abord, le moteur de rendu est natif : pas de Chromium embarqué, pas de V8 partagé avec Node, un binaire unique qui tient en 30 Mo et boote en moins de 50 ms. Ensuite, le mode stealth randomise l’empreinte à chaque session — GPU, écran, canvas, audio, batterie — ce qui rend la détection par les anti-bots nettement plus difficile qu’avec un Chrome classique. Enfin, OBSCURA parle trois interfaces en même temps : CLI pour les scripts, serveur CDP pour Puppeteer et Playwright, et serveur MCP pour les agents IA comme Claude ou Cursor.

Il y a pourtant une réserve honnête. OBSCURA reconnaît lui-même que « long-tail CSS, certaines Web APIs, la lecture média, les effets du compositor et la rastérisation des fontes système peuvent différer de Chromium ». Pour du scraping classique ou des screenshots, c’est transparent. Pour des applications qui s’appuient sur les coins les plus exotiques du moteur de rendu, attendez-vous à des surprises. C’est aussi pour cela qu’obscura propose une variante --no-render pour les usages où seul le protocole HTTP suffit.

Pour qui OBSCURA vaut le détour. Si vous scriptez du scraping, OBSCURA remplace Puppeteer sans la dépendance à Chrome. Si vous construisez des agents IA qui doivent visiter des sites, le serveur MCP est la manière la plus simple de brancher un navigateur. Si vous avez besoin de captures d’écran fiables pour vos articles, OBSCURA fait le travail en une ligne. Le tout sous licence Apache 2.0, auto-hébergeable en un seul container Docker.

J’ai utilisé OBSCURA pour la capture de la page d’accueil de ce billet : une ligne de commande, pas de Chrome à installer, pas de dépendance à Node. C’est le genre d’outil qui rend les choses simples, et je vais probablement l’adopter pour les futures captures du flux. OBSCURA est, à mon sens, l’outil qu’il manquait pour fermer le gap entre Puppeteer et un agent qui ne veut pas dépendre de Chrome.

Points clés

  • 🦀 Navigateur natif en Rust, pas de Chromium, binaire unique
  • ⚡ 30 Mo de RAM, boot en moins de 50 ms, pages en 85 ms
  • 🥷 Mode stealth avec randomisation d’empreinte par session
  • 🧩 Compatible Puppeteer et Playwright via CDP
  • 🤖 Serveur MCP pour les agents IA (Claude, Cursor, etc.)
  • 🚫 3 520 domaines de traqueurs bloqués par défaut

Sources

Publications similaires

Laisser un commentaire