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

Bin*_*ols 4 python tor

我正在测试我的服务器中实现的 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'
Run Code Online (Sandbox Code Playgroud)

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

如果我搜索如何运行多个tor实例,我会得到有关如何从tor浏览器本身执行此操作的信息,而不是如何以编程方式执行此操作,有没有一种方法可以专门在windows python3上执行此操作?

任何帮助表示赞赏

dre*_*010 7

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

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

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

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

托尔克.1

ControlPort 9800
SocksPort 9801
Run Code Online (Sandbox Code Playgroud)

托尔克.2

ControlPort 9802
SocksPort 9803
Run Code Online (Sandbox Code Playgroud)

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

要启动它们,请使用:

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")
Run Code Online (Sandbox Code Playgroud)

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

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'
Run Code Online (Sandbox Code Playgroud)