dubin
dubin

Reputation: 23

selenium python runing firefox with TOR (windows)

I am trying to run python selenium (firefox driver) with tor. I checked this link (Using Selenium WebDriver with Tor) but this is the java implementation. I am relatively new to selenium and I encounter problems in translate the java code to the Python API.

Someone encounter this issue before?

Upvotes: 0

Views: 2535

Answers (1)

james-see
james-see

Reputation: 13176

Here is the code that works for me in Python 2.7 (I last updated it on March 12, 2015). As an added bonus, it fills in the username and password field on agora and asks you to fill in captcha that you see then clicks the submit button. You need to create a default firefox profile that has it's proxy set to tor (127.0.0.1:9050) and fill the path to that profile name into the startbrowser function profiler variable:

from selenium import webdriver 
from selenium.webdriver.support.ui import Select, WebDriverWait
from selenium.common.exceptions import NoSuchFrameException
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

username = 'agora username'
password = 'agora password'
def go_to_page(br):
    #page_num = page_num - 1
    #start_results = page_num * 100
    #start_results = str(start_results)
    url = 'http://agorahooawayyfoe.onion'
    print '[*] loading url: '+url
    br.get(url)
    #br.get_screenshot_as_file('agora.tiff')
    usernamed = br.find_element_by_name("username")
    usernamed.send_keys(username) # password
    passwordd = br.find_element_by_name("password") # enterCaptcha
    passwordd.send_keys(password)
    captchad = br.find_element_by_name("enterCaptcha")
    capt = raw_input('enter captcha you see on screen: ')
    captchad.send_keys(capt)
    br.implicitly_wait(3)
    br.find_element_by_name("submit").click()

def start_browser():
    profiler = webdriver.FirefoxProfile('/Users/your username/Library/Application Support/Firefox/Profiles/vxh0qxtt.tor')
    br = webdriver.Firefox(firefox_profile=profiler)
    br.implicitly_wait(10)
    return br

def main():
    br = start_browser()
    go_to_page(br)

main()

Upvotes: 1

Related Questions