tor.exe 的多个实例,每个实例都通过 python 拥有自己的身份

Multiple instances of tor.exe, each with own identity via python

我正在测试在我的服务器中实现的我自己的 ddos​​ 保护功能(这是必要的)。目前我有一个糟糕的循环来发出多个 tor 请求,每个请求都有自己的身份。

os.system("taskkill /f /im tor.exe")
os.startfile("C:/Tor/Browser/TorBrowser/Tor/tor.exe")

session = requests.session()
session.proxies = {}
session.proxies['http'] = 'socks5h://localhost:9050'
session.proxies['https'] = 'socks5h://localhost:9050'

现在我想多线程处理它以获得更快的速度,因为每个 tor 连接都需要很长时间才能加载。

如果我 google 如何 运行 多个 tor 实例,我会从 tor 浏览器本身获取有关如何执行此操作的信息,而不是如何以编程方式执行此操作,有没有办法具体在 windows python3 上执行此操作?

感谢任何帮助

了解 运行 多个独立 Tor 进程的关键点是每个进程都需要自己监听 ControlPortSocksPort 以便您的客户可以发出请求通过每个单独的实例。

如果您使用 Stem,stem.process.launch_tor_with_config 将是启动多个 Tor 进程的推荐方式。通过使用此方法,您可以将必要的配置选项动态地传递给每个客户端,而无需创建单独的文件,并且您将对 Tor 实例进行更好的进程管理。

如果您想使用 os,您需要为每个实例创建一个配置文件,并在启动时将其传递给 tor。

至少,为您要 运行 的每个实例创建一个 torrc 配置文件,其中包含以下内容:

torrc.1

ControlPort 9800
SocksPort 9801

torrc.2

ControlPort 9802
SocksPort 9803

每个单独的客户端将连接到不同的 socks 端口以发出请求。

要启动它们,请使用:

os.system("C:/Tor/Browser/TorBrowser/Tor/tor.exe -f C:/path/to/torrc.1")
os.system("C:/Tor/Browser/TorBrowser/Tor/tor.exe -f C:/path/to/torrc.2")

然后为每个实例创建一个或多个客户端:

session1 = requests.session()
session1.proxies = {}
session1.proxies['http'] = 'socks5h://localhost:9801'
session1.proxies['https'] = 'socks5h://localhost:9801'

session2 = requests.session()
session2.proxies = {}
session2.proxies['http'] = 'socks5h://localhost:9803'
session2.proxies['https'] = 'socks5h://localhost:9803'