Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
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. | Kitploit
Ferramentas/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.

Ver Repositório
1.8k20142há 21h 23mRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
invisible_playwright

Stealth de navegador antidetect gratuito para Playwright: fingerprint de Firefox indetectável, headless ou headed.
Web scraping em Python e bypass de captcha. Código aberto, e passa em todos os testes de detecção de bots.

invisible_playwright - 5/5 detection suites passed

Como funciona

Os anti-bots fazem duas perguntas, e o reCAPTCHA, o hCaptcha e o Cloudflare Turnstile pontuam as respostas. O invisible_playwright responde sim a ambas.

1. Isto é um navegador real? Sim. É o Firefox, com patches ao nível do código-fonte C++.

  • O fingerprint do navegador é definido dentro do motor, não injetado na página: navigator, screen, GPU/WebGL, canvas, fontes, áudio, WebRTC, fuso horário, rede. Headless ou headed, os mesmos valores em ambos os casos.
  • Sem shim de JS, sem override, sem costura para ler.

2. Uma pessoa real está a usá-lo? Sim. As ações são humanizadas no driver.

  • Cada clique, hover e arrasto segue um caminho natural do rato com temporização humana, sem cursor a teletransportar-se.
  • Cada input é byte a byte idêntico a um rato real: fonte de input real, pressão, eventos trusted.

Instalação

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

Requer Python 3.11 ou mais recente.

Plataformas suportadas: Windows x86_64, Linux x86_64 / arm64.


Utilização

Fingerprint aleatório por sessão

A API do Playwright, sync e async, sem alterações ao código. Os mesmos objetos, as mesmas chamadas, os mesmos valores de retorno. Algumas superfícies estão fora do âmbito - tracing, HAR, CDP, o contexto de pedidos da API - e go_back() e go_forward() estão retidos por um defeito em páginas restauradas; cada um recusa com uma frase a dizer porquê em vez de se comportar mal em silêncio. Se já usa o Playwright, a mudança são duas linhas:

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 sessão recebe um fingerprint distinto (GPU, áudio, fontes, ecrã, ~200 campos) e movimento do rato em 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")

O objeto browser é um playwright.sync_api.Browser / playwright.async_api.Browser - todos os métodos do Playwright funcionam tal como estão.

Registe a seed para repetir uma execução:

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

Fingerprint reproduzível

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 suportados: socks5, socks4, http, https. O DNS é encaminhado através do proxy por predefinição, sem fuga local.

Fuso horário

O fuso horário do navegador segue 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:
    ...

Fixar campos específicos do fingerprint

Por predefinição, tudo vem da seed. Para forçar valores específicos enquanto o resto permanece derivado da 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:
    ...

Um pin de GPU escolhe uma das personas validadas em vez de definir uma string livre, porque os ~81 valores de getParameter e a lista de extensões viajam com o nome do renderer e um detetor cruza-os com ele. Um nome que o pool não contém gera erro, e o erro lista os que contém.

A lista completa de chaves fixáveis, como o pinning interage com o amostrador Bayesiano, e padrões comuns estão em docs/pinning.md.


CLI

O comando instalado é invisible-playwright, com hífen. python -m invisible_playwright funciona de forma idêntica e não precisa de nada no 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

Documentação, guias e comparações

Se prefere fazer prompts em vez de escrever scripts. Esta página é o motor, como biblioteca Python. Duas formas de o usar sem escrever código, ambas numa linha: a partir de um cliente MCP que já tem (Claude Code, Claude Desktop, Cursor), claude mcp add stealth -- uvx aihawk, veja a página do servidor MCP; ou com uma interface e um modelo incluídos, precisando apenas de uma chave OpenRouter, uvx aihawk ui --openrouter-key sk-or-..., veja AIHawk. O mesmo motor por baixo, e o segundo é um cliente do primeiro.

Tudo isto lê-se melhor, e é pesquisável, na wiki, organizada em quatro secções em vez de uma lista plana:

  • Documentação - instalação, a mudança de duas linhas a partir do Playwright simples, configuração de proxy/fuso horário, fixação de campos específicos, a CLI.
  • Guias - como a deteção funciona na realidade, em sete grupos: identidade do navegador, canvas/WebGL/fontes/ áudio, rede e WebRTC, a camada de automação, agentes de IA, os próprios detetores explicados a partir do código-fonte, e testes.
  • Comparações - contra Camoufox, Patchright, nodriver e playwright-stealth, e o argumento a favor do Firefox em vez do Chromium em geral.
  • Integrações - Scrapy, Crawlee, Robot Framework, CodeceptJS, test runners, Playwright MCP, e os frameworks em que não encaixa, por nome.

Se não sabe por onde começar: Três formas de tornar o Playwright indetetável é o mapa para o qual a maioria das outras páginas aponta, Playwright detetado como bot num site é a ordem de resolução de problemas, e navigator.webdriver não é o indício que pensa que é explica a propriedade mais famosa nesta área e porque corrigi-la sozinha vale quase nada.

A secção de detetores cobre agora os produtos anti-bot comerciais por nome, cada um lido a partir da sua própria documentação ou de engenharia reversa confirmada: Cloudflare Bot Management e Turnstile, DataDome, Kasada, Akamai Bot Manager, PerimeterX, hCaptcha, Imperva, e o resto do conjunto.

Projetos relacionados

As outras peças deste. O motor é o do meio de três, e os dois à sua volta são como a maioria das pessoas lá chega:

  • invisible_core - seed para fingerprint para preferências, mais proxy e geolocalização. Este pacote fixa-o.
  • AIHawk - este motor como servidor MCP (uvx aihawk, para qualquer cliente que traga o seu próprio modelo) e, no mesmo pacote, uma interface com um modelo incluído, a partir de um comando. A interface é um cliente do servidor, sem caminho privado para o navegador.

Os vizinhos de código aberto. Qual encaixa depende da camada em que o seu problema está, e de precisar de Firefox ou Chromium: três formas de tornar o Playwright indetetável percorre o que cada camada consegue alcançar, e agentes de navegador de IA e stealth cobre os frameworks que escolhem Chromium em vez de CDP por si.

Do lado do Firefox

  • Camoufox - também faz patches em C++, superfície mais ampla, distribui uma base de dados de fingerprints em vez de derivar uma a partir de uma seed. Comparação.
  • LibreWolf - um Firefox com predefinições de privacidade para navegar, não para automatizar.
  • arkenfox/user.js - hardening através de preferências. Onde uma preferência é suficiente, use-a.

Do lado do Chromium

  • Patchright - um fork do Playwright com patches: o trabalho fica no driver, não no binário. Comparação.
  • nodriver - sucessor do undetected-chromedriver, a controlar o Chrome via CDP. Comparação.
  • rebrowser-patches - corrige a fuga de CDP do Runtime.enable. Comparação.
  • fingerprint-suite - um gerador de fingerprints Bayesiano, depois injetado na página. Comparação.
  • playwright-with-fingerprints - valores de um serviço remoto pago, apenas Windows. Comparação.
  • playwright-stealth - um patch de init-script; o seu mantenedor chama-lhe prova de conceito. Comparação.
  • puppeteer-extra-plugin-stealth - o original dessa linhagem, último commit substancial em meados de 2024. O que isso significa.
  • selenium-stealth - a mesma abordagem em Selenium, último commit em dezembro de 2021. O que isso significa.
  • pyppeteer - não mantido pelo seu próprio README, que aponta para playwright-python. Sobre o que é essa recomendação.

O que está corrigido no motor

Duas regras aplicam-se a tudo o que se segue. Cada valor é decidido antes de uma página o poder perguntar, dentro do navegador, para que não haja um shim de JavaScript para encontrar. E cada valor vem de um único perfil, para que nenhuma superfície contradiga outra, que é como um navegador falsificado é normalmente apanhado. Código-fonte: feder-cr/firefox_antidetect_patch.

Identidade

  • navigator, o user agent e os client hints são derivados em conjunto, para que não possam discordar: o Playwright define navigator.webdriver, client hints e Sec-Fetch.
  • navigator.languages e o cabeçalho Accept-Language são a mesma declaração, enviada e lida: Accept-Language e navigator.languages.
  • A geometria do ecrã, o devicePixelRatio e as media queries que o expõem são declarados, não lidos do host: devicePixelRatio e a pref do Firefox, fingerprinting por CSS media query.

Renderização

  • A leitura do Canvas é determinística por seed e mantém a forma real, em vez de bloqueada ou com ruído: ruído de fingerprint de canvas, porque um fingerprint de canvas muda a cada execução.
  • O WebGL reporta uma persona de GPU coerente: vendor, renderer e os limites de parâmetros são cruzados, não definidos um a um: strings de renderer WebGL, os parâmetros WebGL são idênticos.
  • As fontes vêm com o navegador, para que os mesmos tipos existam em todos os hosts e o motor de fontes da plataforma deixe de escolher: fontes incluídas entre plataformas, porque os navegadores headless renderizam fontes diferentes, detetar fontes instaladas a partir de JavaScript.
  • As métricas de texto seguem essas fontes: measureText devolve mais de dez números numa só chamada, sem pedido de permissão: measureText e TextMetrics.
  • Canvas e WebGL concordam entre sistemas operativos para a mesma seed: consistência entre plataformas, o canvas difere entre sistemas operativos.

Áudio e media

  • A stack de áudio responde a partir do perfil em vez do dispositivo host: fingerprinting de AudioContext, sample rate e latência.
  • A tabela de codecs é declarada, para que um host Linux não responda a uma pergunta Windows com suporte Linux: fingerprinting de codecs.

Rede

  • O WebRTC oferece um candidato sintético que transporta a saída do proxy, em vez de vazar o endereço real ou não oferecer nenhum, o que é em si um indício: spoofing de candidato ICE do WebRTC, o IP do WebRTC corresponde à saída do proxy.
  • O DNS resolve através do proxy, incluindo quando o proxy não está nas preferências: um proxy vaza DNS, como verificar uma fuga de IP do proxy.
  • O fuso horário vem do IP de saída, resolvido offline, para que corresponda à saída: incompatibilidade entre fuso horário e proxy, GeoIP offline de fuso horário.

A camada de automação

  • Os eventos de input vêm do caminho de input real, para que isTrusted seja verdadeiro porque é verdadeiro: cliques do Playwright e isTrusted.
  • O ponteiro segue um caminho e uma temporização humanos, a uma cadência que um dispositivo real poderia produzir: movimento humano do rato, dinâmica do rato como biometria comportamental.
  • A superfície do debugger não responde às perguntas de temporização que denunciam um navegador controlado: deteção de temporização do debugger.
  • Shadow roots em modo fechado são alcançáveis, o que o Playwright padrão não consegue em nenhum dos motores, enquanto a página continua a ler null: shadow roots fechados.

Licença

MIT - veja LICENSE. O binário do Firefox com patches é distribuído sob a MPL-2.0 (licença upstream do Firefox). Os patches em C++ contra o mozilla-central que produzem esse binário estão em feder-cr/firefox_antidetect_patch.


Aviso legal

Este projeto é apenas para fins educativos. É fornecido tal como está, sem garantias. Não assumo qualquer responsabilidade pela forma como é usado. Use-o por sua conta e risco e em conformidade com as leis da sua jurisdição.


Built by Federico Elia  LinkedIn

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

Baixar ferramenta