为什么我的某些 .onion 网站会得到 "SOCKS connection failed. Connection not allowed by ruleset"?
Why do I get "SOCKS connection failed. Connection not allowed by ruleset" for some .onion sites?
我正在试验 Node 和 socks5-https-client。出于某种原因,某些 Tor 隐藏服务 (.onion
) 站点 return 出现连接错误。
例如,连接到 DuckDuckGo (3g2upl4pq6kufc4m.onion
) 有效并且 returns HTML.
但是,连接到海盗湾 (uj3wazyk5u4hnvtk.onion
) 或 TORCH (xmh57jrzrnw6insl.onion
) returns...
Error: SOCKS connection failed. Connection not allowed by ruleset.
这个错误是什么意思?我怎样才能避免它?
这是重现它的代码:
var shttps = require('socks5-https-client');
shttps.get({
hostname: '3g2upl4pq6kufc4m.onion',
path: '',
socksHost: '127.0.0.1',
socksPort: 9150,
rejectUnauthorized: false
}, function(res) {
res.setEncoding('utf8');
res.on('readable', function() {
console.log(res.read()); // Log response to console.
});
});
错误似乎是由服务器响应的字段 2 中的 0x02
值引起的。
总结
您无法访问的服务器不支持 HTTPS。换句话说,他们的端口 443 是关闭的。 Tor 的错误消息没有帮助。
如果您的安全需求允许,您可以回退到 socks5-http-client 来解决此问题。
我采取的步骤得出结论
你的代码在 64 位 Linux 上使用 Tor 0.2.5.10、socks5-https-client 1.0.1、Node 0.12.0 得到了相同的结果。
我 grep
ped socks5-https-client
的代码库中的错误,并在依赖项中受到打击 socks5-client
on this line. It translates the underlying SOCKS connection's error code to a human-readable message. Wikipedia's explanation of SOCKS5 error codes 与之一致,但同样无益地含糊
我发现一个 related Tor bug report 5 年前抱怨类似的错误,来自相同类型的 SOCKS 连接。原来这个错误只是意味着服务器拒绝了你的连接。
为了确认,我 tcping
通过 Tor 在端口 443 (HTTPS) 上访问了 TPB。它不回复 TCP
SYN
,并且失败并出现同样令人困惑的错误:
$ torify tcping uj3wazyk5u4hnvtk.onion 443
[Mar 22 22:40:59] ERROR torsocks[18560]: Connection not allowed by ruleset (in socks5_recv_connect_reply() at socks5.c:520)
error: uj3wazyk5u4hnvtk.onion port 443: Software caused connection abort
虽然他们的端口 80 (HTTP) 回复:
$ torify tcping uj3wazyk5u4hnvtk.onion 80
uj3wazyk5u4hnvtk.onion port 80 open.
因此,如果我使用 socks5-http-client 而不是 socks5-https-client.
,您的代码对我有用
我正在试验 Node 和 socks5-https-client。出于某种原因,某些 Tor 隐藏服务 (.onion
) 站点 return 出现连接错误。
例如,连接到 DuckDuckGo (3g2upl4pq6kufc4m.onion
) 有效并且 returns HTML.
但是,连接到海盗湾 (uj3wazyk5u4hnvtk.onion
) 或 TORCH (xmh57jrzrnw6insl.onion
) returns...
Error: SOCKS connection failed. Connection not allowed by ruleset.
这个错误是什么意思?我怎样才能避免它?
这是重现它的代码:
var shttps = require('socks5-https-client');
shttps.get({
hostname: '3g2upl4pq6kufc4m.onion',
path: '',
socksHost: '127.0.0.1',
socksPort: 9150,
rejectUnauthorized: false
}, function(res) {
res.setEncoding('utf8');
res.on('readable', function() {
console.log(res.read()); // Log response to console.
});
});
错误似乎是由服务器响应的字段 2 中的 0x02
值引起的。
总结
您无法访问的服务器不支持 HTTPS。换句话说,他们的端口 443 是关闭的。 Tor 的错误消息没有帮助。
如果您的安全需求允许,您可以回退到 socks5-http-client 来解决此问题。
我采取的步骤得出结论
你的代码在 64 位 Linux 上使用 Tor 0.2.5.10、socks5-https-client 1.0.1、Node 0.12.0 得到了相同的结果。
我 grep
ped socks5-https-client
的代码库中的错误,并在依赖项中受到打击 socks5-client
on this line. It translates the underlying SOCKS connection's error code to a human-readable message. Wikipedia's explanation of SOCKS5 error codes 与之一致,但同样无益地含糊
我发现一个 related Tor bug report 5 年前抱怨类似的错误,来自相同类型的 SOCKS 连接。原来这个错误只是意味着服务器拒绝了你的连接。
为了确认,我 tcping
通过 Tor 在端口 443 (HTTPS) 上访问了 TPB。它不回复 TCP
SYN
,并且失败并出现同样令人困惑的错误:
$ torify tcping uj3wazyk5u4hnvtk.onion 443
[Mar 22 22:40:59] ERROR torsocks[18560]: Connection not allowed by ruleset (in socks5_recv_connect_reply() at socks5.c:520)
error: uj3wazyk5u4hnvtk.onion port 443: Software caused connection abort
虽然他们的端口 80 (HTTP) 回复:
$ torify tcping uj3wazyk5u4hnvtk.onion 80
uj3wazyk5u4hnvtk.onion port 80 open.
因此,如果我使用 socks5-http-client 而不是 socks5-https-client.
,您的代码对我有用