- 在 Dockerfile 中,将 Tor Proxy 的端口号更改为 9151,避免与本地 Tor 端口 9150 冲突:
RUN printf "SocksPort 0.0.0.0:9151\n" >> /etc/tor/torrc
- 在 docker-compose.yml 中添加环境变量,指定 docker Tor 使用的代理端口为 9151:
version: '3'
services:
tor:
image: dperson/torproxy
environment:
- tor_proxy_port=9151
- tor_socks_port=9050
- tor_control_port=9051
ports:
- "9050:9050"
- "9051:9051"
- "9151:9151"
- 在 Python 代码中,使用代理端口 9151 访问 docker 内的 Tor:
import socks
import socket
from stem import Signal
from stem.control import Controller
TOR_PROXY = 'localhost'
TOR_PROXY_PORT = 9151 # 修改为 9151
def renew_tor_identity():
with Controller.from_port(port=9051) as controller:
controller.authenticate(password='password')
controller.signal(Signal.NEWNYM)
def test_connection():
socks.set_default_proxy(socks.SOCKS5, TOR_PROXY, TOR_PROXY_PORT) # 修改为 9151
socket.socket = socks.socksocket
try:
response = requests.get('http://checkip.amazonaws.com/')
print(response.text.strip())
except Exception as e:
print(e)