Tor.exe 的多个实例,每个实例都通过 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 连接都需要很长时间才能加载。

如果我用谷歌搜索如何运行多个 tor 实例,我会从 tor 浏览器本身中获取有关如何执行此操作的信息,而不是如何以编程方式执行此操作,有没有办法专门在 Windows python3 上执行此操作?

任何帮助表示赞赏

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

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

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

至少为要运行的每个实例创建一个torrc配置文件,如下所示:

托尔克.1

ControlPort 9800
SocksPort 9801

托尔克.2

ControlPort 9802
SocksPort 9803

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

要启动它们,请使用:

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'

首先,在终端中像这样安装茎

>>>pip install stem

将此代码写入文本文件中,并重命名该文件,如下所示 myfile.py 首先在文件开头包含 stem 和请求,并编写以下代码

import requests
import stem.process
x = 6
for i in range(1, x):
cp = str(10000+i)
sp = str(11000+i)

tp1 = stem.process.launch_tor_with_config(tor_cmd = 'C:\Users\<Tor Directory>\Browser\TorBrowser\Tor\tor.exe', config = {
'ControlPort': cp,
'SocksPort' : sp,
'DataDirectory': 'C:/<Any Path for data directories>/proxies/'+str(i)+'/',
'Log': [
'NOTICE stdout',
'ERR file C:/<Any Path for Error file>/tor_error_log.txt',
],
},
)
proxies = {
'http': 'socks5h://127.0.0.1:'+str(sp),
'https': 'socks5h://127.0.0.1:'+str(sp)
}
r1 = requests.get('http://ipinfo.io/json', proxies=proxies)
print('n')
print(r1.content)
print('n')

现在进入包含 myfile.py 的文件夹并运行命令提示符(cmd)或那里的任何终端,然后像这样启动文件。

>>>python myfile.py

这将在这些端口 11001、11002、11003、11004、11005 上启动 5 个 Tor 进程 您可以使用IP地址127.0.0.1和上述任何端口从任何程序访问Tor代理(SOCKS5)。

如果打开任务管理器,您将看到 5 个 Tor 进程正在运行,每个进程消耗 10-20MB 的 RAM

如果您在终端中运行 myfile.py 时遇到这样的错误,

can not bind listening port. working with config files left us in broken state. Dying

然后只需关闭 Tor 的所有进程并再次启动 myfile.py。 发生此错误是因为端口上已经运行了 Tor 进程。

要创建更多 Tor 进程,请从任务管理器关闭所有 Tor 实例,像这样更改文件开头变量 X 的值

x = any integer like 10,20,30,50

保存 myfile.py 并再次运行此文件。

干杯!

最新更新