using tor as a SOCKS5 proxy with python urllib2 or mechanize

后端 未结 2 1657
你的背包
你的背包 2020-12-16 07:23

My goal is to use python\'s mechanize with a tor SOCKS proxy.

I am not using a GUI with the following Ubuntu version: Description: Ubuntu 12.04.1 LTS

相关标签:
2条回答
  • 2020-12-16 07:50

    The above solution didn't work for me. I am on Ubuntu 14.04. Whenever I try to run the above script it keeps throwing the following error.

    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "/usr/lib/python2.7/urllib2.py", line 127, in urlopen
      return _opener.open(url, data, timeout)
    File "/usr/lib/python2.7/urllib2.py", line 404, in open
      response = self._open(req, data)
    File "/usr/lib/python2.7/urllib2.py", line 422, in _open
      '_open', req)
    File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
      result = func(*args)
    File "/usr/lib/python2.7/urllib2.py", line 1214, in http_open
      return self.do_open(httplib.HTTPConnection, req)
    File "/usr/lib/python2.7/urllib2.py", line 1184, in do_open
      raise URLError(err)
    urllib2.URLError: <urlopen error ((1, 'general SOCKS server failure'),)>
    

    Checked if tor is running by using the nmap command.

    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.00026s latency).
    Not shown: 993 closed ports
    PORT     STATE SERVICE
    22/tcp   open  ssh
    139/tcp  open  netbios-ssn
    445/tcp  open  microsoft-ds
    631/tcp  open  ipp
    902/tcp  open  iss-realsecure
    3306/tcp open  mysql
    9050/tcp open  tor-socks
    

    Installing Vidalia solved this problem. Apparently, the socks proxy was not allowing the connection to pass through it. Hope this might help someone facing the same problem.

    0 讨论(0)
  • 2020-12-16 07:51

    See end of question.

    import socks
    import socket
    def create_connection(address, timeout=None, source_address=None):
        sock = socks.socksocket()
        sock.connect(address)
        return sock
    
    socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
    
    # patch the socket module
    socket.socket = socks.socksocket
    socket.create_connection = create_connection
    
    import urllib2
    
    print urllib2.urlopen('http://icanhazip.com').read()
    
    import mechanize
    from mechanize import Browser
    
    br = Browser()
    print br.open('http://icanhazip.com').read()
    
    0 讨论(0)
提交回复
热议问题