在TOR中选择特定的退出节点(使用Python代码)

时间:2014-06-24 17:28:46

标签: python networking routing tor

我想在Python中编写一个简单的脚本,它将连接到TOR网络并选择我指定的某个国家/地区的退出节点。例如,我希望将所有传出的网络流量路由到 - 西班牙(通过TOR网络)。有没有办法实现这个目标?

谢谢, 汤姆。

2 个答案:

答案 0 :(得分:0)

好吧,我想我有一个答案,这不是我想要的,但它的效果也一样。

我可以在我的机器上安装一个以上的TOR继电器,并使用torrc文件中我想要的退出节点配置每个TOR继电器,如Robert Davey所述。在我的python脚本中,我可以创建一些进程并使用不同的中继连接每个进程 - 从而为我提供了一个不同的退出节点。可以在这里找到一个例子: https://tor.stackexchange.com/questions/327/how-may-i-run-multiple-tor-relay-instances-in-a-single-linux-machine

如果我想更改已经运行的继电器中的退出节点,我可以编辑相关TOR继电器的torrc文件,并使用词干python库使用SIGHUP信号更新它:

from stem import Signal
from stem.control import Controller

with Controller.from_port(port = 9051) as controller:
  controller.authenticate()
  controller.signal(Signal.HUP)

答案 1 :(得分:0)

您无需为每个中继编写torrc文件。您可以通过词干动态启动传递参数。例如:

import stem.process

tor_process = stem.process.launch_tor_with_config(
    tor_cmd = PATH_TO_TOR_LAUNCHER,
    config = {
        'SOCKSPort': str(SOCKS_PORT),
        'ControlPort': str(CTRL_PORT),
        'DataDirectory': DATA_DIR,
        'GeoIPFile': DATA_DIR + 'geoip',
        'GeoIPv6File': DATA_DIR + 'geoip6',
        'ExitNodes': '{es},{pt}'       # exiting through Spain or Portugal
        }
)

这些是Tor默认使用的地理位置数据库中的国家/地区代码:http://dev.maxmind.com/geoip/legacy/codes/iso3166/