Skip to content

kaliiiiiiiiii/brotector

Repository files navigation

Brotector

Detects or even crashes (❌) webdrivers such as:

For the tests, each webdriver has at least to click the button with the ID clickHere

Detections

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 or Console.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