如果您已经安装了Tor,那么它应该可以作为代理服务器127.0.0.1:9050,您可以在requests等模块中使用它
在示例中,我使用门户 httpbin.org 来测试我的 IP
import requests
proxy = {
'http': 'socks5://localhost:9050',
'https': 'socks5://localhost:9050',
}
url = 'https://httpbin.org/get'
r = requests.get(url, proxies=proxy) # using TOR network
#print(r.text)
print(' Tor IP:', r.json()['origin'])
r = requests.get(url)
#print(r.text)
print('normal IP:', r.json()['origin'])
此刻它向我展示了:
Tor IP: 146.59.155.27
normal IP: 217.99.86.56
但这将使用几乎所有时间相同的Tor IP。
如果要更改IP,则必须重新启动Tor。
或者您必须在Tor 设置中配置ControlPort 和Password(在Linux 上的文件/etc/tor/torrc 中)
然后您可以通过使用套接字发送信号来更改Tor IP
import socket
s = socket.socket()
s.connect(('localhost', 9051))
s.send('AUTHENTICATE "your_passord"\r\nSIGNAL NEWNYM\r\n'.encode())
或者您可以为此使用模块stem
from stem import Signal
from stem.control import Controller
with Controller.from_port(port=9051) as controller:
controller.authenticate(password='your_password')
controller.signal(Signal.NEWNYM)
您可以在Stackoverflow 上找到许多更好地描述它的问题。
据我所知,发送信号后可能需要几秒钟才能获得新的Tor IP,因此您可能需要等待下一个请求。