Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/feder-cr/invisible_playwright
IDS/IPS EvasionImpersonation ToolsWeb SecurityAnti-BotFingerprint SpoofingCAPTCHA Bypass
GitHubfeder-cr/invisible_playwright

invisible_playwright

Anti-detect browser stealth for Playwright: undetected headless Firefox fingerprint spoofing. Python web scraping and automation, Cloudflare, captcha and anti-bot detection bypass.

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio
1.8k20191hace 1 díaRevisado por Kitploit
invisible_playwright

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

invisible_playwright - 5/5 detection suites passed

Cómo funciona

Los anti-bots 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 del código fuente en C++.

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

2. ¿Lo está usando una persona real? Sí. Las acciones están humanizadas en el driver.

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

Instalación

root@kitploit:~
pip install invisible-playwright
python -m invisible_playwright fetch      # one-time download, sha256-verified: 240 MB (Windows) / 262 MB (Linux x86_64) / 253 MB (Linux arm64), about 550 MB unpacked

Requiere Python 3.11 o superior.

Plataformas compatibles: Windows x86_64, Linux x86_64 / arm64.


Uso

Huella aleatoria por sesión

La API de Playwright, sync y async, sin cambios en el código. Los mismos objetos, las mismas llamadas, los mismos valores de retorno. Algunas superficies quedan fuera del alcance - tracing, HAR, CDP, el contexto de peticiones de la API - y go_back() y go_forward() están retenidos por un defecto en las páginas restauradas; cada uno rechaza con una frase que explica por qué en lugar de comportarse mal en silencio. Si ya usas Playwright, cambiar son dos líneas:

root@kitploit:~
- 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 del ratón con curvas de Bezier.

Sync

root@kitploit:~
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")   # mouse arcs to the button on a Bezier curve

Async

root@kitploit:~
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 seed para reproducir una ejecución:

root@kitploit:~
sf = InvisiblePlaywright()
with sf as browser:
    print("seed =", sf.seed)
    # ...

Huella reproducible

root@kitploit:~
with InvisiblePlaywright(seed=42) as browser:
    ...   # same GPU, same canvas hash, same audio context, every run

Proxies

root@kitploit:~
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 fuga local.

Zona horaria

La zona horaria del navegador sigue a timezone=:

root@kitploit:~
# default: timezone is auto-derived from the egress IP (proxy egress if a
# proxy is set, otherwise the host's own public IP)
with InvisiblePlaywright(proxy=proxy) as browser:
    ...

# explicit IANA zone always wins, the only way to force a specific zone
with InvisiblePlaywright(proxy=proxy, timezone="America/New_York") as browser:
    ...

Fijar campos específicos de la huella

Por defecto todo proviene de seed. Para forzar valores específicos mientras el resto sigue derivándose de la seed:

root@kitploit:~
with InvisiblePlaywright(
    seed=42,
    pin={
        "gpu.renderer": "ANGLE (AMD, Radeon R9 200 Series Direct3D11 vs_5_0 ps_5_0, D3D11)",
        "gpu.vendor":   "Google Inc. (AMD)",
        "screen.width":  2560,
        "screen.height": 1440,
        "hardware.concurrency": 16,
    },
) as browser:
    ...

Un pin de GPU elige una de las personas validadas en lugar de establecer una cadena libre, porque los ~81 valores de getParameter y la lista de extensiones viajan con el nombre del renderer y un detector los contrasta contra él. Un nombre que el pool no contiene lanza un error, y el error lista los que sí contiene.

La lista completa de claves fijables, cómo interactúa el pinning 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 el PATH.

root@kitploit:~
invisible-playwright fetch    # download the engine if missing, check every cached
                              # one against the seal, print the path
invisible-playwright version  # wrapper, core and engine versions, and where the
                              # engine is cached

Documentación, guías y comparativas

Si prefieres promptear en lugar de programar. Esta página es el motor, como librería de Python. Dos formas de usarlo sin escribir código, ambas en una línea: desde un cliente MCP que ya tengas (Claude Code, Claude Desktop, Cursor), claude mcp add stealth -- uvx aihawk, consulta la página del servidor MCP; o con una interfaz y un modelo incluidos, necesitando solo una clave de OpenRouter, uvx aihawk ui --openrouter-key sk-or-..., consulta AIHawk. El mismo motor por debajo, y el segundo es un cliente del primero.

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

  • Documentación - instalación, el cambio de dos líneas desde Playwright puro, configuración de proxy/zona horaria, fijar 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 testing.
  • Comparativas - frente a Camoufox, Patchright, nodriver y playwright-stealth, y el argumento a favor de Firefox sobre Chromium en general.
  • Integraciones - Scrapy, Crawlee, Robot Framework, CodeceptJS, test runners, Playwright MCP, y los frameworks en los que no encaja, por nombre.

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

La sección de detectores ahora cubre los productos anti-bot comerciales por nombre, cada uno leído desde su propia documentación o desde ingeniería inversa confirmada: Cloudflare Bot Management y Turnstile, DataDome, Kasada, Akamai Bot Manager, PerimeterX, hCaptcha, Imperva, y el resto del conjunto.

Proyectos relacionados

Las otras piezas de este. El motor es el del medio de tres, y los dos que lo rodean son cómo la mayoría de la gente llega a él:

  • invisible_core - de seed a huella a preferencias, más proxy y geolocalización. Este paquete lo fija.
  • AIHawk - este motor como servidor MCP (uvx aihawk, para cualquier cliente que traiga su propio modelo) y, en el mismo paquete, una interfaz con un modelo incluido, desde un solo comando. La interfaz es un cliente del servidor, sin ruta privada al navegador.

Los vecinos de código abierto. Cuál encaja depende de la capa en la que esté tu problema, y de si necesitas Firefox o Chromium: tres formas de hacer Playwright indetectable analiza qué puede alcanzar cada capa, y agentes de navegador con IA y sigilo cubre los frameworks que eligen Chromium sobre CDP por ti.

En el lado de Firefox

  • Camoufox - también parchea C++, mayor superficie, distribuye una base de datos de huellas en lugar de derivar una de una seed. Comparativa.
  • LibreWolf - un Firefox con privacidad por defecto para navegar, no para automatizar.
  • arkenfox/user.js - endurecimiento mediante preferencias. Donde una preferencia basta, úsala.

En el lado de Chromium

  • Patchright - un fork parcheado de Playwright: el trabajo recae en el driver, no en el binario. Comparativa.
  • nodriver - sucesor de undetected-chromedriver, que controla Chrome a través de CDP. Comparativa.
  • rebrowser-patches - corrige la fuga de CDP Runtime.enable. Comparativa.
  • fingerprint-suite - un generador bayesiano de huellas, luego inyectado en la página. Comparativa.
  • playwright-with-fingerprints - valores de un servicio remoto de pago, solo Windows. Comparativa.
  • playwright-stealth - un parche de init-script; su mantenedor lo llama prueba de concepto. Comparativa.
  • puppeteer-extra-plugin-stealth - el original de ese linaje, último commit sustancial a mediados de 2024. Qué significa eso.
  • - el mismo enfoque en Selenium, último commit en diciembre de 2021. .

Qué está parcheado en el motor

Dos reglas se mantienen en todo lo siguiente. Cada valor se decide antes de que una página pueda preguntar, dentro del navegador, así que no hay shim de JavaScript que encontrar. Y cada valor proviene de un solo perfil, así que ninguna superficie se contradice con otra, que es como normalmente se detecta un navegador falsificado. Código fuente: feder-cr/firefox_antidetect_patch.

Identidad

  • navigator, el user agent y los client hints se derivan juntos, así que no pueden contradecirse: ¿establece Playwright navigator.webdriver?, client hints y Sec-Fetch.
  • navigator.languages y la cabecera Accept-Language son la misma declaración, enviada y leída: Accept-Language y navigator.languages.
  • La geometría de pantalla, devicePixelRatio y las media queries que la exponen se declaran, no se leen del host: devicePixelRatio y la pref de Firefox, fingerprinting por media queries CSS.

Renderizado

  • La lectura de canvas es determinista por seed y conserva la forma real, en lugar de bloquearse o añadir ruido: ruido en la huella de canvas, por qué una huella de canvas cambia en cada ejecución.
  • WebGL reporta una persona de GPU coherente: vendor, renderer y los límites de parámetros se contrastan entre sí, no se establecen uno a uno: cadenas de renderer de WebGL, los parámetros de WebGL son idénticos.
  • Las fuentes se distribuyen con el navegador, así que las mismas caras existen en cada host y el motor de fuentes de la plataforma ya no elige: fuentes incluidas entre plataformas, por qué los navegadores headless renderizan fuentes distintas, detectar fuentes instaladas desde JavaScript.
  • Las métricas de texto siguen a esas fuentes: measureText devuelve más de diez números en una sola llamada, sin prompt de permiso: measureText y TextMetrics.
  • Canvas y WebGL coinciden entre sistemas operativos para la misma seed: consistencia entre plataformas, el canvas difiere entre sistemas operativos.

Audio y medios

  • La pila de audio responde desde el perfil en lugar de desde el dispositivo del host: fingerprinting de AudioContext, sample rate y latencia.
  • La tabla de códecs se declara, así que un host Linux no responde a una pregunta de Windows con soporte de Linux: fingerprinting de códecs.

Red

  • WebRTC ofrece un único candidato sintético que lleva la salida del proxy, en lugar de filtrar la dirección real o no ofrecer ninguna, lo cual es en sí mismo una señal: spoofing de candidatos ICE de WebRTC, ¿coincide la IP de WebRTC con la salida del proxy?.
  • El DNS resuelve a través del proxy, incluso cuando el proxy no está en las preferencias: ¿filtra DNS un proxy?, cómo comprobar una fuga de IP del proxy.
  • La zona horaria proviene de la IP de salida, resuelta offline, así que coincide con la salida: desajuste entre zona horaria y proxy, GeoIP offline de zona horaria.

La capa de automatización

  • Los eventos de entrada provienen de la ruta de entrada real, así que isTrusted es true porque lo es: clics de Playwright e isTrusted.
  • El puntero sigue una trayectoria y unos tiempos humanos, a una cadencia que un dispositivo real podría producir: movimiento humano del ratón, dinámica del ratón como biometría conductual.
  • La superficie del depurador no responde a las preguntas de timing que delatan a un navegador controlado: detección de timing del depurador.
  • Los shadow roots en modo cerrado son alcanzables, algo que Playwright estándar no puede hacer en ninguno de los dos motores, mientras la página sigue leyendo null: shadow roots cerrados.

Licencia

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


Aviso legal

Este proyecto es solo para fines educativos. Se proporciona tal cual, sin garantías. No asumo ninguna responsabilidad por cómo se utilice. Úsalo bajo tu propio riesgo y cumpliendo las leyes de tu jurisdicción.


Built by Federico Elia  LinkedIn

tests License: MIT Python 3.11+ Firefox 151.0 browser launches GitHub stars

Descargar herramienta
selenium-stealth
Qué significa eso
  • pyppeteer - sin mantenimiento según su propio README, que apunta a playwright-python. De qué va esa recomendación.