I'm trying to run my selenium driver on Tor. Note that the script already runs with no errors without Tor.
This is what I've done so far:
1) I called the Tor framework
import socks
import socket
from stem.util import term
import stem.process
SOCKS_PORT=7000
socks.setdefaultproxy(proxy_type=socks.PROXY_TYPE_SOCKS5,
addr = "127.0.0.1",
port = SOCKS_PORT)
socket.socket = socks.socksocket
# Perform DNS resolution through the socket
def getaddrinfo(*args): return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', (args[0], args[1]))]
socket.getaddrinfo = getaddrinfo
def print_bootstrap_lines(line):
if "Bootstrapped " in line:
print(term.format(line, term.Color.GREEN))
tor_process = stem.process.launch_tor_with_config(
tor_cmd = "C:/Users/my-username\Desktop/Tor Browser/Browser/TorBrowser/Tor//tor.exe" ,
config = { 'SocksPort': str(SOCKS_PORT),},
init_msg_handler = print_bootstrap_lines,
)
After calling the Tor framework which is like a container to my understanding, I then called the Chrome driver:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
options = Options()
options.binary_location = r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
driver = webdriver.Chrome(options=options, executable_path = r'C:\Users\my-username\chromedriver')
3) At this point I insert the scraping script.
4) Close driver and kill the Tor process:
driver.close()
tor_process.kill()
The output I get is the following:
Apr 15 14:31:20.000 [notice] Bootstrapped 0%: Starting
Apr 15 14:31:23.000 [notice] Bootstrapped 10%: Finishing handshake with directory server
Apr 15 14:31:23.000 [notice] Bootstrapped 80%: Connecting to the Tor network
Apr 15 14:31:23.000 [notice] Bootstrapped 90%: Establishing a Tor circuit
Apr 15 14:31:24.000 [notice] Bootstrapped 100%: Done
Traceback (most recent call last):
File "<ipython-input-2-2b2233fc0ae4>", line 1, in <module>
runfile('C:/Users/my-username-folder/FireStarter_All_1Step_2.py', wdir='C:/Users/my-username-folder')
File "C:\Users\my-username\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 786, in runfile
execfile(filename, namespace)
File "C:\Users\my-username\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/my-username-folder/FireStarter_All_1Step_2.py", line 94, in <module>
driver = webdriver.Chrome(options=options, executable_path = r'C:\Users\my-username-folder\chromedriver')
File "C:\Users\my-username\AppData\Local\Continuum\anaconda3\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 73, in __init__
self.service.start()
File "C:\Users\my-username\AppData\Local\Continuum\anaconda3\lib\site-packages\selenium\webdriver\common\service.py", line 104, in start
raise WebDriverException("Can not connect to the Service %s" % self.path)
WebDriverException: Can not connect to the Service C:\Users\my-username-folder\chromedriver
What am I doing wrong?
Update: I am looking to use Tor with Chrome browser.
Selenium runs Tor using the Firefox package, so make sure that both Tor and Firefox browsers are installed as stand-alone applications.
Selenium test scripts can be written in different programming languages like Java, Python, C# and many more. These test scripts can run across various browsers like Chrome, Safari, Firefox, Opera and also provides support across various platforms like Windows, Mac OS, Linux, Solaris.
To use Tor with Chrome browser through Selenium you can use the following solution:
Code Block:
from selenium import webdriver
import os
# To use Tor's SOCKS proxy server with chrome, include the socks protocol in the scheme with the --proxy-server option
# PROXY = "socks5://127.0.0.1:9150" # IP:PORT or HOST:PORT
torexe = os.popen(r'C:\Users\Debanjan.B\Desktop\Tor Browser\Browser\TorBrowser\Tor\tor.exe')
PROXY = "socks5://localhost:9050" # IP:PORT or HOST:PORT
options = webdriver.ChromeOptions()
options.add_argument('--proxy-server=%s' % PROXY)
driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get("http://check.torproject.org")
Browser Snapshot:
You can find a relevant discussion in How to connect to Tor browser using Python
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With