创建10个Tor电路实例的有效方法

时间:2014-08-11 21:07:11

标签: python sockets ssl connection

我想要做的是创建一个快速的方法,我可以构建10个电路,跳跃将始终是相同的,但我需要他们有一个新的袜子连接。 (Tor中的电路就像一个独特的连接。)

我的标准代码是:

circ_to_ip= TorCircuit(ssl_sock)
create_circuits(circ_to_ip, hops_in_circ)

这会创建一个名为circ_to_ip的单个电路,然后我可以创建一个电路,circ_to_ip`创建一个新的袜子连接?

我尝试了以下代码:

n = 1
while n < 10:

    n= TorCircuit(ssl_sock)
    create_circuits(n, hops_in_circ)
    print "circuit",n 
    n = n + 1 
sys.exit(0)

但是,当n被分配TorCircuit时,它会成为实例而不是int,因此会失败。

我如何创建10个电路,我原来的计划只是创建10个不同的名称来做到这一点但不仅这不起作用我还觉得有更好的方法吗?

如果需要,TorCircuit类在下面

TOR_CIRCID_COUNTER = 1
class TorCircuit():
    def __init__(self, sock):
        global TOR_CIRCID_COUNTER
        self.hops = []
        self.circId = TOR_CIRCID_COUNTER
        TOR_CIRCID_COUNTER+=1
        self.socket = sock
        self.tempX = 0
        self.packetSendCount = 0
        self.cookie = []

感谢:)

1 个答案:

答案 0 :(得分:2)

您的问题是您目前正在使用新电路覆盖您的循环计数器(n)。

您要做的是将这些电路存储在list中。此外,您可能希望使用for循环与range而不是while循环:

storage = [] # Empty list to store all the circuits
for n in range(10):
    circuit = TorCircuit(ssl_sock)
    create_circuits(circuit, hops_in_circ)
    print "circuit", circuit
    storage.append(circuit) # Add the circuit to the list