Skip to main content
5 of 5
Add Python syntax highlighting
Benjamin Loison
  • 5.8k
  • 4
  • 20
  • 37

Is there a version of Selenium WebDriver that is not detectable?

I am running the Chrome driver over Selenium on a Ubuntu server behind a residential proxy network. Yet, my Selenium is being detected. Is there a way to make the Chrome driver and Selenium 100% undetectable?

I have been trying for so long I lost track of the many things I have done including:

  1. Trying different versions of Chrome
  2. Adding several flags and removing some words from the Chrome driver file.
  3. Running it behind a proxy (residential ones also) using incognito mode.
  4. Loading profiles.
  5. Random mouse movements.
  6. Randomising everything.

I am looking for a true version of Selenium that is 100% undetectable. If that ever existed. Or another automation way that is not detectable by bot trackers.

This is part of the starting of the browser:

sx = random.randint(1000, 1500) sn = random.randint(3000, 4500) display = Display(visible=0, size=(sx,sn)) display.start() randagent = random.randint(0,len(useragents_desktop)-1) uag = useragents_desktop[randagent] #this is to prevent ip leaking preferences = "webrtc.ip_handling_policy" : "disable_non_proxied_udp", "webrtc.multiple_routes_enabled": False, "webrtc.nonproxied_udp_enabled" : False chrome_options.add_experimental_option("prefs", preferences) chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-impl-side-painting") chrome_options.add_argument("--disable-setuid-sandbox") chrome_options.add_argument("--disable-seccomp-filter-sandbox") chrome_options.add_argument("--disable-breakpad") chrome_options.add_argument("--disable-client-side-phishing-detection") chrome_options.add_argument("--disable-cast") chrome_options.add_argument("--disable-cast-streaming-hw-encoding") chrome_options.add_argument("--disable-cloud-import") chrome_options.add_argument("--disable-popup-blocking") chrome_options.add_argument("--ignore-certificate-errors") chrome_options.add_argument("--disable-session-crashed-bubble") chrome_options.add_argument("--disable-ipv6") chrome_options.add_argument("--allow-http-screen-capture") chrome_options.add_argument("--start-maximized") wsize = "--window-size=" + str(sx-10) + ',' + str(sn-10) chrome_options.add_argument(str(wsize) ) prefs = {"profile.managed_default_content_settings.images": 2} chrome_options.add_experimental_option("prefs", prefs) chrome_options.add_argument("blink-settings=imagesEnabled=true") chrome_options.add_argument("start-maximized") chrome_options.add_argument("user-agent="+uag) chrome_options.add_extension(pluginfile)#this is for the residential proxy driver = webdriver.Chrome(executable_path="/usr/bin/chromedriver", chrome_options=chrome_options) 
Grman
  • 493
  • 1
  • 5
  • 5