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