Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/regseb/playwright-ghost
Playwright overlay with plugins.
https://github.com/regseb/playwright-ghost
ghost headless playwright polyfill
Last synced: about 1 month ago
JSON representation
Playwright overlay with plugins.
- Host: GitHub
- URL: https://github.com/regseb/playwright-ghost
- Owner: regseb
- License: mit
- Created: 2022-04-21T19:15:01.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-11T14:57:44.000Z (3 months ago)
- Last Synced: 2024-09-27T15:22:21.018Z (about 2 months ago)
- Topics: ghost, headless, playwright, polyfill
- Language: JavaScript
- Homepage:
- Size: 1.42 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
# Playwright-ghost
[![npm][img-npm]][link-npm] [![build][img-build]][link-build]
[![coverage][img-coverage]][link-coverage] [![semver][img-semver]][link-semver]Playwright-ghost est une surcouche de [Playwright](https://playwright.dev/) en
lui ajoutant un système de plugins pour gommer les différences entre un
navigateur utilisé par un être humain et un navigateur
[_headless_](https://fr.wikipedia.org/wiki/Navigateur_headless) contrôlé par un
programme.L'API de Playwright-ghost est identique à celle de Playwright, sauf l'ajout de
l'option `plugins` aux méthodes
[`browserType.launch([options])`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch)
et
[`browserType.launchPersistentContext(userDataDir, [options])`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context).La propriété `plugins` est un tableau avec les plugins à ajouter.
## Installation
[`playwright-ghost`](https://www.npmjs.com/package/playwright-ghost) ne fournit
pas [`playwright`](https://www.npmjs.com/package/playwright), vous devez aussi
l'ajouter dans vos dépendances.```shell
npm install playwright playwright-ghost
````playwright-ghost` peut aussi être utilisé avec
[`rebrowser-playwright`](https://www.npmjs.com/package/rebrowser-playwright) :```shell
npm install rebrowser-playwright playwright-ghost
```## Utilisation
Voici un exemple avec l'activation des plugins recommandés.
```javascript
import { chromium, plugins } from "playwright-ghost";
// Ou pour utiliser rebrowser-playwright :
// import { chromium, plugins } from "playwright-ghost/rebrowser";const browser = await chromium.launch({
plugins: plugins.recommendeds(),
});
const context = await browser.newContext();
const page = await context.newPage();await page.goto("https://perdu.com/");
const where = await page.locator("pre").textContent();
console.log(where);await context.close();
await browser.close();
```Dans cet autre exemple, trois plugins sont ajoutés :
- `polyfill.headless` qui n'a pas d'options ;
- `polyfill.screen` en définissant d'autres valeurs pour la taille de l'écran ;
- `util.adBlocker` en utilisant les options par défaut.```javascript
import { chromium, plugins } from "playwright-ghost";const browser = await chromium.launch({
plugins: [
plugins.polyfill.headless(),
plugins.polyfill.screen({ width: 1280, height: 720 }),
plugins.util.adBlocker(),
],
});
// ...
```Et pour cet exemple, les plugins recommandés et le plugin `util.locale` sont
ajoutés.```javascript
import { chromium, plugins } from "playwright-ghost";const browser = await chromium.launch({
plugins: [...plugins.recommendeds(), plugins.util.locale()],
});
// ...
```## Plugins
⭐ : Plugin recommandé / ⚙️ : Possède des options / 📦 : Nécessite une
dépendanceNomDescription
⭐
polyfill.automation
Désactiver la fonctionnalité--enable-automation
dans
Chromium.
⭐
polyfill.headless
Corriger de nombreuses différences dans les APIs Javascript avec le
nouveau mode headless de Chromium. Par exemple :
navigator.mimeTypes
...
⭐ ⚙️
polyfill.screen
Définir une valeur réaliste pour la taille de l'écran : 1920x1080. Ces
valeurs sont configurables avec les optionswidth
et
height
.
⚙️
polyfill.userAgent
Changer
l'agent
utilisateur (user agent) du navigateur avec l'option
userAgent
.
⭐ ⚙️
polyfill.viewport
Faire varier la taille du navigateur. Par défaut les valeurs sont prises
aléatoirement entre 1000x500 et 1800x800. Elles sont configurables avec
les optionswidth
etheight
.
⭐
polyfill.webdriver
Passer àfalse
la variablenavigator.webdriver
.
polyfill.webGL
Modifier les valeurs des paramètres WebGL.
⭐ ⚙️
humanize.dialog
Fermer les boîtes de dialogues dans un temps humainement possible (entre
1 et 5 secondes), car par défaut Playwright
les ferme immédiatement.
Les optionsmin
etmax
permettent de définir
d'autres bornes pour le délais de fermeture.
⚙️ 📦
util.adBlocker
Ajouter le bloqueur de publicité
Cliqz'
adblocker. Vous devez ajouter
@cliqz/adblocker-playwright
dans vos dépendances npm.
util.debug
Afficher dans la console du programme, les messages affichés dans la
console du navigateur.
util.locale
Utiliser le navigateur installé localement.
## Anti-bots
Chromium¹
Firefox²
Brotector
❌ 0.98
❌ 1.00
BrowserScan
✅
❌ WebDriver
Chromedriver Detector
✅
✅
CreepJS
✅ F-
❌ F+-
Datadome
✅
✅
Deviceandbrowserinfo
❌ GPU
❌ Webdriver
Device Info
✅
❌
FingerprintJS
✅
❌ Automation Tool
HeadlessDetectJS
✅
❌ 0.2
infosimples
✅
❌ Webdriver & Plugins
Chrome Headless Detection (Intoli)
✅
❌ WebDriver & Plugins
rebrowser-bot-detector
✅
❌ navigatorWebdriver
Antibot (Sannysoft)
✅
❌ Webdriver & Plugins
Cloudflare turnstile demo
✅
✅
¹ Chromium avec `rebrowser-playwright`, les plugins recommandés et le plugin
`polyfill.userAgent` (pour enlever _Headless_).\
² Firefox avec `playwright` et les plugins recommandés.[img-npm]:
https://img.shields.io/npm/dm/playwright-ghost?label=npm&logo=npm&logoColor=whitesmoke
[img-build]:
https://img.shields.io/github/actions/workflow/status/regseb/playwright-ghost/ci.yml?branch=main&logo=github&logoColor=whitesmoke
[img-coverage]:
https://img.shields.io/endpoint?label=coverage&url=https%3A%2F%2Fbadge-api.stryker-mutator.io%2Fgithub.com%2Fregseb%2Fplaywright-ghost%2Fmain
[img-semver]:
https://img.shields.io/badge/semver-2.0.0-blue?logo=semver&logoColor=whitesmoke
[link-npm]: https://www.npmjs.com/package/playwright-ghost
[link-build]:
https://github.com/regseb/playwright-ghost/actions/workflows/ci.yml?query=branch%3Amain
[link-coverage]:
https://dashboard.stryker-mutator.io/reports/github.com/regseb/playwright-ghost/main
[link-semver]: https://semver.org/spec/v2.0.0.html "Semantic Versioning 2.0.0"