【发布时间】:2021-11-29 08:13:59
【问题描述】:
我有一个运行 tor 节点的 docker-compose 文件,还有一个简单的 Go 脚本,它尝试使用 torgo 连接到所述 tor 节点。
我运行 docker-compose,然后运行一个简单的 curl 命令来检查 SOCKS5 代理是否正常工作,一切都很好:
$ curl --socks5 127.0.0.1:9050 https://check.torproject.org/api/ip
{"IsTor":true,"IP":"185.83.214.69"}
但如果我运行 Go 脚本尝试连接端口 9051 以获取控制器实例,则每次尝试都会失败并出现错误 EOF。
我也尝试过通过telnet 连接并在那里收到错误:
$ telnet 127.0.0.1 9051
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
此时我已经尝试了许多不同的东西,现在想不起来的东西太多了,但包括不同的 docker 图像、安装我自己的 torrc 配置并启用身份验证和各种其他参数等。没有任何效果...
我错过了什么?如何连接到ControlPort?
docker-compose
version: "3.8"
services:
torproxy:
restart: always
image: dperson/torproxy:latest
ports:
- "9050:9050" # Tor proxy
- "9051:9051" # Tor control port
- "8118:8118" # Privoxy
main.go
package main
import (
"github.com/wybiral/torgo"
"log"
)
func main() {
addr := "127.0.0.1:9051"
c, err := torgo.NewController(addr)
if err != nil {
log.Fatalf("failed to create tor controller: %s", err)
}
log.Println(c)
}
【问题讨论】:
-
节点连接和设置网络路由需要时间。可能只是您需要实施重试策略,以便在放弃之前给它所需的时间。 github.com/dperson/torproxy#exposing-the-port
标签: docker go docker-compose tor