在 stem.process.launch_tor_with_config 我们如何指定 Tor 使用的电路?
1 回答
在 config dict 中launch_tor_with_config()
,您可以指定要使用/排除的入口和出口节点,以及排除在电路中使用的特定继电器(假设StrictNodes
== 1)。但是没有办法从那里的配置中定义要使用的特定电路。
您可以使用库中的extend_circuit()函数stem.Controller
创建具有指定路径的电路,列出您希望电路使用的继电器指纹。
要定义您自己的电路并确保 Tor 不会自动替换它们:
(1)在您使用的配置中launch_tor_with_config()
,将 NewCircuitPeriod 和 MaxCircuitDirtiness 设置为非常高的值,这样电路就不会自动销毁。默认情况下,它们被标记为脏,并且在首次使用后 600 秒(10 分钟)内不用于新连接。这意味着您的自定义电路可能会在 10 分钟后自动更换,除非您告诉 Tor 不要这样做。的最大值为MaxCircuitDirtiness
30 天。配置选项MaxCircuitDirtiness
以秒为单位指定,所以这将是60⋅60⋅24⋅30 = 2592000
秒。如果您的应用程序需要连续运行超过 30 天,您将不得不每个月左右手动销毁/创建新电路......
(2)创建所需的电路extend_circuit()
。如文档中所述,您基本上只需提供继电器指纹列表来定义您想要的电路路径。例如:
controller.extend_circuit('0', ['718BCEA286B531757ACAFF93AE04910EA73DE617',
'30BAB8EE7606CBD12F3CC269AE976E0153E7A58D',
'2765D8A8C4BBA3F89585A9FFE0E8575615880BEB'])
...第一个参数'0'
告诉它使用列表中指定的路径创建一个新电路。
(3)使用Stem.controller.close_circuit()关闭默认创建的所有其他电路
如果您执行上述操作,则应该存在的唯一电路是具有您创建的路径的电路,并且它们不会被标记为脏并在 30 天内被替换。