2

在 stem.process.launch_tor_with_config 我们如何指定 Tor 使用的电路?

4

1 回答 1

0

在 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 天内被替换。

于 2018-05-15T02:19:49.633 回答