
Versão indetectável da biblioteca de testes e automação Playwright.
<h1 align="center">
🎭 Patchright
</h1>
<p align="center">
<a href="https://github.com/Kaliiiiiiiiii-Vinyzu/patchright/blob/main/LICENSE">
<img src="https://img.shields.io/badge/License-Apache%202.0-green">
</a>
<a>
<img src="https://img.shields.io/badge/Based%20on-Playwright-goldenrod">
</a>
<a>
<img src="https://img.shields.io/badge/Driver-Patched-blue">
</a>
<a href="https://github.com/Kaliiiiiiiiii-Vinyzu/patchright/releases/latest">
<img alt="Patchright Version" src="https://img.shields.io/github/v/release/Kaliiiiiiiiii-Vinyzu/patchright?display_name=release&label=Version">
</a>
<br/>
<a href="https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-python">
<img src="https://img.shields.io/badge/Package-Python-seagreen">
</a>
<a href="https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-python/releases">
<img alt="Python Downloads" src="https://img.shields.io/pepy/dt/patchright?color=red&label=Python%20Downloads">
</a>
<a href="https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-nodejs">
<img src="https://img.shields.io/badge/Package-NodeJS-seagreen">
</a>
<a href="https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-nodejs/releases">
<img alt="NodeJS Downloads" src="https://img.shields.io/npm/d18m/patchright?color=red&label=NodeJS%20Downloads">
</a>
<a href="https://github.com/DevEnterpriseSoftware/patchright-dotnet">
<img src="https://img.shields.io/badge/Package-.Net-seagreen">
</a>
<a href="https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-nodejs/releases">
<img alt=".Net Downloads" src="https://img.shields.io/nuget/dt/Patchright?label=.Net%20Downloads">
</a>
<br/>
<img src="https://img.shields.io/github/actions/workflow/status/Kaliiiiiiiiii-Vinyzu/patchright/patchright_tests.yml?label=Patchright%20Driver%20Tests">
<img src="https://img.shields.io/github/actions/workflow/status/Kaliiiiiiiiii-Vinyzu/patchright-python/patchright_tests.yml?label=Patchright%20Python%20Tests">
<img src="https://img.shields.io/github/actions/workflow/status/DevEnterpriseSoftware/patchright-dotnet/patchright_test.yml?label=Patchright%20.Net%20Tests">
</p>
#### Patchright é uma versão corrigida e indetectável do Framework de Testes e Automação Playwright. </br> Pode ser usado como um substituto direto do Playwright.
> [!NOTE]
> Este repositório disponibiliza o Driver do Patchright. Para usar o Patchright, confira o [Pacote Python](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-python), o [Pacote NodeJS](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-nodejs) ou o [Pacote .Net](https://github.com/DevEnterpriseSoftware/patchright-dotnet/) _mantido pela comunidade_
> [!IMPORTANT]
> O Patchright só aplica patches em navegadores baseados no CHROMIUM. Firefox e Webkit não são suportados.
---
<details open id="sponsors">
<summary><h3>Patrocinadores</h1></summary>
<sup>Quer Patrocinar este Projeto? Entre em contato com [@vinyzu](https://discordapp.com/users/935224495126487150) no Discord!</sup>
[<img width="60%" alt="NodeMaven Banner" src="https://assets.kitploit.com/production/public/readmes/41476/8409e9fd4ecade7fa018f576c77d6f51fb342f311f9e8e2b49984de007b5a605/fc71d82e04f5dc303d21f905310e811885d8a6a57ddffe892b4164bf12547371-display-v1.webp" />](https://go.nodemaven.com/Vinyzuoctober)
</br>
#### [NodeMaven](https://go.nodemaven.com/Vinyzuoctober): Seu provedor de proxies eficiente para Web Scraping e Automação com IPs de Alta Qualidade.
Por que [NodeMaven](https://go.nodemaven.com/Vinyzuoctober)?
🎯 Segmentação por ZIP
</br>
✅ 99,9% de Uptime
</br>
🔍 Filtragem de IP: Proxies com garantia de fraud score <97%
</br>
🔰 Nenhum KYC necessário
</br>
🎉 Ferramentas gratuitas exclusivas: Proxy Bandwidth Checker, Meta Tag Checker, IP Lookup e outras!
**Códigos especiais** para usuários do Patchright:
</br>
🔥 **PATCHRIGHT35** - **35% de desconto** em Proxies Móveis e Residenciais
</br>
🔥 **PATCHRIGHT40** - **40% de desconto** em Proxies ISP (Estáticos)
<sup>Escolha qualidade e estabilidade com [NodeMaven](https://go.nodemaven.com/Vinyzuoctober).</sup>
</br>
<sup>Confira o novo GitHub da Nodemaven para mais soluções de web scraping e automação - https://github.com/nodemaven</sup>
---
[<img height="100" alt="swiftproxy banner" src="https://assets.kitploit.com/production/public/readmes/41476/71326e65aa66112fe5c3cd5a61951b775d58850b93eaaf166fd77930681f5174.png" />](https://www.swiftproxy.net/?ref=Vinyzu)
#### [Swiftproxy](https://www.swiftproxy.net/?ref=Vinyzu): Proxies Residenciais de Alto Desempenho para Coleta de Dados Escalável
Feito para desenvolvedores que precisam de uma infraestrutura de proxy **confiável** e com anti-detecção. O [Swiftproxy](https://www.swiftproxy.net/?ref=Vinyzu) oferece **conexões estáveis**, **altas taxas de sucesso** e controle flexível para **scraping e automação em larga escala**.
- 🌍 Mais de 195 localidades com IPs residenciais de origem ética
- 🔄 Sessões **rotativas** e **fixas** com geolocalização precisa
- ⚡ Otimizado para **anti-ban** e **alta taxa de sucesso**
- 🔌 Suporte a HTTP / HTTPS / SOCKS5
- 🧪 **Teste gratuito de 500MB** para avaliação
- 💸 Código de **desconto especial** para usuários do Patchright: **PROXY90 - 10%**
<sup> Ideal para: Web scraping, automação, multi-contas e extração de dados em larga escala </sup>
---
[<img height="90" alt="rapidproxy banner" src="https://assets.kitploit.com/production/public/readmes/41476/2c138417cf7695cb48943327f3d6d9036986882c2a4ffe5e9172f07386a9f229.png" />](https://www.rapidproxy.io/?ref=Vinyzu)
#### [RapidProxy](https://www.rapidproxy.io/?ref=Vinyzu) oferece uma rede de proxies estável e de alto desempenho, construída para operações de dados em larga escala.
O [RapidProxy](https://www.rapidproxy.io/?ref=Vinyzu) entrega:
- 🌍 Mais de 90M de IPs Residenciais (mais de 200 localidades)
- 🔄 **Proxies Residenciais Rotativos** — a partir de **$0,65/GB** (tráfego sem expiração)
- 🧩 **IPs Residenciais Estáticos** — **$5/IP** (30 dias, tráfego ilimitado)
- 🎯 Geolocalização precisa
- ⚡ **Teste Gratuito Disponível** — avalie o desempenho do proxy sem riscos
- Feito para scraping, automação e fluxos de trabalho de dados de alto desempenho.
- 🔥 Oferta Especial: Use o código **RAPID10** para obter **10% de desconto**
<sup> Comece rápido. Escale globalmente. Mantenha a estabilidade com o [RapidProxy](https://www.rapidproxy.io/?ref=Vinyzu). </sup>
---
<div align="center">
<img src="https://assets.kitploit.com/production/public/readmes/41476/f3ac5dd3dd1ac541342eeda194f605fe1e28f9b044c0a90867b6db914c4a1b48/ad967b2ca510d337e9c8e72d654869c8fc75b08b088e358e074a6bbb003e6639-display-v1.webp" width="56" alt="Scrappey">
### Patrocinado por [Scrappey](https://scrappey.com?utm_source=patchright&utm_medium=github&utm_campaign=repo_readme)
</div>
Fazer o navegador passar pela detecção é um problema. Manter proxies rotativos, fingerprints
atualizados e sessões ativas ao longo de alguns milhões de requisições é outro. O **Scrappey**
resolve o segundo problema: um único endpoint, páginas resolvidas de volta.
- **Clearcote** — nosso próprio Chromium modificado, mantido internamente, não é um build padrão
- **Vários mecanismos por trás de um único endpoint** — bloqueado em uma stack, redirecionado para outra
- **Clique, digite, aguarde e role** pela API — uma sessão real, não um proxy de fetch
- **Proxies residenciais e de datacenter** incluídos, ou use os seus próprios
- **Por requisição**, sem mínimo mensal
```bash
curl -X POST "https://publisher.scrappey.com/api/v1?key=YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"cmd": "request.get", "url": "https://example.com"}'
```
Obtenha 10% de desconto com o código `PATCHRIGHT`
[Documentação](https://scrappey.com/docs?utm_source=patchright&utm_medium=github&utm_campaign=repo_readme) · [Discord](https://scrappey.com/discord?utm_source=patchright&utm_medium=github&utm_campaign=repo_readme) · [Obter uma chave de API](https://scrappey.com?utm_source=patchright&utm_medium=github&utm_campaign=repo_readme)
---
[<img height="120" alt="ProxyLane Banner" src="https://assets.kitploit.com/production/public/readmes/41476/ed95563a028e0c1cefb4f5dccc8f7b69653f4c3fb7d5c4b5099b4cd5718714b7/7afb4fb03926a17d778280ff8bc7b2f62f5206d212d2b7525ea6ee90ae8ed0d3-display-v1.webp" />](https://proxylane.dev/?utm_source=patchright&utm_medium=partnership&utm_campaign=patchright_sponsor_202610&utm_content=readme)
</br>
#### [ProxyLane](https://proxylane.dev/?utm_source=patchright&utm_medium=partnership&utm_campaign=patchright_sponsor_202610&utm_content=readme): Proxies Residenciais que mantêm cada perfil do Patchright consistente.
Para corresponder o fuso horário informado ao seu proxy, atribua a cada perfil o seu próprio IP fixo (sticky) vinculado a uma cidade e defina o mesmo fuso horário:
```py
context = playwright.chromium.launch_persistent_context(
user_data_dir="...", channel="chrome", headless=False, no_viewport=True,
proxy={"server": "http://us.gw.proxylane.dev:10000",
"username": "USER_c_US_city_Chicago_s_profile1", # one sticky IP per profile
"password": "PASS"},
timezone_id="America/Chicago", locale="en-US", # match the proxy city
)
```
<sup>Dica: defina `--webrtc-ip-handling-policy=disable_non_proxied_udp`, caso contrário [o WebRTC expõe seu IP real](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-python/issues/47).</sup>
:earth_africa: 28M de IPs residenciais em 195 países, com segmentação por cidade, CEP e ASN
</br>
:stopwatch: Sessões fixas de até 72h, HTTP e SOCKS5
</br>
:money_with_wings: A partir de $2/GB, o tráfego nunca expira
:fire: **PATCHLANE35** - **35% de desconto** para usuários do Patchright
<sup>Cole o trecho, adicione suas credenciais e execute sua próxima sessão do Patchright em um IP residencial real com o [ProxyLane](https://proxylane.dev/?utm_source=patchright&utm_medium=partnership&utm_campaign=patchright_sponsor_202610&utm_content=readme_caption).</sup>
</details>
---
## Patches
### Vazamento de [Runtime.enable](https://vanilla.aslushnikov.com/?Runtime.enable)
Este é o maior Patch usado pelo Patchright. Para evitar a detecção por esse vazamento, o patchright evita usar [Runtime.enable](https://vanilla.aslushnikov.com/?Runtime.enable) executando Javascript em ExecutionContexts (isolados).
### Vazamento de [Console.enable](https://vanilla.aslushnikov.com/?Console.enable)
O Patchright corrige esse vazamento desativando completamente a Console API. Isso significa que a funcionalidade de console não funcionará no Patchright. Se você realmente precisa do console, talvez seja melhor usar loggers Javascript, embora eles também possam ser facilmente detectados.
### Vazamentos de Command Flags
O Patchright ajusta os Playwright Default Args para evitar a detecção por Vazamentos de Command Flag. Isso (principalmente) afeta:
- `--disable-blink-features=AutomationControlled` (adicionado) para evitar a detecção de navigator.webdriver.
- `--enable-automation` (removido) para evitar a detecção de navigator.webdriver.
- `--disable-popup-blocking` (removido) para evitar o travamento de popups.
- `--disable-component-update` (removido) para evitar a detecção como Stealth Driver.
- `--disable-default-apps` (removido) para habilitar os apps padrão.
- `--disable-extensions` (removido) para habilitar extensões
### Vazamentos Gerais
O Patchright corrige alguns vazamentos gerais no código-base do Playwright. Isso inclui principalmente configurações ruins e pontos de detecção óbvios.
### Closed Shadow Roots
O Patchright é capaz de interagir com elementos em Closed Shadow Roots. Basta usar locators normais e o Patchright fará o resto.
<br/>
O Patchright agora também é capaz de usar XPaths em Closed Shadow Roots.
---
## Stealth
Com a configuração certa, o Patchright atualmente é considerado indetectável.
O Patchright passa em:
- [Brotector](https://kaliiiiiiiiii.github.io/brotector/) ✅ (com [CDP-Patches](https://github.com/Kaliiiiiiiiii-Vinyzu/CDP-Patches/))
- [Cloudflare](https://cloudflare.com/) ✅
- [Kasada](https://www.kasada.io/) ✅
- [Akamai](https://www.akamai.com/products/bot-manager/) ✅
- [Shape/F5](https://www.f5.com/) ✅
- [Bet365](https://bet365.com/) ✅
- [Datadome](https://datadome.co/products/bot-protection/) ✅
- [Fingerprint.com](https://fingerprint.com/products/bot-detection/) ✅
- [CreepJS](https://abrahamjuliot.github.io/creepjs/) ✅
- [Sannysoft](https://bot.sannysoft.com/) ✅
- [Incolumitas](https://bot.incolumitas.com/) ✅
- [IPHey](https://iphey.com/) ✅
- [Browserscan](https://browserscan.net/) ✅
- [Pixelscan](https://pixelscan.net/) ✅
---
## Bugs
#### Embora tenhamos dedicado muito tempo para tornar o Patchright o mais estável possível, bugs ainda podem ocorrer. Se você encontrar algum bug, por favor reporte-o nas [Issues](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright/issues).
#### O Patchright agora é testado com os Playwright Tests após cada release. Veja [aqui](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-python/actions/workflows/patchright_tests.yml)
> [!WARNING]
> O Patchright passa na maioria, mas não em todos os Playwright tests. Alguns bugs são considerados impossíveis de resolver, outros simplesmente não são relevantes. Veja a lista de bugs e suas explicações [aqui](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright/issues/30).
#### Com base nos Playwright Tests, concluímos que é altamente improvável que você seja afetado por esses bugs em casos de uso regulares.
<details>
<summary><b>Ardilezas do Script de Inicialização</b></summary>
### Explicação
Para poder usar InitScripts sem [Runtime.enable](https://vanilla.aslushnikov.com/?Runtime.enable), o Patchright usa Rotas do Playwright para injetar JavaScript em requisições HTML.
### Bugs
As Rotas do Playwright podem causar alguns bugs em outras partes do seu código. Os InitScripts do Patchright não causarão nenhum bug que não seria causado pelas Rotas normais do Playwright. </br> Se você quiser que algum desses bugs seja corrigido, terá que entrar em contato com a equipe do Playwright.
### Vazamentos
Os InitScripts do Patchright podem ser detectados por Ataques de Temporização. No entanto, nenhum antibot atualmente verifica esse tipo de Ataque de Temporização e provavelmente não verificarão por um bom tempo. </br> Consideramos que eles não representam um grande risco de detecção.
</details>
---
### TODO
- [x] Implementar opção para escolher o Contexto de Execução (Principal/Isolado).
- [x] Corrigir bugs corrigíveis.
- [x] Implementar o atualizador .patch para mostrar facilmente os patches do Patchright.
- [x] Configurar testes automatizados em novas versões.
- [x] Implementar o Patchright no .NET.
- [ ] Implementar o Patchright no Java.
---
## Desenvolvimento
A implantação de novas versões do Patchright é automática, mas bugs decorrentes de alterações na base de código do Playwright podem ocorrer. As correções para esses bugs podem levar alguns dias para serem lançadas.
---
## Apoie nosso trabalho
Se você optar por apoiar nosso trabalho, entre em contato com [@vinyzu](https://discord.com/users/935224495126487150) ou [@steve_abcdef](https://discord.com/users/936292409426477066) no Discord.
---
## Direitos autorais e licença
© [Vinyzu](https://github.com/Vinyzu/)
O Patchright está licenciado sob [Apache 2.0](https://choosealicense.com/licenses/apache-2.0/)
[Algumas partes](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright/blob/10c5a090e9a1dcd2107c253d65b3d8b27d0670a9/driver_patches/framesPatch.ts#L156-L171) da base de código são inspiradas no [Driverless](https://github.com/kaliiiiiiiiii/Selenium-Driverless).
Agradecimentos a [Nick Webson](https://github.com/rebrowser/rebrowser-patches) pela ideia da documentação em arquivos .patch.
---
## Aviso legal
Este repositório é fornecido **apenas para fins educacionais**. \
Nenhuma garantia é fornecida quanto à precisão, integridade ou adequação a qualquer finalidade. **Use por sua conta e risco** — os autores e mantenedores não assumem **nenhuma responsabilidade** por **quaisquer danos**, **questões legais** ou **violações de garantia** resultantes do uso, modificação ou distribuição deste código.\
**Qualquer uso indevido ou violação legal é de responsabilidade exclusiva do usuário**.
---
## Autores
#### Mantenedor ativo: [Vinyzu](https://github.com/Vinyzu/) </br> Co-mantenedor: [Kaliiiiiiiiii](https://github.com/kaliiiiiiiiii/)