我正在测试我的服务器中实现的 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上执行此操作?
任何帮助表示赞赏
了解运行多个单独的 Tor 进程的关键点是,每个进程都需要自行侦听ControlPort,SocksPort以便您的客户端可以通过每个单独的实例发出请求。
如果您使用 Stem,stem.process.launch_tor_with_config这将是启动多个 Tor 进程的推荐方法。通过使用此方法,您可以动态地将必要的配置选项传递给每个客户端,而无需创建单独的文件,并且您将可以对 Tor 实例进行更好的流程管理。
如果您想使用os,则需要为每个实例创建一个配置文件,并在启动时将其传递给 tor。
至少,torrc为要运行的每个实例创建一个配置文件,其中包含以下内容:
ControlPort 9800
SocksPort 9801
Run Code Online (Sandbox Code Playgroud)
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)
| 归档时间: |
|
| 查看次数: |
2311 次 |
| 最近记录: |