Yes, it is possible to make selenium use the TOR browser.

I was able to do so on both Ubuntu and Mac OS X.

Two things have to happen:

Set the binary path to the firefox binary that Tor uses. On a Mac this path would typically be /Applications/TorBrowser.app/Contents/MacOS/firefox . On my Ubuntu machine it is /usr/bin/tor-browser/Browser/firefox . The Tor browser uses a SOCKS host at 127.0.0.1:9150 either through Vidalia or Tor installation. Launch Tor once from the Finder and leave it open so that Vidalia will be running. The instances launched with selenium will use the SOCKS host that Vidalia starts, too.

Here is the code to accomplish those two things. I run this on Mac OS X Yosemite:

import os from selenium.webdriver.firefox.firefox_binary import FirefoxBinary from selenium import webdriver # path to the firefox binary inside the Tor package binary = '/Applications/TorBrowser.app/Contents/MacOS/firefox' if os.path.exists(binary) is False: raise ValueError("The binary path to Tor firefox does not exist.") firefox_binary = FirefoxBinary(binary) browser = None def get_browser(binary=None): global browser # only one instance of a browser opens, remove global for multiple instances if not browser: browser = webdriver.Firefox(firefox_binary=binary) return browser if __name__ == "__main__": browser = get_browser(binary=firefox_binary) urls = ( ('tor browser check', 'https://check.torproject.org/'), ('ip checker', 'http://icanhazip.com') ) for url_name, url in urls: print "getting", url_name, "at", url browser.get(url)

On an Ubuntu system I was able to run the Tor browser via selenium. This machine has tor running at port 9051 and privoxy http proxy that uses tor at port 8118. In order for the Tor browser to pass the tor check page I had to set the http proxy to privoxy.