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

时间:2019-04-24 15:34:18

标签: python tor

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

TestClass2

现在,我想对此多线程以提高速度,因为每个tor连接都需要花费一定的时间才能加载。

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

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:2)

了解有关运行多个单独的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

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

要启动它们,请使用:

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'