Brotector
An advanced antibot for webdrivers
Install / Use
npx skills add ttlns/brotectorInstalls into whichever agent you are using.
README
Brotector
Detects or even crashes (❌) webdrivers such as:
- [x] driverless
- [ ] with cdp-patches
- [x] selenium ❌
- [x] undetected-chromedriver
- [x] seleniumbase
- [x] puppeteer ❌
- [ ] puppeteer-extra-stealth
- [x] pyppeteer
- [x] playwright ❌
- [x] undetected-playwright (buggy)
- [ ] with cdp-patches (no test yet)
- [x] botright
- [x] with uc-playwright (buggy)
- [ ] with cdp-patches (no test yet)
- [x] with uc-playwright (buggy)
- [x] undetected-playwright (buggy)
- [x] nodriver
- [x] @ulixee/hero
For the tests, each webdriver has at least to click the button with the ID clickHere
Detections
<p float="left"> <img src="assets/example_screenshot_headless.png" width="49%" /> <img src="assets/brotector_error_message.png" width="50%" /> </p>navigator.webdriver
navigator.webdriver (JavaScript) is set to true
runtime.enabled
Runtime is enabled
score here refers to the certainty of the
occurs when:
Runtime.enableorConsole.enable(CDP) has been called (most libraries do that, type=webdriver)- the user opens the devtools (type=devtools)
Input.cordinatesLeak
occurs due to crbug#1477537
CDP-Patches can be used to bypass this
window.cdc
a leak specific to chromedriver (selenium)
see stackoverflow-answer
"Input.untrusted"
Mouse event not dispatched by a user detected
see Event.isTrusted property
canvasMouseVisualizer
CanvasRenderingContext2D.arc has been called with
- cordinates +-5px at current mouse position
- canvas +-1px covers the whole page
- canvas passes pointerEvents through
UAOverride
navigator.userAgentData.getHighEntropyValues has empty data
(type=HighEntropyValues.empty, UA meaning UserAgent)
SeleniumScriptInjection
- Detects when selenium tries to inject a script (even used for finding elements)
- makes selenium (any chromedriver-based framework) crash (bypassable for testing
?crash=false) - just don't use selenium lol
PWinitScript
- detects
playwright>=1.46.1, induced with commit
stack.signature
detects injected javascript based on the stack trace in hooks
pdfStyle
a detection regarding PDF rendering,
specific to puppeteer github issue or --enable-field-trial-config
Note: There might be false-positives
popupCrash
crashes chrome when automated with playwright or puppeteer due to crbug#340836884
(bypassable for testing ?crash=false)
Contribution
feel free to
- open
[feature request]s for driver detections - open PRs
- use the discussions
Licence
see LICENSE
Author & Copyright
Aurin Aegerter (aka Steve, kaliiiiiiiiii)
Thanks // References
- selenium-detector
- jdetects
- thanks @ProseccoRider - some further
Runtime.enabledetection insights
Related Skills
node-connect
385.5kDiagnose OpenClaw Android, iOS, or macOS node pairing, QR/setup code, route, auth, and connection failures.
blender-python-addon
40.5kBlender Python add-on rules for operators, panels, properties, registration, testing, and API-safe scripting
flutter-development-guidelines-cursorrules-prompt-file
40.5kCursor rules for Flutter development with MVVM architecture, Riverpod state management, Material widgets, and Dart style guidelines.
commit-push-pr
140.7kCommit, push, and open a PR
