Volver a actualizaciones
Nuevo releaseAug 14, 2026

invisible_playwright v0.7.0

Sigilo de navegador antidetect gratuito para Playwright: huella digital de Firefox headless indetectable. Scraping en Python, bypass de recaptcha y detección de bots. Código abierto.

Compartir
invisible_playwright

Sigilo antidetect gratuito para Playwright: huella de Firefox indetectable, con o sin headless.
Web scraping en Python y bypass de captchas. Código abierto, y supera todas las pruebas de detección de bots.

invisible_playwright - 5/5 suites de detección superadas

Cómo funciona

Los antibots hacen dos preguntas, y reCAPTCHA, hCaptcha y Cloudflare Turnstile puntúan las respuestas. invisible_playwright responde sí a ambas.

1. ¿Es un navegador real? Sí. Es Firefox, parcheado a nivel de código fuente en C++.

  • La huella del navegador se establece dentro del motor, no se inyecta en la página: navigator, pantalla, GPU/WebGL, canvas, fuentes, audio, WebRTC, zona horaria, red. Con o sin headless, los mismos valores en ambos casos.
  • Sin shim de JS, sin override, sin costura que leer.

2. ¿Lo usa una persona real? Sí. Las acciones se humanizan en el driver.

  • Cada clic, hover y arrastre sigue una trayectoria natural del ratón con tiempos humanos, sin cursor teletransportado.
  • Cada entrada es byte-idéntica a un ratón real: fuente de entrada real, presión, eventos de confianza.

Impulsado por la API estándar de Playwright. Desglose completo: feder-cr/firefox_antidetect_patch.


¿Sigues viendo captchas o antibots? Es el proxy.

Una vez que el navegador está gestionado, deja de ser la variable. Si todavía te bloquean, la pista ya no es el navegador, es la IP desde la que vienes. Alrededor del 90% de los proxies son públicos: cualquiera puede alquilar la misma dirección, así que ya es conocida y está en las listas de IPs bloqueadas que consultan los sitios. Un navegador perfecto en una IP conocida sigue perdiendo.


Instalación

pip install invisible-playwright
python -m invisible_playwright fetch      # descarga única de ~238 MB (~544 MB descomprimido), verificado con sha256

Plataformas compatibles: Windows x86_64, Linux x86_64 / arm64. macOS ya no es compatible (los lanzamientos se detuvieron en firefox-20); en un Mac, el paquete se niega a iniciar con un mensaje claro en lugar de descargar un binario que ya no existe.


Uso

Huella aleatoria por sesión

100% compatible con Playwright - síncrono y asíncrono, todos los métodos, cero cambios en la API. Si ya usas Playwright, cambiar son dos líneas:

- 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:

Cada sesión obtiene una huella distinta (GPU, audio, fuentes, pantalla, ~200 campos) y movimiento de ratón con curvas de Bézier.

Síncrono

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")   # el ratón se desplaza al botón en una curva de Bézier

Asíncrono

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")

El objeto browser es un playwright.sync_api.Browser / playwright.async_api.Browser - todos los métodos de Playwright funcionan tal cual.

Registra la semilla para reproducir una ejecución:

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

Huella reproducible

with InvisiblePlaywright(seed=42) as browser:
    ...   # misma GPU, mismo hash de canvas, mismo contexto de audio, en cada ejecución

Proxies

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

Esquemas compatibles: socks5, socks4, http, https. El DNS se enruta a través del proxy por defecto, sin fugas locales.

Zona horaria

La zona horaria del navegador sigue a timezone=:

# por defecto: la zona horaria se deriva automáticamente de la IP de salida (salida del proxy si
# hay un proxy configurado, si no, la IP pública del propio host)
with InvisiblePlaywright(proxy=proxy) as browser:
    ...

# la zona IANA explícita siempre gana, la única forma de forzar una zona específica
with InvisiblePlaywright(proxy=proxy, timezone="America/New_York") as browser:
    ...

Fijar campos específicos de la huella

Por defecto todo viene de seed. Para forzar valores específicos mientras el resto se deriva de la semilla:

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:
    ...

La lista completa de claves fijables, cómo interactúa el fijado con el muestreador bayesiano, y los patrones comunes están en docs/pinning.md.


CLI

El comando instalado es invisible-playwright, con guion. python -m invisible_playwright funciona de forma idéntica y no necesita nada en PATH.

invisible-playwright fetch    # descarga el motor si falta, verifica cada uno en caché
                              # contra el sello, imprime la ruta
invisible-playwright version  # versiones del wrapper, núcleo y motor, y dónde está
                              # el motor en caché

Documentación, guías y comparativas

Todo se lee mejor, y es buscable, en la wiki, organizado en cuatro secciones en lugar de una sola lista plana:

  • Documentación - instalación, el cambio de dos líneas desde Playwright puro, configuración de proxy/zona horaria, fijado de campos específicos, la CLI.
  • Guías - cómo funciona realmente la detección, en siete grupos: identidad del navegador, canvas/WebGL/fuentes/ audio, red y WebRTC, la capa de automatización, agentes de IA, los propios detectores explicados desde el código fuente, y pruebas.
  • Comparativas - contra Camoufox, Patchright, nodriver y playwright-stealth, y el caso de Firefox sobre Chromium en general.
  • Integraciones - Scrapy, Crawlee, Robot Framework, CodeceptJS, ejecutores de pruebas, Playwright MCP, y los frameworks con los que no encaja, por nombre.

Si no sabes por dónde empezar: Tres formas de hacer Playwright indetectable es el mapa al que la mayoría de las otras páginas enlazan, Playwright detectado como bot en un sitio es el orden de resolución de problemas, y navigator.webdriver no es la pista que crees explica la propiedad más famosa en este espacio y por qué parchearla solo te aporta casi nada.

Proyectos relacionados

Los vecinos de código abierto, y para qué sirve cada uno.

En el lado de Firefox

  • Camoufox - un Firefox antidetect que también parchea a nivel de C++. Cubre una superficie más amplia y trae su propia base de datos de huellas; este proyecto deriva una huella de una semilla con un muestreador bayesiano, así que un número reproduce una máquina. Comparativa completa.
  • LibreWolf - un fork de Firefox con ajustes de privacidad por defecto. Trae un binario configurado para que la gente navegue con él; este trae parches de código fuente más un wrapper de automatización.
  • arkenfox/user.js - endurecimiento de Firefox mediante preferencias. Donde una preferencia es suficiente, úsala; este proyecto parchea C++ donde no lo es.

En el lado de Chromium

Cuál de estos encaja depende de la capa en la que esté tu problema, y de si necesitas Firefox o Chromium. Tres formas de hacer Playwright indetectable recorre lo que cada capa puede y no puede alcanzar, incluido lo que cuesta esta.

Si estás eligiendo entre motores en lugar de herramientas, ten en cuenta que una gran parte de los frameworks de agentes de IA manejan Chromium sobre CDP, lo que decide la pregunta por ti: Agentes de navegador de IA y sigilo.


Licencia

MIT - ver LICENSE. El binario de Firefox parcheado se distribuye bajo MPL-2.0 (licencia upstream de Firefox). Los parches de C++ contra mozilla-central que producen ese binario están en feder-cr/firefox_antidetect_patch.


Este proyecto es solo para fines educativos. Se proporciona tal cual, sin garantías. No me hago responsable de cómo se use. Úsalo bajo tu propio riesgo y cumpliendo las leyes de tu jurisdicción.


Construido por Federico Elia  LinkedIn

tests License: MIT Python 3.11+ Firefox 151.0 GitHub stars

Categorías