Firefox modifié pour le scraping et les agents IA
Camoufox est une version modifiée de Firefox pour le web scraping et les agents IA. Les valeurs que lisent les scripts anti-bot (navigator, écran, WebGL, WebRTC, fuseau horaire, polices) sont réécrites dans le code C++ du navigateur, et non maquillées par du JavaScript injecté. Camoufox se pilote avec Playwright, en Python ou en JavaScript/TypeScript : dans un script existant, seule l'initialisation du navigateur change. Les paquets camoufox de PyPI et de npm téléchargent le binaire apparié et tirent une nouvelle identité à chaque lancement. Le guide anti-blocage de Crawlee propose Camoufox quand ses propres empreintes ne suffisent pas, face au défi Cloudflare par exemple.
Le comparatif des outils de web scraping open source place Camoufox à côté des frameworks de crawl et de la rotation de proxies.
Empreinte réécrite en C++, Playwright invisible pour la page
- Empreinte modifiée dans le moteur : interceptés en C++, les objets usurpés passent pour natifs. Un contrôle qui guette un
toString()ne renvoyant plus[native code]n'a rien à trouver. - Playwright caché à la page : Camoufox modifie Juggler, le protocole de Playwright pour Firefox, pour qu'il travaille sur une copie isolée de la page.
navigator.webdriverest corrigé et le mode headless se présente comme une fenêtre normale. - Identités tirées du trafic réel : les valeurs que l'on ne fixe pas viennent de fpgen, un réseau bayésien entraîné sur du trafic observé. Un contrôle de cohérence écarte ensuite les machines impossibles, comme un user agent Windows doté d'un GPU Apple M1.
- Polices du système annoncé : le navigateur embarque des polices Windows, macOS et Linux et charge celles qui vont avec le user agent.
- Trajectoires de souris enregistrées : avec
humanize=True, Camoufox rejoue l'un des 2 356 mouvements humains de la bibliothèque Cursory, ajusté au trajet demandé, à sa vitesse d'origine. - Identité calée sur le proxy : avec l'extra
geoip, le lanceur déduit géolocalisation, fuseau horaire, locale et langue de la région de sortie du proxy.
Toujours en bêta, et détectable de l'aveu du README
L'identité reste celle d'un Firefox. Camoufox ne sait pas pleinement injecter une empreinte Chromium : certains WAF testent le comportement de SpiderMonkey, le moteur JavaScript de Firefox, que le README dit impossible à usurper.
Le README admet que Camoufox reste détectable. Sur les milliers de valeurs qui doivent concorder, Camoufox ne les accorde pas toujours toutes, et les éditeurs d'anti-bots le testent en boucle pour y trouver une incohérence, puis mettent aussitôt leurs scripts à jour. Le curseur humanisé peut encore être repéré par une analyse assez fine.
Camoufox ne s'occupe pas de l'adresse IP. Le navigateur est prévu pour fonctionner derrière des proxies tournants, de préférence résidentiels, et n'en fournit aucun ; Rota fait tourner un pool de proxies qu'on lui confie.
Une bêta restée près de dix mois sans version. Aucune version n'a quitté le stade bêta, et le README prévient que le projet peut ne pas convenir à une production stable. Rien n'est sorti entre la v135.0.1-beta.24 du 15 mars 2025 et une préversion macOS en janvier 2026, et jusqu'à fin août 2026 le README situait le développement actif sur un fork de Clover Labs. Le dépôt principal publie désormais une préversion à chaque fusion testée : cinq builds sur Firefox 156.0.1 entre le 28 septembre et le 6 octobre 2026, jusqu'à la v156.0.1-beta.36. Les paquets Python et npm sont passés en 0.5.8 le même jour.
Code entièrement public depuis janvier 2026. Selon la documentation, les versions jusqu'à la v135.0.1-beta.24 contenaient un patch Canvas fermé. Le navigateur est sous MPL-2.0, les trajectoires de souris sous LGPL-3.0-or-later, les lanceurs Python et TypeScript sous MIT.
Un téléchargement lourd. Chaque archive de la v156.0.1-beta.36 pèse environ 1,3 Go. Le lanceur Python exige Python 3.10, celui de npm Node.js 22.15, au minimum.
