Python - Controlling Tor

前端 未结 3 693
礼貌的吻别
礼貌的吻别 2020-12-29 12:41

I\'m attempting to control Tor with Python. I\'ve read a couple of the other questions asked about this subject on stackoverflow but none of them answer this question.

相关标签:
3条回答
  • 2020-12-29 12:55

    Apparently the stem package works better. You can install tor on your computer and keep it running in terminal. Then run the following program:

    from stem import Signal
    from stem.control import Controller
    
    with Controller.from_port(port = 9051) as controller:
      controller.authenticate()
      controller.signal(Signal.NEWNYM)
    

    stem is the official package developed by tor.org, and you can see their documentation

    0 讨论(0)
  • 2020-12-29 12:56

    You can use a similar code in python:

    def renewTorIdentity(self, passAuth):
        try:
            s = socket.socket()
            s.connect(('localhost', 9051))
            s.send('AUTHENTICATE "{0}"\r\n'.format(passAuth))
            resp = s.recv(1024)
    
            if resp.startswith('250'):
                s.send("signal NEWNYM\r\n")
                resp = s.recv(1024)
    
                if resp.startswith('250'):
                    print "Identity renewed"
                else:
                    print "response 2:", resp
    
            else:
                print "response 1:", resp
    
        except Exception as e:
            print "Can't renew identity: ", e 
    

    You can check this post for a mini-tutorial

    0 讨论(0)
  • 2020-12-29 12:57

    Well, out of luck I managed to find a PHP script that did the exact same thing I wanted, and with the help of that I converted it to work in TorCtl. This is what it looks like for anyone else needing it in the future!

    from TorCtl import TorCtl
    
    conn = TorCtl.connect(controlAddr="127.0.0.1", controlPort=9051, passphrase="123")
    
    TorCtl.Connection.send_signal(conn, "NEWNYM")
    
    0 讨论(0)
提交回复
热议问题