我正在尝试使用Node和socks5-https-client。出于某种原因,某些Tor隐藏服务(.onion
)站点返回时出现连接错误。
例如,连接到DuckDuckGo(3g2upl4pq6kufc4m.onion
)可以正常工作并返回HTML。
但是,连接到海盗湾(uj3wazyk5u4hnvtk.onion
)或TORCH(xmh57jrzrnw6insl.onion
)会返回......
错误:SOCKS连接失败。规则集不允许连接。
这个错误是什么意思?我怎么能避免它?
以下是重现它的代码:
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
值引起的。
答案 0 :(得分:7)
您无法访问的服务器不支持HTTPS。换句话说,它们的端口443是关闭的。 Tor的错误信息无益。
如果您的安全需求允许,您可以通过回退到socks5-http-client来解决此问题。
您的代码在使用Tor 0.2.5.10,socks5-https-client 1.0.1,Node 0.12.0的64位Linux上获得了相同的结果。
grep
ped socks5-https-client
&#39}的错误代码库,并在依赖项socks5-client
on this line中受到了影响。它将基础SOCKS连接的错误代码转换为人类可读的消息。 Wikipedia's explanation of SOCKS5 error codes排除了这一点,但同样无益的模糊
我从5年前发现related Tor bug report抱怨类似的错误来自同一类型的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-http s -client,则您的代码适用于我。