
camoufox v152.0.4-beta.29
🦊 Browser anti-rilevamento
Camoufox
Camoufox è un browser open source anti-rilevamento progettato per il web scraping e gli agenti AI. 🦊
⚠️ Questo progetto è in fase di sviluppo. Potrebbe non essere adatto per un uso stabile in produzione. ⚠️
[!NOTE] Tutta la documentazione più recente è disponibile su camoufox.com.
[!NOTE] Lo sviluppo del browser è attivo su github.com/CloverLabsAI/camoufox e github.com/VulpineOS/VulpineOS.
Questa repository viene utilizzata per unire le release checkpoint e deve essere trattata come la copia master.
Sponsor
Mostra/Riduci Tutto
| Scrapfly è una soluzione di livello enterprise che fornisce un'API di Web Scraping volta a semplificare il processo di scraping gestendo tutto: rendering del browser reale, proxy rotanti e fingerprint (TLS, HTTP, browser) per bypassare tutti i principali anti-bot. Scrapfly sblocca inoltre l'osservabilità fornendo una dashboard analitica e misurando in dettaglio il tasso di successo/blocco. |
| Clover Labs è un venture studio con sede a Toronto che crea agenti AI per crescita e distribuzione. |
| SerpApi, un'API di ricerca web per fare scraping di Google e altri motori di ricerca con una semplice API. |
|
Talordata è una semplice API di ricerca web per fare scraping di Google e altri motori di ricerca a una frazione del costo. Ottieni 1.000 richieste gratuite alla registrazione e paghi solo $0,25 per 1.000 risposte riuscite—zero addebiti per gli scrape falliti. Usa il codice coupon CAMOUFOX per 10% DI SCONTO sui proxy residenziali. [Discord] |
|
Dati web che sopravvivono agli anti-bot. Crawlbase offre a sviluppatori e team AI dati affidabili su larga scala: un Crawler con tasso di successo del 99%, API di Crawling, Smart AI Proxies e Web MCP Server che superano i blocchi, così i tuoi scraper e agenti non si rompono. Tu costruisci, noi gestiamo l'infrastruttura. Ottieni il 15% di sconto sui primi 3 mesi con il codice CAMOUFOX → crawlbase.com |
| Scrappey è un'API di Web Scraping che addebita solo gli scrape riusciti con pagamento a consumo - niente abbonamenti. Scrapa siti complessi. Proxy residenziali inclusi, nessuna commissione nascosta sui proxy, né saldi in scadenza. Un'unica API per HTTP diretto, rendering completo del browser, pagine con molto JavaScript, screenshot, sessioni, oltre 30 azioni del browser e più di 200 sessioni simultanee - utilizzata da oltre 1000 sviluppatori e agenti AI. Ottieni il 10% di sconto con il codice CAMOUFOX. |
Fornitori di proxy
Camoufox è pensato per essere utilizzato con proxy rotanti (idealmente IP residenziali). Dai un'occhiata a questi fornitori:
|
🚀 Camoufox × ProxyEmpire Stai usando Camoufox? Il tuo livello proxy decide se puoi scalare — o se vieni bloccato. ProxyEmpire offre: • 🌍 Oltre 30M di IP residenziali (170+ paesi) • 📱 Proxy mobili 4G/5G • 🔄 Sessioni rotanti e sticky • ⚡ Sessioni simultanee illimitate • 🎯 Geo-targeting preciso • Supporto HTTP, HTTPS e SOCKS5 Progettato per scraping, automazione e flussi di lavoro ad alta stealth. 🔥 Offerta esclusiva - Usa il codice Camoufox30 Ottieni uno sconto ricorrente del 30% (non solo il primo mese). Migliora i tuoi proxy. Riduci i ban. Scala correttamente |
|
Ehi, abbiamo creato BirdProxies perché i proxy non dovrebbero essere complicati o sovrapprezzati. Proxy residenziali e ISP veloci in oltre 195 località, prezzi equi e supporto reale. Prova il nostro gioco FlappyBird sulla landing page per dati gratuiti! Prova Ora | Discord |
|
RapidProxy - Potenzia i tuoi dati con proxy premium. 🎁 Prova i proxy gratuitamente + Usa il codice RAPID10 per il 10% DI SCONTO Perché scegliere RapidProxy? • 🌍 Oltre 90M di IP in oltre 200 paesi e regioni • ♾️ Nessuna scadenza sul traffico — usalo quando vuoi, senza pressioni • 🔥 Concorrenza illimitata per prestazioni massime • 💰 A partire da soli $0,65/GB — progettato per scalare • 📍 Targeting a livello di città per un accesso geografico preciso • 🔄 Controllo flessibile delle sessioni adattato alle tue esigenze Non perdertelo — inizia oggi la tua prova gratuita e scopri prestazioni proxy veloci, stabili e scalabili con RapidProxy. |
|
Swiftproxy - Proxy residenziali ad alte prestazioni per la raccolta dati su larga scala Progettato per sviluppatori che necessitano di un'infrastruttura proxy affidabile e anti-rilevamento. Swiftproxy offre connessioni stabili, tassi di successo elevati e controllo flessibile per scraping e automazione su larga scala. • 🌍 Oltre 195 località con IP residenziali provenienti da fonti etiche • 🔄 Sessioni rotanti e sticky con geo-targeting preciso • ⚡ Ottimizzato per anti-ban e alto tasso di successo • 🔌 Supporto HTTP / HTTPS / SOCKS5 • 🧪 Prova gratuita da 500MB per testare • 💸 Codice sconto speciale per gli utenti Camoufox: PROXY90 - 10% Ideale per: web scraping, automazione, multi-accounting ed estrazione dati su larga scala |
|
MangoProxy è un servizio proxy residenziale, ISP, mobile e datacenter progettato per attività professionali in cui stabilità, velocità e anonimato contano. Usa il codice DAIJRO per l'8% DI SCONTO sui proxy statici ISP |
|
9Proxy offre proxy residenziali a partire da soli $0,018/IP o $0,68/GB. Oltre 20M di IP in più di 90 paesi. Sessioni sticky o rotanti, gestibili da app desktop o mobile. |
|
NodeMaven: il fornitore di proxy più affidabile con gli IP della massima qualità sul mercato. La soluzione migliore per automazione, web scraping, ricerca SEO e gestione dei social media. NodeMaven offre: • Sessioni sticky fino a 7 giorni • Uptime del 99,9% • Filtro IP: tutti i proxy hanno un punteggio di frode <97% • Nessuna KYC richiesta • Cashback sul traffico - consuma GB e ottieni fino al 10% indietro Offerta speciale: usa il codice CAMOUFOX35 per ottenere il 35% di sconto sui proxy. |
|
Proxidize | Proxy mobili e residenziali per Camoufox Stai usando Camoufox su larga scala? La configurazione del tuo browser è solo metà dello stack. Anche il tuo livello proxy conta. Proxidize fornisce proxy mobili e residenziali progettati per scraping, automazione del browser, monitoraggio SEO, agenti AI e flussi di lavoro di raccolta dati. Perché Proxidize? • Veri proxy mobili 4G e 5G • Proxy residenziali in oltre 195 paesi • Sessioni rotanti e sticky • Targeting a livello di città e di operatore • Concorrenza illimitata • Supporto HTTP(S), SOCKS5 e UDP su SOCKS • Nessun hardware o configurazione fai-da-te richiesta Progettato per team che necessitano di un'infrastruttura proxy affidabile senza gestire dispositivi, server o rotazione dei proxy. Offerta speciale per gli utenti Camoufox: usa il codice CAMOUFOX20 per il 20% di sconto. Inizia ora: https://proxidize.com |
Introduzione
Camoufox è un fork di Firefox progettato per il web scraping e gli agenti AI. È headless, non rilevabile e ottimizzato per funzionare su larga scala. Ogni esecuzione ottiene una nuova identità tratta dalla distribuzione reale dei dispositivi, così si mimetizza nel traffico normale invece di distinguersi.
Caratteristiche principali
- Progettato per gli agenti AI 🤖
- Firefox minimale e alleggerito - avvio rapido, costo di esecuzione ridotto
- Compatibilità Playwright diretta tramite interfaccia Python
- Invisibile ai sistemi anti-bot, così puoi eseguire il tuo cluster di agenti in locale o nel cloud senza essere segnalato
- Non rilevabile per progettazione 🎭
- Automazione delle pagine nascosta all'ispezione JavaScript. Consulta la pagina stealth per maggiori dettagli.
- Iniezione e rotazione delle fingerprint (senza iniezione JS!)
- Tutte le proprietà del navigator (dispositivo, OS, hardware, browser, ecc.) ✅
- Dimensioni dello schermo, risoluzione, finestra e proprietà del viewport ✅
- Spoofing di geolocalizzazione, fuso orario, locale e Intl ✅
- Spoofing IP WebRTC a livello di protocollo ✅
- Voci, velocità di riproduzione vocale, ecc. ✅
- E molto, molto altro!
- Anti fingerprint grafica
- Parametri WebGL, estensioni supportate, attributi di contesto e formati di precisione degli shader ✅
- Spoofing dei font e anti-fingerprinting ✅
- Ottimizzato per l'automazione
- Movimento del mouse simile a quello umano 🖱️
- Blocca e aggira gli annunci 🛡️
- Nessuna animazione CSS 💨
- Alleggerito e ottimizzato per l'efficienza della memoria ⚡
- Pacchetto PyPi per aggiornamenti e iniezione automatica delle fingerprint 📦
- Resta aggiornato con l'ultima versione di Firefox 🕓
Iniezione delle Fingerprint
In Camoufox, i dati vengono intercettati a livello di implementazione C++, rendendo le modifiche non rilevabili tramite l'ispezione JavaScript.
Per spoofare le singole proprietà della fingerprint, passa un JSON contenente le proprietà da spoofare all'interfaccia Python:```py
with Camoufox(config={"property": "value"}) as browser:
I dati di configurazione non impostati dall'utente verranno popolati automaticamente utilizzando le [BrowserForge](https://github.com/daijro/browserforge) fingerprint, che imitano la distribuzione statistica delle caratteristiche dei dispositivi nel traffico reale.
[[Vedi le proprietà implementate](https://camoufox.com/fingerprint/)]
---
## Utilizzo in Python
Camoufox è compatibile con il tuo codice Playwright esistente. Devi solo modificare l'inizializzazione del browser.
**API sincrona**```python
from camoufox.sync_api import Camoufox
with Camoufox() as browser:
page = browser.new_page()
page.goto("https://example.com")
API asincrona```python from camoufox.async_api import AsyncCamoufox
async with AsyncCamoufox() as browser: page = await browser.new_page() await page.goto("https://example.com")
[[Installazione e utilizzo](https://camoufox.com/python/)]
### Sfruttare appieno lo spoofing hardware
Per le versioni stabili, dovresti sempre usare il pacchetto pip principale [`camoufox`](https://pypi.org/project/camoufox/). Tuttavia, se vuoi sfruttare le impronte digitali per contesto e lo spoofing hardware, usa il pacchetto [`cloverlabs-camoufox`](https://pypi.org/project/cloverlabs-camoufox/). Questo pacchetto viene aggiornato a ogni release, mentre quello ufficiale viene pubblicato con ritardo.
Assicurati di usare un ambiente virtuale per evitare conflitti tra i due pacchetti.
**Installazione**```bash
pip install cloverlabs-camoufox
Recupera l'ultimo browser prerelease (consigliato per le patch più recenti)```bash python -m camoufox sync python -m camoufox set official/prerelease python -m camoufox fetch
**Utilizzo** — l'API è identica al pacchetto upstream:```python
from camoufox.sync_api import Camoufox
with Camoufox() as browser:
page = browser.new_page()
page.goto("https://example.com")
Preset di impronte digitali reali (consigliati per i binari v149+)
Per impostazione predefinita, i valori delle impronte digitali sono sintetizzati da BrowserForge. Per una migliore evasione dei controlli di coerenza complessi, opta per i preset inclusi — impronte digitali reali raccolte dal traffico Firefox in natura:```python with Camoufox(fingerprint_preset=True, os="macos") as browser: ...
The library auto-routes by binary version: Firefox ≥ 149 loads `fingerprint-presets-v150.json` (312 presets covering v149–v152, 67 macOS / 180 Windows / 65 Linux); older binaries fall back to the original bundle. UA strings are rewritten to match the active binary, so opting in is safe across versions. Pass a preset dict instead of `True` to pin a specific fingerprint.
---
## Funzionalità
Di seguito è riportato un elenco di patch e funzionalità implementate in Camoufox.
### Spoofing delle impronte digitali
- Spoofing delle proprietà del navigator (dispositivo, browser, locale, ecc.)
- Supporto per l'emulazione di dimensioni dello schermo, risoluzione, ecc.
- Spoofing dei parametri WebGL, delle estensioni supportate, degli attributi di contesto e dei formati di precisione degli shader.
- Spoofing delle dimensioni del viewport interno ed esterno della finestra
- Spoofing della frequenza di campionamento di AudioContext, della latenza di uscita e del numero massimo di canali
- Spoofing delle voci di dispositivo e delle velocità di riproduzione
- Spoofing del numero di microfoni, webcam e altoparlanti disponibili.
- Le intestazioni di rete (Accept-Languages e User-Agent) vengono spoofate per corrispondere alle proprietà del navigator
- Spoofing dell'IP WebRTC a livello di protocollo
- Spoofing di geolocalizzazione, fuso orario e locale
- Spoofing della Battery API
- ecc.
### Patch stealth
- Evita perdite di esecuzione nel mondo principale. Tutto il javascript dell'agente di pagina è in sandbox.
- Evita perdite del contesto di esecuzione dei frame
- Corregge il rilevamento di `navigator.webdriver`
- Corregge il rilevamento di Firefox headless tramite il tipo di puntatore ([#26](https://github.com/daijro/camoufox/issues/26))
- Rimosse le patch potenzialmente dispersive per la gestione dell'anti-zoom/meta viewport
- Utilizza dimensioni dello schermo e della finestra non predefinite
- Riabilita gli isolamenti dei contenuti fission
- Riabilita PDF.js
- Altre proprietà di configurazione dispersive modificate
- Movimento del cursore simile a quello umano
### Anti fingerprinting dei font
- Utilizza automaticamente i font di sistema corretti per il tuo User Agent
- Include i font di sistema di Windows, Mac e Linux
- Previene il fingerprinting delle metriche dei font applicando offset casuali alla spaziatura delle lettere
### Supporto Playwright
- Implementazione personalizzata di Playwright per l'ultima versione di Firefox
- Varie patch di configurazione per eludere il rilevamento dei bot
### Debloat/Ottimizzazioni
- Rimossi/disattivati _molti, molti_ servizi Mozilla. Gira più velocemente del Mozilla Firefox originale e utilizza meno memoria (200mb)
- Patch da LibreWolf e Ghostery per aiutare a rimuovere telemetria e bloat
- Configurazione debloat da PeskyFox, LibreWolf e altri
- Ottimizzazioni di velocità e rete da FastFox
- Rimosse tutte le animazioni CSS
- Tematizzazione minimalista
- ecc.
### Componenti aggiuntivi
- Carica gli addon di Firefox senza un server di debug passando un elenco di percorsi alla proprietà `addons`
- Aggiunto uBlock Origin con filtri privacy personalizzati
- Gli addon non possono aprire schede
- Gli addon vengono abilitati automaticamente in modalità Navigazione privata
- Gli addon vengono aggiunti automaticamente alla barra degli strumenti
- Corregge le perdite DNS con il prefetch di uBO
### Interfaccia Python
- Genera e inietta automaticamente caratteristiche uniche del dispositivo in Camoufox in base alla loro distribuzione nel mondo reale
- Iniezione e rotazione dell'impronta WebGL
- Utilizza i font di sistema corretti e l'antialiasing subpixel e l'hinting in base al sistema operativo di destinazione
- Evita il rilevamento del proxy calcolando geolocalizzazione, fuso orario e locale di destinazione dalla regione di destinazione del proxy
- Calcola e spoofa la lingua del browser in base alla distribuzione dei parlanti nella regione di destinazione del proxy
- Hosting su server remoto per utilizzare Camoufox con altri linguaggi che supportano Playwright
- Buffer di display virtuale integrato per eseguire Camoufox con interfaccia grafica su un server headless
- Attiva/disattiva il caricamento delle immagini, WebRTC e WebGL
- ecc.
> [!NOTE]
> Camoufox **non** supporta completamente l'iniezione delle impronte digitali di Chromium. Alcuni WAF (come [Interstitial](https://nopecha.com/demo/cloudflare)) verificano il comportamento del motore Spidermonkey, che è impossibile da spoofare.
---
# Panoramica Stealth
## Come Camoufox nasconde la sua libreria di automazione
> [!WARNING]
> **Stato attuale al 2026**:
> C'è stato un anno di pausa nella manutenzione a causa di una situazione personale. Le prestazioni di Camoufox sono diminuite a causa della versione base di Firefox e di incoerenze del fingerprint scoperte di recente. **Camoufox è attualmente in fase di sviluppo attivo.**
In Camoufox, tutto il codice dell'Page Agent interno di Playwright è in sandbox e isolato. Questo rende impossibile per una pagina rilevare la presenza di Playwright tramite l'ispezione JavaScript.
Normalmente, Playwright inietta del JavaScript nella pagina come `window.__playwright__binding__` e per eseguire azioni come interrogare elementi, valutare javascript o eseguire script di inizializzazione, che possono essere rilevati dai siti web. In Camoufox, queste azioni vengono gestite in uno scope isolato al di fuori della pagina. In altre parole, i siti web non possono più "vedere" alcun JavaScript che Playwright inietterebbe tipicamente. Questo previene del tutto le tracce di Playwright.
Tuttavia, anche nascondendo la sua libreria di automazione, Camoufox non è immune alle incoerenze nella rotazione del fingerprint. Questo richiede comunque manutenzione per individuarle e correggerle.
### Interazioni di pagina
I sistemi anti-bot eseguono anche script lato client per monitorare il tuo comportamento. Ad esempio, cercano pattern nei movimenti del mouse, nei click, nello scrolling e nei tempi tra le azioni.
<video controls src="https://github.com/user-attachments/assets/6d33d6af-3537-4603-bf24-6bd3f4f8f455" width="200px" loop muted></video>
Camoufox fa del suo meglio con il suo algoritmo di movimento del mouse simile a quello umano. L'algoritmo di movimento naturale proviene originariamente da [HumanCursor di riflosnake](https://github.com/riflosnake/HumanCursor) ed è stato riscritto in C++ e modificato per traiettorie più consapevoli della distanza.
Tuttavia, non è perfetto. Potrebbe ancora essere rilevato con un'analisi sufficientemente sofisticata. (WIP per il futuro)
---
## Come Camoufox ruota le identità
Gli agenti AI devono operare attraverso molte sessioni senza essere segnalati o limitati nella frequenza delle richieste. Ruotare il tuo indirizzo IP non basta: ogni sessione del browser trasporta migliaia di segnali che creano un **fingerprint** unico. Un sito web può vedere il tuo sistema operativo, GPU, risoluzione dello schermo, font, fuso orario e altro. Se quei segnali sono incoerenti o insoliti, vieni bloccato.
### Distribuzione della quota di mercato
Anche se ruoti il tuo IP per ogni istanza bot in esecuzione, i firewall di accesso web possono comunque usare il machine learning per analizzare il traffico web in entrata e rilevare se è anomalo. Se la quota di mercato di Linux fosse del 5% e improvvisamente diventasse del 20%, è un campanello d'allarme. Richiederebbero incondizionatamente a tutti gli utenti Linux di completare un captcha.
Camoufox utilizza il generatore di fingerprint di [BrowserForge](https://github.com/daijro/browserforge) per imitare la distribuzione statistica dei dati dei dispositivi nel traffico reale. Ad esempio, Camoufox farà sembrare il tuo browser un utente Linux per il 5% delle volte. Di quel 5%, spoofa una risoluzione dello schermo 2560x1440 per il 9,5% delle volte e una GPU Intel HD per il 27,5% delle volte.
### Come può essere rilevato Camoufox?
Camoufox può spoofare i fingerprint con una corretta quota di mercato. Tuttavia, **i fingerprint devono anche essere internamente coerenti.** Un user agent Windows con una GPU Apple M1, un user agent macOS con un renderer DirectX di Windows e un dispositivo mobile con una risoluzione dello schermo desktop sono tutti impossibili e verranno segnalati come sospetti.
Tra le migliaia di possibili punti dati che devono essere modificati per creare un fingerprint spoofato credibile, dove ogni modifica deve essere coerente con le altre, Camoufox non sempre ci riesce. I fornitori di soluzioni anti-bot testano Camoufox più e più volte per trovare anche una sola incoerenza unica, poi aggiornano immediatamente i loro script in background per rilevarla.
---
## Come si confronta Camoufox con altre soluzioni?
### Soluzioni basate su JavaScript
In passato, gli sviluppatori hanno provato a iniettare JavaScript per spoofare questi valori, ma non funziona in modo affidabile perché JavaScript non può spoofare tutto. Una copertura incompleta causa fingerprint incoerenti. Ad esempio, un sistema anti-bot ti segnalerà se lo User Agent della tua richiesta di rete non corrisponde allo User Agent del tuo navigator.
Inoltre, tutto il JavaScript iniettato è rilevabile in qualche modo. I sistemi anti-bot possono verificare se `Object.getOwnPropertyDescriptor` rivela una proprietà sovrascritta, se il `toString()` di una funzione non restituisce più `[native code]` (rivelando che è stata dirottata), o se i dati nel contesto della finestra non corrispondono al contesto del worker thread. I workaround ti portano solo fino a un certo punto, ma ci sarà sempre un modo per rilevare l'iniezione di JS se si cerca abbastanza a fondo.
#### L'approccio di Camoufox
Poiché Camoufox intercetta le chiamate a livello di implementazione C++ del browser, tutti gli oggetti e le proprietà dirottati appaiono nativi. Non c'è alcun dirottamento JavaScript da rilevare.
Camoufox tenta anche di generare fingerprint coerenti e credibili con Browserforge. Tuttavia, questo può ancora essere rilevato da metodi complessi di rilevamento del fingerprint come i dati non corrispondenti (come descritto in precedenza).
<hr width=50>
### Librerie basate su CDP
CDP (Chrome DevTools Protocol) è un protocollo di automazione integrato in Chromium e Firefox. Tuttavia, CDP non fa alcuno sforzo per nascondere il fatto di essere un protocollo di automazione ed espone gran parte delle sue funzionalità nell'ambito della pagina. Alcuni metodi comuni sono controllare se `navigator.webdriver` è true, coglierlo mentre legge lo stack del debugger, verificare la presenza di variabili che ChromeDriver inietta nell'oggetto document per la comunicazione interna e altro ancora.
#### L'approccio di Camoufox
Mentre Playwright usa CDP per controllare Chromium, per Firefox usa _Juggler_. Juggler è un protocollo personalizzato sviluppato prima che Firefox supportasse CDP ([repo originale](https://github.com/puppeteer/juggler)). È un modulo distinto all'interno di Firefox e non fa parte del browser principale. Questo rende più facile modificare e controllare ciò che viene rivelato alla pagina.
Camoufox applica patch a Juggler per dargli una propria "copia" isolata della pagina con cui lavorare. Playwright può leggere e modificare liberamente la propria versione della pagina. Tutto sembra funzionare normalmente per lui, ma la pagina reale è completamente inalterata da queste modifiche. La pagina inoltre non può rilevare quando le cose vengono lette (tramite trucchi come il dirottamento dei getter) o quando vengono aggiunti listener per osservare gli elementi.
Inoltre, Juggler invia i suoi input direttamente attraverso i gestori di input utente originali di Firefox, il che significa che vengono gestiti esattamente nello stesso modo in cui avverrebbe se stessi usando il browser normalmente. Camoufox applica patch anche alla modalità headless di Firefox affinché appaia come se fosse in esecuzione in una finestra normale. Ma come fallback, la libreria Python può eseguire Camoufox in un [display virtuale](https://camoufox.com/python/virtual-display/) se la modalità headless dovesse mai far trapelare qualcosa.
---
<h1 align="center">Sistema di Build</h1>
> [!WARNING]
> Il contenuto di seguito è pensato per chi è interessato a compilare e fare debug di Camoufox. Per le istruzioni sull'uso di Playwright, vedi [qui](https://github.com/daijro/camoufox/tree/main/pythonlib#camoufox-python-interface).
### Panoramica
Ecco un diagramma del sistema di build e i relativi comandi make:```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
Questo era originariamente basato sul sistema di build di LibreWolf.
CLI di build
[!WARNING] Il sistema di build di Camoufox è progettato per essere utilizzato su Linux. WSL non funzionerà!
Per prima cosa, clona questo repository con Git:```bash git clone --depth 1 https://github.com/daijro/camoufox cd camoufox
Quindi, compila il codice sorgente di Camoufox con il seguente comando:```bash
make dir
Prima del bootstrap, installa le dipendenze di build di sistema con lo script di supporto. Rileva la tua piattaforma e installa tutto ciò di cui la build ha bisogno (Python ≥ 3.11, Rust, aria2, p7zip, go, msitools, wget, sqlite e gli strumenti di build principali) utilizzando il gestore di pacchetti appropriato — Homebrew su macOS, oppure apt/dnf/pacman su Linux:```bash
bash scripts/install-deps.sh
> [!NOTE]
> Il programma di installazione delle dipendenze è stato finora testato solo su macOS.
Dopodiché, devi eseguire il bootstrap del tuo sistema per poter compilare Camoufox. Devi farlo solo una volta. Si procede eseguendo il seguente comando:```bash
make bootstrap
Infine puoi compilare e impacchettare Camoufox con il seguente comando:```bash python3 multibuild.py --target linux windows macos --arch x86_64 arm64 i686
Per le nuove build, `i686` è supportato solo per Windows. Le combinazioni target/architettura non supportate vengono saltate.
<details>
<summary>
Parametri 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
Usare Docker
Camoufox può essere compilato tramite Docker su tutte le piattaforme.
- Crea l'immagine Docker contenente il codice sorgente di Firefox:```bash docker build -t camoufox-builder .
2. Compilare le patch di Camoufox per una piattaforma e architettura di destinazione:```bash
docker run -v "$(pwd)/dist:/app/dist" camoufox-builder --target <os> --arch <arch>
Come posso usare la mia directory locale ~/.mozbuild?
Se vuoi usare la directory .mozbuild dell'host, puoi invece usare il seguente comando per eseguire il docker:```bash
docker run
-v "$HOME/.mozbuild":/root/.mozbuild:rw,z
-v "$(pwd)/dist:/app/dist"
camoufox-builder
--target
--arch
</details>
<details>
<summary>
Parametri CLI di 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
Gli artefatti di build ora appariranno scritti nella cartella dist/.
Strumenti di sviluppo
Questo repository include una UI per sviluppatori in scripts/developer.py:``` make edits
Patches can be edited, created, removed, and managed through here.
<img src="https://assets.kitploit.com/production/public/readmes/41473/19bffc384c42fb6eb69b3ee59622daed4770cf0f11ffe39401eca57a7d2457f4.png">
### How to make a patch
1. In the developer UI, click **Reset workspace**.
2. Make changes in the `camoufox-*/` folder as needed. You can test your changes with `make build` and `make run`.
3. After you're done making changes, click **Write workspace to patch** and save the patch file.
### How to work on an existing patch
1. In the developer UI, click **Edit a patch**.
2. Select the patch you'd like to edit. Your workspace will be reset to the state of the selected patch.
3. After you're done making changes, hit **Write workspace to patch** and overwrite the existing patch file.
---
## Leak Debugging
This is a flow chart demonstrating my process for determining leaks without deobfuscating WAF Javascript. The method incrementally reintroduces Camoufox's features into Firefox's source code until the testing site flags.
This process requires a Linux system and assumes you have Firefox build tools installed (see [here](https://github.com/daijro/camoufox?tab=readme-ov-file#build-cli)).
<details>
<summary>
See flow chart...
</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
Comandi citati
| # | Command | Description |
|---|---|---|
| (1) | make ff-dbg | Configura Firefox vanilla con patch minime. |
| (2) | make build | Compila il codice sorgente. |
| (3) | make run | Esegue il browser compilato. |
| (4) | make run args="--headless https://test.com" | Esegue un URL in modalità headless. Tutti i redirect verranno stampati sulla console per determinare se il test è passato. |
| (5) | make edits | Apre l'interfaccia utente di sviluppo. Consente all'utente di applicare/annullare le patch e vedere quali patch sono attualmente applicate. |
| (6) | make edit-cfg | Modifica camoufox.cfg nell'editor di sistema predefinito. |
Ringraziamenti
Debloat e riferimenti:
- LibreWolf: Patch di debloat e ispirazione per il sistema di build
- BetterFox: Preferenze per velocità e debloat
- Ghostery: Riferimento per il debloat (disabilita onboarding)
Web scraping e test:
- riflosnake/HumanCursor: Algoritmo originale di movimento del cursore simile a quello umano, portato in C++
- CreepJS, Browserleaks, BrowserScan - Siti preziosi per il test delle fughe di dati
Theming dell'interfaccia utente:
- Jamir-boop/minimalisticfox: Ha ispirato il theming CSS minimale di Camoufox (link)