Torna agli aggiornamenti
New releaseAug 14, 2026

invisible_playwright v0.7.0

Antidetect browser gratuito e stealth per Playwright: impronta digitale di Firefox headless non rilevata. Scraping Python, bypass di recaptcha e rilevamento bot. Open source

Condividi
invisible_playwright

Stealth antidetect gratuito per Playwright: fingerprint Firefox non rilevato, headless o con finestra.
Web scraping in Python e bypass dei captcha. Open source, e supera ogni test di rilevamento bot.

invisible_playwright - 5/5 suite di rilevamento superate

Come funziona

Gli anti-bot pongono due domande, e reCAPTCHA, hCaptcha e Cloudflare Turnstile valutano le risposte. invisible_playwright risponde sì a entrambe.

1. È un browser reale? Sì. È Firefox, patchato a livello di sorgente C++.

  • Il fingerprint del browser è impostato all'interno del motore, non iniettato nella pagina: navigator, schermo, GPU/WebGL, canvas, font, audio, WebRTC, fuso orario, rete. Headless o con finestra, gli stessi valori in entrambi i casi.
  • Nessuno shim JS, nessun override, nessuna cucitura da leggere.

2. Lo sta usando una persona reale? Sì. Le azioni sono umanizzate nel driver.

  • Ogni clic, hover e trascinamento segue un percorso del mouse naturale con tempi umani, nessun cursore teletrasportato.
  • Ogni input è byte-identico a un mouse reale: sorgente di input reale, pressione, eventi trusted.

Guidato dalla API Playwright standard. Analisi completa: feder-cr/firefox_antidetect_patch.


Vedi ancora captcha o anti-bot? È il proxy.

Una volta gestito il browser, smette di essere la variabile. Se ricevi ancora sfide, l'indizio non è più il browser, ma l'IP da cui provieni. Circa il 90% dei proxy sono pubblici: chiunque può noleggiare lo stesso indirizzo, quindi è già noto e si trova nelle liste di IP bloccati che i siti controllano. Un browser perfetto su un IP noto perde comunque.


Installazione

pip install invisible-playwright
python -m invisible_playwright fetch      # download una tantum ~238 MB (~544 MB decompresso), verificato con sha256

Piattaforme supportate: Windows x86_64, Linux x86_64 / arm64. macOS non è più supportato (le release si sono fermate a firefox-20); su un Mac il pacchetto rifiuta all'avvio con un messaggio chiaro invece di scaricare un binario che non esiste più.


Utilizzo

Fingerprint casuale per sessione

Compatibile al 100% con Playwright - sync e async, tutti i metodi, zero modifiche all'API. Se usi già Playwright, il passaggio è di due righe:

- from playwright.sync_api import sync_playwright
- with sync_playwright() as p:
-     browser = p.firefox.launch()
+ from invisible_playwright import InvisiblePlaywright
+ with InvisiblePlaywright() as browser:

Ogni sessione ottiene un fingerprint distinto (GPU, audio, font, schermo, ~200 campi) e movimento del mouse a curva di Bézier.

Sync

from invisible_playwright import InvisiblePlaywright

with InvisiblePlaywright(proxy={"server": "socks5://...", "username": "u", "password": "p"}) as browser:
    page = browser.new_page()
    page.goto("https://example.com")
    page.click("#submit")   # il mouse si sposta verso il pulsante su una curva di Bézier

Async

from invisible_playwright.async_api import InvisiblePlaywright

async with InvisiblePlaywright(proxy={"server": "socks5://...", "username": "u", "password": "p"}) as browser:
    page = await browser.new_page()
    await page.goto("https://example.com")
    await page.click("#submit")

L'oggetto browser è un playwright.sync_api.Browser / playwright.async_api.Browser - ogni metodo di Playwright funziona così com'è.

Registra il seed per riprodurre un'esecuzione:

sf = InvisiblePlaywright()
with sf as browser:
    print("seed =", sf.seed)
    # ...

Fingerprint riproducibile

with InvisiblePlaywright(seed=42) as browser:
    ...   # stessa GPU, stesso hash canvas, stesso contesto audio, a ogni esecuzione

Proxy

proxy = {
    "server": "socks5://gate.example.com:1080",
    "username": "user",
    "password": "pass",
}
with InvisiblePlaywright(proxy=proxy) as browser:
    ...

Schemi supportati: socks5, socks4, http, https. Il DNS è instradato attraverso il proxy per impostazione predefinita, nessuna perdita locale.

Fuso orario

Il fuso orario del browser segue timezone=:

# predefinito: il fuso orario è derivato automaticamente dall'IP di uscita (uscita del proxy se
# è impostato un proxy, altrimenti l'IP pubblico del host)
with InvisiblePlaywright(proxy=proxy) as browser:
    ...

# la zona IANA esplicita vince sempre, l'unico modo per forzare una zona specifica
with InvisiblePlaywright(proxy=proxy, timezone="America/New_York") as browser:
    ...

Fissaggio di campi specifici del fingerprint

Per impostazione predefinita tutto deriva da seed. Per forzare valori specifici mentre il resto rimane derivato dal seed:

with InvisiblePlaywright(
    seed=42,
    pin={
        "gpu.renderer": "ANGLE (NVIDIA, NVIDIA GeForce RTX 4090 Direct3D11)",
        "gpu.vendor":   "Google Inc. (NVIDIA)",
        "screen.width":  2560,
        "screen.height": 1440,
        "hardware.concurrency": 16,
    },
) as browser:
    ...

L'elenco completo delle chiavi fissabili, come il fissaggio interagisce con il campionatore bayesiano, e i pattern comuni sono in docs/pinning.md.


CLI

Il comando installato è invisible-playwright, con un trattino. python -m invisible_playwright funziona in modo identico e non richiede nulla nel PATH.

invisible-playwright fetch    # scarica il motore se manca, verifica ogni copia
                              # in cache contro il sigillo, stampa il percorso
invisible-playwright version  # versioni di wrapper, core e motore, e dove il
                              # motore è in cache

Documentazione, guide e confronti

Tutto si legge meglio, ed è ricercabile, in la wiki, organizzata in quattro sezioni invece di un unico elenco piatto:

  • Documentazione - installazione, il passaggio di due righe da Playwright semplice, configurazione proxy/fuso orario, fissaggio di campi specifici, la CLI.
  • Guide - come funziona realmente il rilevamento, in sette gruppi: identità del browser, canvas/WebGL/font/ audio, rete e WebRTC, il livello di automazione, agenti AI, i rilevatori stessi spiegati dalla sorgente, e test.
  • Confronti - contro Camoufox, Patchright, nodriver e playwright-stealth, e il caso per Firefox su Chromium in generale.
  • Integrazioni - Scrapy, Crawlee, Robot Framework, CodeceptJS, test runner, Playwright MCP, e i framework a cui non si adatta, per nome.

Se non sai da dove iniziare: Tre modi per rendere Playwright non rilevato è la mappa a cui la maggior parte delle altre pagine rimanda, Playwright rilevato come bot su un sito è l'ordine di risoluzione dei problemi, e navigator.webdriver non è l'indizio che pensi spiega la proprietà più famosa in questo ambito e perché patcharla da sola ti compra quasi nulla.

Progetti correlati

I vicini open source, e a cosa serve ciascuno.

Sul lato Firefox

  • Camoufox - un Firefox anti-detect che patch anche a livello C++. Copre una superficie più ampia e include un proprio database di fingerprint; questo progetto deriva un fingerprint da un seed con un campionatore bayesiano, quindi un numero riproduce una macchina. Confronto completo.
  • LibreWolf - un fork di Firefox con impostazioni predefinite per la privacy. Include un binario configurato per chi naviga; questo include patch di sorgente più un wrapper di automazione.
  • arkenfox/user.js - hardening di Firefox tramite preferenze. Dove una preferenza è sufficiente, usala; questo progetto patch il C++ dove una non lo è.

Sul lato Chromium

Quale di questi si adatta dipende dal livello in cui si trova il tuo problema, e dal fatto che tu abbia bisogno di Firefox o Chromium. Tre modi per rendere Playwright non rilevato analizza cosa ogni livello può e non può raggiungere, incluso cosa costa questo.

Se stai scegliendo tra motori piuttosto che tra strumenti, nota che una grande parte dei framework per agenti AI guida Chromium su CDP, il che decide la questione per te: Agenti browser AI e stealth.


Licenza

MIT - vedi LICENSE. Il binario Firefox patchato è distribuito sotto MPL-2.0 (licenza upstream di Firefox). Le patch C++ contro mozilla-central che producono quel binario sono in feder-cr/firefox_antidetect_patch.


Disclaimer

Questo progetto è solo a scopo educativo. È fornito così com'è, senza garanzie. Non mi assumo alcuna responsabilità per come viene utilizzato. Usalo a tuo rischio e in conformità con le leggi della tua giurisdizione.


Creato da Federico Elia  LinkedIn

tests License: MIT Python 3.11+ Firefox 151.0 GitHub stars

Categorie