
camoufox v152.0.4-beta.29
🦊 Navigateur anti-détection
Camoufox
Camoufox est un navigateur anti-détection open source conçu pour le web scraping et les agents IA. 🦊
⚠️ Ce projet est en cours de développement. Il peut ne pas convenir à une utilisation stable en production. ⚠️
[!NOTE] Toute la documentation la plus récente est disponible sur camoufox.com.
[!NOTE] Le développement du navigateur est actif sur github.com/CloverLabsAI/camoufox et github.com/VulpineOS/VulpineOS.
Ce dépôt est utilisé pour fusionner les versions checkpoint et doit être traité comme la copie maîtresse.
Sponsors
Afficher/Réduire tout
| Scrapfly est une solution de niveau entreprise fournissant une API de Web Scraping qui vise à simplifier le processus de scraping en gérant tout : rendu de navigateur réel, proxies rotatifs et empreintes numériques (TLS, HTTP, navigateur) pour contourner tous les principaux anti-bots. Scrapfly offre également l'observabilité grâce à un tableau de bord analytique et mesure le taux de succès/taux de blocage en détail. |
| Clover Labs est un studio de capital-risque basé à Toronto qui construit des agents IA pour la croissance et la distribution. |
| SerpApi, une API de recherche web pour scraper Google et d'autres moteurs de recherche avec une API simple. |
|
Talordata est une API de recherche web simple pour scraper Google et d'autres moteurs de recherche à une fraction du coût. Obtenez 1 000 requêtes gratuites lors de l'inscription, et payez seulement 0,25 $ pour 1 000 réponses réussies — aucun frais pour les échecs de scraping. Utilisez le code promo CAMOUFOX pour 10% DE RÉDUCTION sur les Proxies Résidentiels. [Discord] |
|
Des données web qui survivent aux anti-bots. Crawlbase offre aux développeurs et aux équipes IA des données fiables à grande échelle : un Crawler à 99 % de taux de réussite, une API de Crawling, des Proxies IA intelligents et un Serveur MCP Web qui passent à travers, pour que vos scrappers et agents ne cassent pas. Vous construisez, nous gérons l'infrastructure. Obtenez 15 % de réduction sur vos 3 premiers mois avec le code CAMOUFOX → crawlbase.com |
| Scrappey est une API de Web Scraping qui ne facture que les scrapings réussis avec un paiement à l'utilisation — sans abonnement. Scrapez des sites complexes. Proxies résidentiels inclus, pas de frais de proxy cachés ni de soldes expirants. Une API pour le HTTP direct, le rendu complet du navigateur, les pages JavaScript lourdes, les captures d'écran, les sessions, plus de 30 actions de navigateur et plus de 200 sessions simultanées à la fois — approuvée par plus de 1000 développeurs et agents IA. Obtenez 10 % de réduction avec le code CAMOUFOX. |
Fournisseurs de proxies
Camoufox est conçu pour être utilisé avec des proxies rotatifs (de préférence des IP résidentielles). Consultez ces fournisseurs :
|
🚀 Camoufox × ProxyEmpire Vous utilisez Camoufox ? Votre couche proxy décide si vous montez en échelle — ou si vous êtes bloqué. ProxyEmpire propose : • 🌍 30M+ IP résidentielles (170+ pays) • 📱 Proxies mobiles 4G/5G • 🔄 Sessions rotatives et persistantes • ⚡ Sessions simultanées illimitées • 🎯 Ciblage géographique précis • Support HTTP, HTTPS et SOCKS5 Conçu pour le scraping, l'automatisation et les workflows de haute discrétion. 🔥 Offre exclusive - Utilisez le code Camoufox30 Obtenez 30 % de réduction récurrente (pas seulement le premier mois). Améliorez vos proxies. Réduisez les blocages. Passez à l'échelle correctement. |
|
Hé, nous avons construit BirdProxies parce que les proxies ne devraient pas être compliqués ou trop chers. Des proxies résidentiels et FAI rapides dans plus de 195 emplacements, des prix équitables et un support réel. Essayez notre jeu FlappyBird sur la page d'accueil pour obtenir des données gratuites ! Essayer maintenant | Discord |
|
RapidProxy - Boostez vos données avec des proxies premium. 🎁 Essayez les proxies gratuitement + Utilisez le code RAPID10 pour 10% DE RÉDUCTION Pourquoi choisir RapidProxy ? • 🌍 90M+ IP dans plus de 200 pays et régions • ♾️ Pas de date d'expiration sur le trafic — utilisez à tout moment, sans pression • 🔥 Concurrence illimitée pour des performances maximales • 💰 À partir de seulement 0,65 $/Go — conçu pour l'échelle • 📍 Ciblage au niveau de la ville pour un accès géographique précis • 🔄 Contrôle de session flexible adapté à vos besoins Ne manquez pas l'occasion — commencez votre essai gratuit dès aujourd'hui et découvrez des performances proxy rapides, stables et évolutives avec RapidProxy. |
|
Swiftproxy - Proxies résidentiels haute performance pour la collecte de données à grande échelle Conçu pour les développeurs qui ont besoin d'une infrastructure proxy fiable et anti-détection. Swiftproxy fournit des connexions stables, des taux de succès élevés et un contrôle flexible pour le scraping et l'automatisation à grande échelle. • 🌍 195+ emplacements avec des IP résidentielles sourcées éthiquement • 🔄 Sessions rotatives et persistantes avec ciblage géographique précis • ⚡ Optimisé pour l'anti-blocage et un taux de succès élevé • 🔌 Support HTTP / HTTPS / SOCKS5 • 🧪 Essai gratuit de 500 Mo pour tester • 💸 Code de réduction spécial pour les utilisateurs de Camoufox : PROXY90 - 10% Idéal pour : Web scraping, automatisation, multi-comptes et extraction de données à grande échelle |
|
MangoProxy est un service de proxy résidentiel, FAI, mobile et datacenter conçu pour les tâches professionnelles où la stabilité, la vitesse et l'anonymat comptent. Utilisez le code DAIJRO pour 8% DE RÉDUCTION sur les Proxies Statiques FAI |
|
9Proxy fournit des proxies résidentiels à partir de seulement 0,018 $/IP ou 0,68 $/Go. Plus de 20M d'IP dans plus de 90 pays. Sessions persistantes ou rotatives, gérées depuis l'application desktop ou mobile. |
|
NodeMaven : Le fournisseur de proxy le plus fiable avec les IP de la plus haute qualité sur le marché. Meilleure solution pour l'automatisation, le web scraping, la recherche SEO et la gestion des réseaux sociaux. NodeMaven propose : • Sessions persistantes jusqu'à 7 jours • 99,9 % de disponibilité • Filtrage IP : tous les proxies ont un score de fraude <97% • Aucun KYC requis • Remboursement sur le trafic - utilisez des Go et gagnez jusqu'à 10 % de retour Offre spéciale : Utilisez le code CAMOUFOX35 pour obtenir 35 % de réduction sur les Proxies. |
|
Proxidize | Proxies mobiles et résidentiels pour Camoufox Vous utilisez Camoufox à grande échelle ? Votre configuration de navigateur n'est que la moitié de la pile. Votre couche proxy compte aussi. Proxidize fournit des proxies mobiles et résidentiels conçus pour le scraping, l'automatisation de navigateur, la surveillance SEO, les agents IA et les workflows de collecte de données. Pourquoi Proxidize ? • Vrais proxies mobiles 4G et 5G • Proxies résidentiels dans plus de 195 pays • Sessions rotatives et persistantes • Ciblage au niveau de la ville et de l'opérateur • Concurrence illimitée • Support HTTP(S), SOCKS5 et UDP sur SOCKS • Aucun matériel ou configuration DIY requis Conçu pour les équipes qui ont besoin d'une infrastructure proxy fiable sans gérer les appareils, les serveurs ou la rotation des proxies elles-mêmes. Offre spéciale pour les utilisateurs de Camoufox : Utilisez le code CAMOUFOX20 pour 20 % de réduction. Commencez maintenant : https://proxidize.com |
Introduction
Camoufox est un fork de Firefox conçu pour le web scraping et les agents IA. Il est headless, indétectable et optimisé pour fonctionner à grande échelle. Chaque exécution obtient une identité fraîche issue de la distribution réelle des appareils, se fondant ainsi dans le trafic normal sans se faire remarquer.
Points forts
- Conçu pour les agents IA 🤖
- Firefox minimaliste et dégraissé - lancement rapide, coût d'exécution réduit
- Compatibilité Playwright prête à l'emploi via l'interface Python
- Invisible pour les systèmes anti-bot, vous pouvez donc exécuter votre cluster d'agents localement ou dans le cloud sans être signalé
- Indétectable par conception 🎭
- L'automatisation de page est cachée de l'inspection JavaScript. Voir la page furtive pour plus de détails.
- Injection et rotation d'empreintes numériques (sans injection JS !)
- Toutes les propriétés du navigateur (appareil, OS, matériel, navigateur, etc.) ✅
- Taille d'écran, résolution, propriétés de la fenêtre et de la vue (viewport) ✅
- Géolocalisation, fuseau horaire, locale et usurpation Intl ✅
- Usurpation IP WebRTC au niveau du protocole ✅
- Voix, taux de lecture vocale, etc. ✅
- Et bien plus encore !
- Anti-empreinte graphique
- Paramètres WebGL, extensions supportées, attributs de contexte et formats de précision du shader ✅
- Usurpation de polices et anti-empreinte ✅
- Optimisé pour l'automatisation
- Mouvement de souris similaire à l'humain 🖱️
- Bloque et contourne les publicités 🛡️
- Aucune animation CSS 💨
- Dégraissé et optimisé pour l'efficacité mémoire ⚡
- Package PyPi pour les mises à jour et l'injection automatique d'empreintes 📦
- Reste à jour avec la dernière version de Firefox 🕓
Injection d'empreintes numériques
Dans Camoufox, les données sont interceptées au niveau de l'implémentation C++, rendant les modifications indétectables par inspection JavaScript.
Pour usurper des propriétés d'empreinte individuelles, passez un JSON contenant les propriétés à usurper à l'interface Python :```py
with Camoufox(config={"property": "value"}) as browser:
Les données de configuration non définies par l'utilisateur seront automatiquement renseignées à l'aide des empreintes [BrowserForge](https://github.com/daijro/browserforge), qui imitent la distribution statistique des caractéristiques des appareils dans le trafic réel.
[[See implemented properties](https://camoufox.com/fingerprint/)]
---
## Utilisation en Python
Camoufox est compatible avec votre code Playwright existant. Vous avez seulement à modifier l'initialisation de votre navigateur.
**API synchrone**```python
from camoufox.sync_api import Camoufox
with Camoufox() as browser:
page = browser.new_page()
page.goto("https://example.com")
API asynchrone```python from camoufox.async_api import AsyncCamoufox
async with AsyncCamoufox() as browser: page = await browser.new_page() await page.goto("https://example.com")
[[Installation et utilisation](https://camoufox.com/python/)]
### Tirer pleinement parti de l'usurpation matérielle
Pour les versions stables, vous devriez toujours utiliser le paquet pip principal [`camoufox`](https://pypi.org/project/camoufox/). Cependant, si vous souhaitez utiliser les empreintes par contexte et l'usurpation matérielle, utilisez le paquet [`cloverlabs-camoufox`](https://pypi.org/project/cloverlabs-camoufox/). Ce paquet est mis à jour à chaque publication, alors que le paquet officiel est publié avec un délai.
Assurez-vous d'utiliser un environnement virtuel pour éviter les conflits entre les deux paquets.
**Installation**```bash
pip install cloverlabs-camoufox
Télécharger le dernier navigateur en préversion (recommandé pour les correctifs les plus récents)```bash python -m camoufox sync python -m camoufox set official/prerelease python -m camoufox fetch
**Utilisation** — l'API est identique à celle du package en amont :```python
from camoufox.sync_api import Camoufox
with Camoufox() as browser:
page = browser.new_page()
page.goto("https://example.com")
Préréglages d'empreintes réelles (recommandé pour les binaires v149+)
Par défaut, les valeurs d'empreintes sont synthétisées par BrowserForge. Pour une meilleure évasion face aux contrôles de cohérence complexes, optez pour les préréglages fournis — des empreintes réelles extraites du trafic Firefox réel :```python with Camoufox(fingerprint_preset=True, os="macos") as browser: ...
La bibliothèque achemine automatiquement en fonction de la version binaire : Firefox ≥ 149 charge `fingerprint-presets-v150.json` (312 presets couvrant v149–v152, 67 macOS / 180 Windows / 65 Linux) ; les binaires plus anciens reviennent au bundle original. Les chaînes UA sont réécrites pour correspondre au binaire actif, donc l’adhésion est sûre entre les versions. Passez un dict de preset au lieu de `True` pour épingler une empreinte spécifique.
---
## Capacités
Voici une liste de correctifs et de fonctionnalités implémentés dans Camoufox.
### Spoofing d’empreinte
- Spoofing des propriétés du navigator (appareil, navigateur, locale, etc.)
- Prise en charge de l’émulation de la taille d’écran, de la résolution, etc.
- Spoofing des paramètres WebGL, des extensions supportées, des attributs de contexte et des formats de précision des shaders.
- Spoofing des tailles de fenêtre interne et externe
- Spoofing du taux d’échantillonnage AudioContext, de la latence de sortie et du nombre maximal de canaux
- Spoofing des voix et des débits de lecture de l’appareil
- Spoofing du nombre de microphones, webcams et haut-parleurs disponibles.
- Les en-têtes réseau (Accept-Languages et User-Agent) sont usurpés pour correspondre aux propriétés du navigator
- Spoofing IP WebRTC au niveau du protocole
- Spoofing de la géolocalisation, du fuseau horaire et de la locale
- Spoofing de l’API Battery
- etc.
### Correctifs furtifs
- Évite les fuites d’exécution dans le contexte principal. Tout le javascript de l’agent de page est isolé
- Évite les fuites de contexte d’exécution dans les frames
- Corrige la détection de `navigator.webdriver`
- Corrige la détection headless de Firefox via le type de pointeur ([#26](https://github.com/daijro/camoufox/issues/26))
- Supprime les correctifs anti-zoom/meta viewport potentiellement fuyants
- Utilise des tailles d’écran et de fenêtre non par défaut
- Réactive les isolations de contenu fission
- Réactive PDF.js
- Autres propriétés de configuration fuyantes modifiées
- Mouvement du curseur semblable à celui d’un humain
### Anti-empreinte de police
- Utilise automatiquement les polices système correctes pour votre User Agent
- Inclus les polices système Windows, Mac et Linux
- Empêche l’empreinte des métriques de police en décalant aléatoirement l’espacement des lettres
### Support Playwright
- Implémentation personnalisée de Playwright pour la dernière version de Firefox
- Divers correctifs de configuration pour échapper à la détection de bot
### Dégraissage/Optimisations
- Suppression/désactivation de _beaucoup, beaucoup_ de services Mozilla. Fonctionne plus rapidement que le Mozilla Firefox original et utilise moins de mémoire (200 Mo)
- Correctifs de LibreWolf et Ghostery pour aider à supprimer la télémétrie et le bloat
- Configuration dégraissée de PeskyFox, LibreWolf et autres
- Optimisations de vitesse et de réseau de FastFox
- Suppression de toutes les animations CSS
- Thème minimaliste
- etc.
### Extensions
- Charger des extensions Firefox sans serveur de débogage en passant une liste de chemins à la propriété `addons`
- Ajout d’uBlock Origin avec des filtres de confidentialité personnalisés
- Les extensions ne sont pas autorisées à ouvrir des onglets
- Les extensions sont automatiquement activées en mode Navigation privée
- Les extensions sont automatiquement épinglées à la barre d’outils
- Corrige les fuites DNS avec le préchargement uBO
### Interface Python
- Génère et injecte automatiquement des caractéristiques d’appareil uniques dans Camoufox en fonction de leur distribution réelle
- Injection et rotation d’empreinte WebGL
- Utilise les polices système correctes ainsi que l’anticrénelage et l’indication subpixel en fonction de votre OS cible
- Évite la détection par proxy en calculant votre géolocalisation cible, votre fuseau horaire et votre locale à partir de la région cible de votre proxy
- Calcule et usurpe la langue du navigateur en fonction de la distribution des locuteurs de la langue dans la région cible du proxy
- Hébergement sur serveur distant pour utiliser Camoufox avec d’autres langages supportant Playwright
- Tampon d’affichage virtuel intégré pour exécuter Camoufox en mode headfull sur un serveur headless
- Activer/Désactiver le chargement des images, WebRTC et WebGL
- etc.
> [!NOTE]
> Camoufox ne supporte pas **entièrement** l’injection d’empreintes Chromium. Certains WAF (comme [Interstitial](https://nopecha.com/demo/cloudflare)) testent le comportement du moteur Spidermonkey, ce qui est impossible à usurper.
---
# Aperçu de la furtivité
## Comment Camoufox cache sa bibliothèque d’automatisation
> [!WARNING]
> **Statut actuel en 2026** :
> Il y a eu un an de pause dans la maintenance en raison d’une situation personnelle. Camoufox a perdu en performance à cause de la version de base de Firefox et d’incohérences nouvellement découvertes dans les empreintes. **Camoufox est actuellement en développement actif.**
Dans Camoufox, tout le code de l’agent de page interne de Playwright est isolé et cloisonné. Cela rend impossible pour une page de détecter la présence de Playwright par inspection Javascript.
Normalement, Playwright injecte du JavaScript dans la page, comme `window.__playwright__binding__`, et pour effectuer des actions comme interroger des éléments, évaluer du javascript ou exécuter des scripts d’initialisation, ce qui peut être détecté par les sites web. Dans Camoufox, ces actions sont gérées dans une portée isolée en dehors de la page. En d’autres termes, les sites web ne peuvent plus « voir » le JavaScript que Playwright injecterait typiquement. Cela empêche totalement les traces de Playwright.
Cependant, même en cachant sa bibliothèque d’automatisation, Camoufox n’est pas à l’abri des incohérences dans la rotation des empreintes. Cela nécessite toujours une maintenance pour les repérer et les corriger.
### Interactions avec la page
Les systèmes anti-bot exécutent également des scripts côté client pour surveiller votre comportement. Par exemple, ils recherchent des schémas dans les mouvements de souris, les clics, le défilement et le timing entre les actions.
<video controls src="https://github.com/user-attachments/assets/6d33d6af-3537-4603-bf24-6bd3f4f8f455" width="200px" loop muted></video>
Camoufox fait de son mieux avec son algorithme de mouvement de souris humanoïde. L’algorithme de mouvement naturel provient à l’origine de [HumanCursor de riflosnake](https://github.com/riflosnake/HumanCursor) et a été réécrit en C++ et modifié pour des trajectoires plus conscientes de la distance.
Cependant, ce n’est pas parfait. Il peut encore être détecté avec une analyse suffisamment sophistiquée. (En cours pour l’avenir)
---
## Comment Camoufox alterne les identités
Les agents IA doivent fonctionner sur plusieurs sessions sans être signalés ou limités. Alterner votre adresse IP ne suffit pas — chaque session de navigateur transporte des milliers de signaux qui créent une **empreinte** unique. Un site web peut voir votre OS, GPU, résolution d’écran, polices, fuseau horaire, etc. Si ces signaux sont incohérents ou inhabituels, vous êtes bloqué.
### Distribution des parts de marché
Même si vous alternez votre IP pour chaque instance de bot en cours d’exécution, les pare-feux web peuvent utiliser l’apprentissage automatique pour analyser le trafic entrant et détecter s’il est anormal. Si la part de marché Linux était de 5 %, puis soudainement de 20 %, c’est un signal d’alarme. Ils exigeront inconditionnellement que tous les utilisateurs Linux remplissent un captcha.
Camoufox utilise le générateur d’empreintes [BrowserForge](https://github.com/daijro/browserforge) pour imiter la distribution statistique des données d’appareil dans le trafic réel. Par exemple, Camoufox fera ressembler votre navigateur à un utilisateur Linux 5 % du temps. Sur ces 5 %, il usurpera une résolution d’écran 2560x1440 9,5 % du temps et un GPU Intel HD 27,5 % du temps.
### Comment Camoufox peut-il être détecté ?
Camoufox peut usurper des empreintes avec une part de marché correcte. Cependant, **les empreintes doivent également être cohérentes en interne.** Un agent utilisateur Windows avec un GPU Apple M1, un agent utilisateur MacOS avec un renderer DirectX Windows, et un appareil mobile avec une résolution d’écran de bureau sont tous impossibles et seront signalés comme suspects.
Parmi les milliers de points de données possibles qui doivent être modifiés pour créer une empreinte usurpée crédible, où chaque changement doit être cohérent avec les autres, Camoufox ne réussit pas toujours. Les fournisseurs anti-bot testent Camoufox encore et encore pour trouver ne serait-ce qu’une seule incohérence, puis mettent immédiatement à jour leurs scripts d’arrière-plan pour la tester.
---
## Comment Camoufox se compare-t-il aux autres solutions ?
### Solutions basées sur JavaScript
Dans le passé, les développeurs essayaient d’injecter du JavaScript pour usurper ces valeurs, mais cela ne fonctionne pas de manière fiable car JavaScript ne peut pas tout usurper. Une couverture incomplète entraîne des empreintes incohérentes. Par exemple, un système anti-bot vous signalera si le User Agent de votre requête réseau ne correspond pas au User Agent de votre navigator.
De plus, tout JavaScript injecté est détectable d’une manière ou d’une autre. Les systèmes anti-bot peuvent vérifier si `Object.getOwnPropertyDescriptor` révèle une propriété écrasée, si `toString()` d’une fonction ne renvoie plus `[native code]` (révélant qu’elle a été détournée), ou si les données dans le contexte de la fenêtre ne correspondent pas au contexte du thread worker. Les solutions de contournement ne vont que jusqu’à un certain point, mais il y aura toujours un moyen de détecter l’injection JS si l’on cherche suffisamment profondément.
#### L’approche de Camoufox
Étant donné que Camoufox intercepte les appels au niveau de l’implémentation C++ du navigateur, tous les objets et propriétés détournés apparaissent natifs. Il n’y a aucun détournement JavaScript à détecter.
Camoufox tente également de générer des empreintes cohérentes et crédibles avec Browserforge. Cependant, cela peut encore être détecté par des méthodes complexes de détection d’empreinte comme les données discordantes (comme décrit précédemment).
<hr width=50>
### Bibliothèques basées sur CDP
CDP (Chrome DevTools Protocol) est un protocole d’automatisation intégré à Chromium et Firefox. Cependant, CDP ne fait aucun effort pour cacher le fait qu’il s’agit d’un protocole d’automatisation et expose une grande partie de ses fonctionnalités dans la portée de la page. Certaines méthodes courantes sont la vérification de `navigator.webdriver` à true, la capture de la lecture de la pile du débogueur, la vérification de variables que ChromeDriver injecte dans l’objet document pour la communication interne, etc.
#### L’approche de Camoufox
Alors que Playwright utilise CDP pour contrôler Chromium, il utilise _Juggler_ pour Firefox. Juggler est un protocole personnalisé développé avant que Firefox ne supporte CDP ([dépôt original](https://github.com/puppeteer/juggler)). C’est un module distinct dans Firefox, et non une partie de son noyau. Cela le rend plus facile à éditer et à contrôler ce qui est révélé à la page.
Camoufox modifie Juggler pour lui donner sa propre « copie » isolée de la page avec laquelle travailler. Playwright peut lire et éditer librement sa propre version de la page. Tout semble fonctionner normalement pour lui, mais la page réelle est complètement inchangée par ces modifications. La page ne peut pas non plus détecter quand des choses sont lues (via des astuces comme le détournement de getters) ou des écouteurs ajoutés pour surveiller des éléments.
De plus, Juggler envoie ses entrées directement via les gestionnaires d’entrée utilisateur originaux de Firefox, ce qui signifie qu’elles sont traitées exactement de la même manière que si vous utilisiez le navigateur normalement. Camoufox modifie également le mode headless de Firefox pour qu’il apparaisse identique à un fonctionnement dans une fenêtre normale. Mais en dernier recours, la bibliothèque Python peut exécuter Camoufox dans un [affichage virtuel](https://camoufox.com/python/virtual-display/) si le mode headless fuit jamais.
---
<h1 align="center">Système de construction</h1>
> [!WARNING]
> Le contenu ci-dessous est destiné aux personnes intéressées par la construction et le débogage de Camoufox. Pour les instructions d’utilisation de Playwright, voir [ici](https://github.com/daijro/camoufox/tree/main/pythonlib#camoufox-python-interface).
### Aperçu
Voici un schéma du système de construction et de ses commandes make associées :```mermaid
graph TD
FFSRC[Firefox Source] -->|make fetch| REPO
subgraph REPO[Camoufox Repository]
PATCHES[Fingerprint masking patches]
ADDONS[uBlock & B.P.C.]
DEBLOAT[Debloat/optimizations]
SYSTEM_FONTS[Win, Mac, Linux fonts]
JUGGLER[Patched Juggler]
end
subgraph Local
REPO -->|make dir| PATCH[Patched Source]
PATCH -->|make build| BUILD[Built]
BUILD -->|make package-linux| LINUX[Linux Portable]
BUILD -->|make package-windows| WIN[Windows Portable]
BUILD -->|make package-macos| MAC[macOS Portable]
end
Ceci était à l'origine basé sur le système de construction de LibreWolf.
CLI de construction
[!WARNING] Le système de construction de Camoufox est conçu pour être utilisé sous Linux. WSL ne fonctionnera pas !
Commencez par cloner ce dépôt avec Git :```bash git clone --depth 1 https://github.com/daijro/camoufox cd camoufox
Ensuite, compilez le code source de Camoufox avec la commande suivante :```bash
make dir
Avant le bootstrap, installez les dépendances système de construction avec le script d'assistance. Il détecte votre plateforme et installe tout ce dont la construction a besoin (Python ≥ 3.11, Rust, aria2, p7zip, go, msitools, wget, sqlite, et les outils de construction de base) en utilisant le gestionnaire de paquets approprié — Homebrew sur macOS, ou apt/dnf/pacman sur Linux :```bash
bash scripts/install-deps.sh
> [!NOTE]
> L'installateur de dépendances n'a été testé que sur macOS jusqu'à présent.
Après cela, vous devez amorcer votre système pour pouvoir construire Camoufox. Vous n'avez à le faire qu'une seule fois. Cela se fait en exécutant la commande suivante :```bash
make bootstrap
Enfin, vous pouvez construire et empaqueter Camoufox avec la commande suivante:```bash python3 multibuild.py --target linux windows macos --arch x86_64 arm64 i686
Pour les nouvelles versions, `i686` est pris en charge uniquement pour Windows. Les combinaisons cible/architecture non prises en charge sont ignorées.
<details>
<summary>
Paramètres CLI
</summary>```bash
Options:
-h, --help show this help message and exit
--target {linux,windows,macos} [{linux,windows,macos} ...]
Target platforms to build
--arch {x86_64,arm64,i686} [{x86_64,arm64,i686} ...]
Target architectures to build for each platform
--bootstrap Bootstrap the build system
--clean Clean the build directory before starting
Example:
$ python3 multibuild.py --target linux windows macos --arch x86_64 arm64
Utilisation de Docker
Camoufox peut être construit via Docker sur toutes les plateformes.
- Créez l'image Docker contenant le code source de Firefox :```bash docker build -t camoufox-builder .
2. Construisez les correctifs Camoufox pour une plateforme et une architecture cibles :```bash
docker run -v "$(pwd)/dist:/app/dist" camoufox-builder --target <os> --arch <arch>
Comment puis-je utiliser mon répertoire local ~/.mozbuild ?
Si vous souhaitez utiliser le répertoire .mozbuild de l'hôte, vous pouvez utiliser la commande suivante pour exécuter le docker :```bash
docker run
-v "$HOME/.mozbuild":/root/.mozbuild:rw,z
-v "$(pwd)/dist:/app/dist"
camoufox-builder
--target
--arch
</details>
<details>
<summary>
Paramètres CLI Docker
</summary>```bash
Options:
-h, --help show this help message and exit
--target {linux,windows,macos} [{linux,windows,macos} ...]
Target platforms to build
--arch {x86_64,arm64,i686} [{x86_64,arm64,i686} ...]
Target architectures to build for each platform
--bootstrap Bootstrap the build system
--clean Clean the build directory before starting
Example:
$ docker run -v "$(pwd)/dist:/app/dist" camoufox-builder --target windows macos linux --arch x86_64 arm64 i686
Outils de développement
Les artefacts de construction apparaîtront désormais dans le dossier dist/.
Ce dépôt est livré avec une interface utilisateur de développement dans scripts/developer.py :``` make edits
Les correctifs peuvent être modifiés, créés, supprimés et gérés ici.
<img src="https://assets.kitploit.com/production/public/readmes/41473/19bffc384c42fb6eb69b3ee59622daed4770cf0f11ffe39401eca57a7d2457f4.png">
### Comment créer un correctif
1. Dans l'interface développeur, cliquez sur **Reset workspace**.
2. Apportez les modifications nécessaires dans le dossier `camoufox-*/`. Vous pouvez tester vos modifications avec `make build` et `make run`.
3. Une fois les modifications terminées, cliquez sur **Write workspace to patch** et enregistrez le fichier de correctif.
### Comment travailler sur un correctif existant
1. Dans l'interface développeur, cliquez sur **Edit a patch**.
2. Sélectionnez le correctif que vous souhaitez modifier. Votre espace de travail sera réinitialisé à l'état du correctif sélectionné.
3. Une fois les modifications terminées, cliquez sur **Write workspace to patch** et remplacez le fichier de correctif existant.
---
## Débogage des fuites
Ceci est un organigramme illustrant mon processus pour identifier les fuites sans désobfusquer le JavaScript des WAF. La méthode réintroduit progressivement les fonctionnalités de Camoufox dans le code source de Firefox jusqu'à ce que le site de test les signale.
Ce processus nécessite un système Linux et suppose que vous avez installé les outils de compilation de Firefox (voir [ici](https://github.com/daijro/camoufox?tab=readme-ov-file#build-cli)).
<details>
<summary>
Voir l'organigramme...
</summary>```mermaid
flowchart TD
A[Start] --> B[Does website flag in the official Firefox?]
B -->|Yes| C[Likely bad IP/rate-limiting. If the website fails on both headless and headful mode on the official Firefox distribution, the issue is not with the browser.]
B -->|No| D["Run make ff-dbg(1) and build(2) a clean distribution of Firefox. Does the website flag in Firefox **headless** mode(4)?"]
D -->|Yes| E["Does the website flag in headful mode(3) AND headless mode(4)?"]
D -->|No| F["Open the developer UI(5), apply config.patch, then rebuild(2). Does the website still flag(3)?"]
E -->|No| G["Enable privacy.resistFingerprinting in the config(6). Does the website still flag(3)?"]
E -->|Yes| C
G -->|No| H["In the config(6), enable FPP and start omitting overrides until you find the one that fixed the leak."]
G -->|Yes| I[If you get to this point, you may need to deobfuscate the Javascript behind the website to identify what it's testing.]
F -->|Yes| K["Open the developer UI, apply the playwright bootstrap patch, then rebuild. Does it still flag?"]
F -->|No| J["Omit options from camoufox.cfg(6) and rerun(3) until you find the one causing the leak."]
K -->|No| M[Juggler needs to be debugged to locate the leak.]
K -->|Yes| L[The issue has nothing to do with Playwright. Apply the rest of the Camoufox patches one by one until the one causing the leak is found.]
M --> I
Commandes citées
| # | Commande | Description |
|---|---|---|
| (1) | make ff-dbg | Configure Firefox vanilla avec des correctifs minimaux. |
| (2) | make build | Compiler le code source. |
| (3) | make run | Exécute le navigateur compilé. |
| (4) | make run args="--headless https://test.com" | Exécuter une URL en mode headless. Toutes les redirections seront affichées dans la console pour déterminer si le test a réussi. |
| (5) | make edits | Ouvre l'interface développeur. Permet à l'utilisateur d'appliquer/annuler des correctifs, et de voir quels correctifs sont actuellement appliqués. |
| (6) | make edit-cfg | Modifier camoufox.cfg dans l'éditeur système par défaut. |
Remerciements
Débloatage & références :
- LibreWolf : Correctifs de débloatage et inspiration du système de build
- BetterFox : Préférences de vitesse et de débloatage
- Ghostery : Référence de débloatage (désactiver l'onboarding)
Web scraping & tests :
- riflosnake/HumanCursor : Algorithme original de mouvement de curseur humanoïde, porté en C++
- CreepJS, Browserleaks, BrowserScan - Sites précieux pour les tests de fuites
Thème de l'interface utilisateur :
- Jamir-boop/minimalisticfox : A inspiré le thème CSS minimal de Camoufox (lien)