Python 创建10个Tor回路实例的有效方法
我想做的是创建一个快速的方法,我可以建立10个电路,跳数将始终是相同的,但我需要他们有一个新的sock连接。(Tor中的电路就像一个独特的连接) 我的标准代码是:Python 创建10个Tor回路实例的有效方法,python,sockets,ssl,connection,Python,Sockets,Ssl,Connection,我想做的是创建一个快速的方法,我可以建立10个电路,跳数将始终是相同的,但我需要他们有一个新的sock连接。(Tor中的电路就像一个独特的连接) 我的标准代码是: circ_to_ip= TorCircuit(ssl_sock) create_circuits(circ_to_ip, hops_in_circ) 这将创建一个名为circ\u to\u ip的电路,然后我可以通过它创建一个电路,circ\u to\u ip`创建一个新的sock连接 我尝试了下面的代码: n = 1 while
circ_to_ip= TorCircuit(ssl_sock)
create_circuits(circ_to_ip, hops_in_circ)
这将创建一个名为circ\u to\u ip
的电路,然后我可以通过它创建一个电路,circ\u to\u ip`创建一个新的sock连接
我尝试了下面的代码:
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
)
相反,您要做的是将这些电路存储在存储库中。此外,您可能希望使用for
循环,而不是while
循环:
storage=[]#存储所有电路的空列表
对于范围(10)内的n:
电路=TorCircuit(ssl_sock)
创建回路(回路、跃点回路)
打印“电路”,电路
存储。附加(电路)#将电路添加到列表中
你考虑过一个新的吗?!是的,但是这是最有效的方法吗?这个例子是10,但是大小会动态地是的,好的,列表可以在长度上变化,你可能想考虑将创建代码打包在一个函数中;然后你的循环只调用该函数10次,并将结果累加……在这一点上,将其转换为一行列表理解是很简单的。此外,作为一般提示:当你遇到“当n被赋值为TorCircuit时,它将成为一个实例而不是int,因此失败”这样的问题时,最简单的答案是:“不要这样做”。只要对循环计数器int使用不同的变量名-n
,对TorCircuit
使用不同的变量名-circuit
,问题就解决了。
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 = []