Skip to content

Instantly share code, notes, and snippets.

@SOURAV-ROY
Forked from ankitagarwal248/tor.py
Last active August 29, 2015 14:06
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SOURAV-ROY/f2e71a765925924e2f38 to your computer and use it in GitHub Desktop.
Save SOURAV-ROY/f2e71a765925924e2f38 to your computer and use it in GitHub Desktop.
import socks
import urllib2
import requests
from Queue import Queue
from threading import Thread
import httplib
class SocksiPyConnection(httplib.HTTPConnection):
def __init__(self, proxytype, proxyaddr, proxyport = None, rdns = True, username = None, password = None, *args, **kwargs):
self.proxyargs = (proxytype, proxyaddr, proxyport, rdns, username, password)
httplib.HTTPConnection.__init__(self, *args, **kwargs)
def connect(self):
self.sock = socks.socksocket()
self.sock.setproxy(*self.proxyargs)
if isinstance(self.timeout, float):
self.sock.settimeout(self.timeout)
self.sock.connect((self.host, self.port))
class SocksiPyHandler(urllib2.HTTPHandler):
def __init__(self, *args, **kwargs):
self.args = args
self.kw = kwargs
urllib2.HTTPHandler.__init__(self)
def http_open(self, req):
def build(host, port=None, strict=None, timeout=0):
conn = SocksiPyConnection(*self.args, host=host, port=port, strict=strict, timeout=timeout, **self.kw)
return conn
return self.do_open(build, req)
def fetch_links(q, port):
while True:
s = socks.socksocket()
opener = urllib2.build_opener(SocksiPyHandler(socks.PROXY_TYPE_SOCKS4, "127.0.0.1", port, True))
index = q.get()
url = url_format.format(index)
url = 'http://www.datamungeblog.com/2013/11/anonymous-web-scraping.html'
h = opener.open(url)
data = h.read()
code = h.getcode()
print len(data)
print code
print"----------"
q.task_done()
num_workers = 1
base_port = 9050
num_urls = 1000
workers = []
url_format = 'http://www.imdb.com/user/ur{0}/ratings'
for i in range(num_workers):
new_port = base_port + i
worker = Thread(target=fetch_links, args=(q, new_port))
worker.setDaemon = True
worker.start()
q = Queue(maxsize=0)
for x in range(1000):
q.put(x)
q.join()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment