Created
April 28, 2015 22:28
-
-
Save imran31415/071266bb4bf1b1af5f60 to your computer and use it in GitHub Desktop.
Torproxy.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
from selenium import webdriver | |
import subprocess | |
ff_prof = webdriver.FirefoxProfile() | |
#set some privacy settings | |
ff_prof.set_preference( "places.history.enabled", False ) | |
ff_prof.set_preference( "privacy.clearOnShutdown.offlineApps", True ) | |
ff_prof.set_preference( "privacy.clearOnShutdown.passwords", True ) | |
ff_prof.set_preference( "privacy.clearOnShutdown.siteSettings", True ) | |
ff_prof.set_preference( "privacy.sanitize.sanitizeOnShutdown", True ) | |
ff_prof.set_preference( "signon.rememberSignons", False ) | |
ff_prof.set_preference( "network.cookie.lifetimePolicy", 2 ) | |
ff_prof.set_preference( "network.dns.disablePrefetch", True ) | |
ff_prof.set_preference( "network.http.sendRefererHeader", 0 ) | |
#set socks proxy | |
ff_prof.set_preference( "network.proxy.type", 1 ) | |
ff_prof.set_preference( "network.proxy.socks_version", 5 ) | |
ff_prof.set_preference( "network.proxy.socks", '127.0.0.1' ) | |
ff_prof.set_preference( "network.proxy.socks_port", 9050 ) | |
ff_prof.set_preference( "network.proxy.socks_remote_dns", True ) | |
#if you're really hardcore about your security | |
#js can be used to reveal your true i.p. | |
ff_prof.set_preference( "javascript.enabled", False ) | |
#get a huge speed increase by not downloading images | |
ff_prof.set_preference( "permissions.default.image", 2 ) | |
## | |
# programmatically start tor (in windows environment) | |
## | |
tor_path = "C:\\Users\\ihassanali001\\Documents\\Tor Repositories\\Tor Browser_FE\\Browser\\TorBrowser\\Tor\\" #tor.exe | |
torrc_path = "C:\\Users\\ihassanali001\\Documents\\Tor Repositories\\Tor Browser_FE\\Browser\\TorBrowser\\Data\\Tor\\torrc" | |
DETACHED_PROCESS = 0x00000008 | |
#calling as a detached_process means the program will not die with your python program - you will need to manually kill it | |
## | |
# somebody please let me know if there's a way to make this a child process that automatically dies (in windows) | |
tor_process = subprocess.Popen( '"' + tor_path+'tor.exe" --nt-service "-f" "' + torrc_path + '"', creationflags=DETACHED_PROCESS ) | |
#attach to tor controller | |
## imports ## | |
import stem.socket | |
import stem.connection | |
## | |
control_password = 'password' | |
tor_controller = stem.socket.ControlPort( port=9051 ) | |
control_password = 'password' | |
#in your torrc, you need to store the hashed version of 'password' which you can get with: subprocess.call( '"' + tor_path+'tor.exe" --hash-password %s' %control_password ) | |
stem.connection.authenticate( tor_controller, password=control_password ) | |
#check that everything is good with your tor_process by checking bootstrap status | |
tor_controller.send( 'GETINFO status/bootstrap-phase' ) | |
response = worker.tor_controller.recv() | |
response = response.content() | |
#I will leave handling of response status to you |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment