2012-03-28 52 views
10

Tôi đang cố gắng điều khiển Tor bằng Python. Tôi đã đọc một vài câu hỏi khác được hỏi về chủ đề này trên stackoverflow nhưng không ai trong số họ trả lời câu hỏi này.Python - Kiểm soát Tor

Tôi đang tìm một phương pháp để có hình ảnh cung cấp cho bạn một 'nhận dạng mới', một địa chỉ IP mới, khi lệnh được chạy. Tôi đã googled xung quanh và tìm thấy các mô-đun TorCtl như một phương pháp để kiểm soát tor, nhưng không thể tìm thấy một cách để có được một bản sắc mới. Đây là những gì tôi có cho đến nay cho atleast kết nối với tor, nhưng không thể nhận được bất kỳ xa hơn.

from TorCtl import TorCtl 

conn = TorCtl.connect(controlAddr="127.0.0.1", controlPort=9051, passphrase="123") 

Bất kỳ trợ giúp nào được đánh giá cao, nếu có các mô-đun khác tốt hơn thì TorCtl cũng tuyệt vời! Cảm ơn bạn!

Trả lời

6

Vâng, ngoài may mắn, tôi đã tìm thấy một tập lệnh PHP đã thực hiện chính xác điều tôi muốn và với sự trợ giúp của việc chuyển đổi nó sang làm việc trong TorCtl. Đây là những gì nó trông giống như cho bất cứ ai khác cần nó trong tương lai!

from TorCtl import TorCtl 

conn = TorCtl.connect(controlAddr="127.0.0.1", controlPort=9051, passphrase="123") 

TorCtl.Connection.send_signal(conn, "NEWNYM") 
2

Bạn có thể sử dụng một mã số tương tự trong 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 

Bạn có thể kiểm tra this post for a mini-tutorial

1

Rõ ràng gói gốc hoạt động tốt hơn. Bạn có thể cài đặt tor trên máy tính của bạn và giữ cho nó chạy trong thiết bị đầu cuối. Sau đó chạy chương trình sau:

from stem import Signal 
from stem.control import Controller 

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

gốc là gói chính thức được phát triển bởi tor.org, và bạn có thể thấy họ documentation

Các vấn đề liên quan