Awesome
Brotector
Detects or even crashes (❌) webdrivers such as:
- driverless
- with cdp-patches
- selenium ❌
- puppeteer ❌
- playwright ❌
- undetected-playwright (buggy)
- with cdp-patches (no test yet)
- botright
- with uc-playwright (buggy)
- with cdp-patches (no test yet)
- with uc-playwright (buggy)
- undetected-playwright (buggy)
- nodriver
- @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.enable
orConsole.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.enable
detection insights