Python 如何更改tor流程';干细胞终点?

Python 如何更改tor流程';干细胞终点?,python,tor,Python,Tor,我正在使用stem控制使用stem.process.launch\u-tor\u和\u-config创建的tor节点。我还创建了一个stem.control.Controller,它在上述进程的控制端口上运行 如何更改退出节点?我查看了stem.controller.controller.new_circuit,但这似乎改变了中间节点,保留了端点 有人知道怎么做吗 谢谢 编辑: 所以我想我可能误解了一些基本的东西,但我似乎无法理解它。我尝试调用Controller.get_circuits()并

我正在使用
stem
控制使用
stem.process.launch\u-tor\u和\u-config
创建的tor节点。我还创建了一个
stem.control.Controller
,它在上述进程的控制端口上运行

如何更改退出节点?我查看了
stem.controller.controller.new_circuit
,但这似乎改变了中间节点,保留了端点

有人知道怎么做吗

谢谢

编辑:

所以我想我可能误解了一些基本的东西,但我似乎无法理解它。我尝试调用
Controller.get_circuits()
并找到了
CircuitEvent
对象的列表。这是否意味着一个进程可以处理多个电路?如果是,我如何选择一个供使用

注意,我通过Privoxy将HTTP请求定向到,Privoxy又将其转发到tor进程的SOCKS端口

编辑2:

我找到了一些有效的方法,但我不知道它是如何工作的,这让我很担心。我很乐意为任何能够回答以下问题的人提供答案:

  • 解释为什么我的方法有效
  • 展示更好的方法,并解释其工作原理
  • 以下是我所做的:

    for circuit in controller.get_circuits():
        controller.close_circuit(circuit.id)
    

    就在那里。外部IP发生了变化,所以我知道我做了一些事情,但如果我确切知道是什么,那就见鬼了。

    您有几个选项可以使用特定的出口

    • 在TORC中设置ExitNodes属性。这在……中得到了举例说明

    • 在当前电路之一上调用extend_circuit(),将其扩展到所需的端点

    如果你想问的问题真的是“我如何获得一个新的IP地址”,那么这是一个我们更不愿意回答的问题。一部分是因为它主要用于规避禁令或搜索引擎优化,另一部分是因为重复创建电路会给Tor网络带来高负载

    至于为什么在调用close_circuit()时您的IP似乎会发生变化,那是因为Tor需要为您的以下请求重新创建一个新的电路。不能保证IP是新的,这样做需要相当多的流量来通过三个新的跃点来伸缩连接

    我不经常使用StackOverflow,所以如果您对针对Tor编写脚本有进一步的疑问,那么我建议使用Tor dev@email列表


    干杯-达米安(斯特姆的作者)

    首先,谢谢你的回答。其次,请确保我没有滥用TOR网络。事实上,我的目标是对端点IP进行一些控制,但我这样做(我认为)是一个很好的理由。我正在尝试使用各种IP运行TOR进程池,以调查TOR网络的一些属性。换句话说,我是黑客(在建设性意义上)。我希望这没问题!考虑到这一点,有没有办法保证对端点IP进行更改?很高兴听到这个消息!如果您只是在寻找一组不同的出口继电器,那么最简单的选择可能是在atlas()中找到您想要使用的集合,然后调用create_circuit()通过它们创建一个回路。令人不快的是,您需要手动将流连接到电路,以确定“哪个流获得哪个IP”。有关此(),请参见附加流()。太好了!我会调查的。再次感谢你的帮助!