patternpythonMinor
Accessing Tor using Python 2.7.x
Viewed 0 times
pythontorusingaccessing
Problem
Below are two functions that work no problem in my current script. They are written to be ran in Python 2.7.x
```
def tor_browser_initialise():
""" This function checks whether the Tor Browser is running. If it isn't,
it will open the Tor Browser.
"""
processlist = []
for p in psutil.process_iter():
try:
process = psutil.Process(p.pid)
pname = process.name()
processlist.append(pname)
except:
continue
if "tor.exe" not in processlist:
process = subprocess.Popen(r"C:\Program Files (x86)\Tor Browser\Browser\firefox.exe", stdout=subprocess.PIPE)
time.sleep(30)
def connect_tor(url):
""" This function accepts a URl as an argument. It accesses the URL via TOR before
returning the HTML source code to the function that called it. This function also
uses random browser information.
"""
LOCALHOST = "127.0.0.1"
PORT = 9150
useragent_list = ['Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0',
'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/29.0',
'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1944.0 Safari/537.36',
'Mozilla/5.0 (compatible; MSIE 10.6; Windows NT 6.1; Trident/5.0; InfoPath.2; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727) 3gpp-gba UNTRUSTED/1.0',
'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)',
'Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14',
'Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.3
```
def tor_browser_initialise():
""" This function checks whether the Tor Browser is running. If it isn't,
it will open the Tor Browser.
"""
processlist = []
for p in psutil.process_iter():
try:
process = psutil.Process(p.pid)
pname = process.name()
processlist.append(pname)
except:
continue
if "tor.exe" not in processlist:
process = subprocess.Popen(r"C:\Program Files (x86)\Tor Browser\Browser\firefox.exe", stdout=subprocess.PIPE)
time.sleep(30)
def connect_tor(url):
""" This function accepts a URl as an argument. It accesses the URL via TOR before
returning the HTML source code to the function that called it. This function also
uses random browser information.
"""
LOCALHOST = "127.0.0.1"
PORT = 9150
useragent_list = ['Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0',
'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/29.0',
'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1944.0 Safari/537.36',
'Mozilla/5.0 (compatible; MSIE 10.6; Windows NT 6.1; Trident/5.0; InfoPath.2; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727) 3gpp-gba UNTRUSTED/1.0',
'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)',
'Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14',
'Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.3
Solution
Avoid bare
Writing
Reconsider the very long sleeping
The function
That is a lot of time to sleep. Are you 100% sure that any call to that function will want to sleep so much?
Much worse, the
Just remove the call to
exceptWriting
except: without specifying a precise exception is asking for trouble, as anything will be caught, silencing all possible bugs, instead use: except MyExpectedKindOfException.Reconsider the very long sleeping
The function
tor_browser_initialise ends with time.sleep(30).That is a lot of time to sleep. Are you 100% sure that any call to that function will want to sleep so much?
Much worse, the
sleep is not documented, so the caller will see his program hang on for 30 seconds for no apparent reason!Just remove the call to
time.sleep and let the user decide if and how much he wants to sleep after calling the function.Context
StackExchange Code Review Q#115665, answer score: 5
Revisions (0)
No revisions yet.