Stealth Playwright evades detection with human level score (0.14)
Los mantenedores suelen responder en 1 día
@cport1 ya está trabajando en esto.
Desde el 24/9/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Summary
A Playwright script using playwright-extra + puppeteer-extra-plugin-stealth achieves a score of 0.14, indistinguishable from real human users (0.11-0.14 in my testing) with relatively simple behavioral tuning. The default block threshold of 0.5 passes it comfortably.
Environment
- FCaptcha: v1.39.0 (Node.js server)
- Playwright: tested via
playwright-extra+puppeteer-extra-plugin-stealth - Mode tested: invisible (form scoring)
- Browser: Chrome 127 (headed, real install, not headless)
Steps to reproduce
- Run FCaptcha server locally with verdict logging on
- Serve a form with invisible mode
- Run the following script: https://gist.github.com/obamaruntz/4825cb60701d0278beea5c27e068906a
Scores observed
Baseline run:
Tuned run:
What the attacker fixed vs. the baseline run
-
Typing speed 49ms/key -> bot 0.70 (conf 0.70)
Fix: gaussian-distributed ~155ms/key with std 35ms
Result: gone -
Abnormal keydown/keyup ratio -> bot 0.40 (conf 0.50)
Fix: added realistic key hold time ~75ms with variance
Result: gone -
No local WebRTC IPs -> headless 0.40
Fix: injected fake RTCPeerConnection candidate
Result: gone
Impact
With ~80 lines of behavioral tuning code, stealth Playwright achieves a score identical to a real human at the default threshold. Detection rate against this class of agent is effectively 0% out of the box.
- Lenguaje dominante
- JavaScript
- Estrellas
- 221
- Forks
- 23
- Merge medio
- 18 h 50 min
- PR fusionados (30 d)
- 42
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de WebDecoy/FCaptcha
-
enhancement good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
enhancement good first issue
Dificultad 1/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
Add Urdu (ur) widget translationAbiertoenhancement good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
Official React componentAbiertoenhancement help wanted javascript
Dificultad 3/5 1-2 días Aptitud para principiantes 52/100
Los mantenedores suelen responder en 1 día
-
documentation help wanted
Dificultad 2/5 Medio día Aptitud para principiantes 55/100
Los mantenedores suelen responder en 1 día
Todos los issues de WebDecoy/FCaptcha
Issues similares
-
data
Dificultad 1/5 Menos de una hora Aptitud para principiantes 74/100
gaseous-project/hasheous#637 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
gramps-project/gramps-web#1549 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
change request evaluating
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
sindresorhus/eslint-plugin-unicorn#3907 ·
Los mantenedores suelen responder en 1 día
-
bug(api): [E_INVALID_NEW_RECORD] tdocument - title over 300 characters returns 500 on createAbiertoPriority: Low Production Type: Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
GrottoCenter/grottocenter-api#1903 ·
Los mantenedores suelen responder en 1 día