为什么我的某些.onion站点出现"SOCKS连接失败.规则集不允许连接"?

Roe*_*rew 6 tor socks node.js

我正在尝试使用Node和socks5-https-client.出于某种原因,某些Tor隐藏的service(.onion)站点返回时出现连接错误.

例如,连接到DuckDuckGo(3g2upl4pq6kufc4m.onion)可以工作并返回HTML.

但是,连接到The Pirate Bay(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.
    });
});
Run Code Online (Sandbox Code Playgroud)

该错误似乎是由0x02服务器响应的字段2中的值引起的.

Ank*_*nko 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编写了socks5-https-client代码库,并且依赖socks5-client 于这一行.它将基础SOCKS连接的错误代码转换为人类可读的消息.维基百科对SOCKS5错误代码的解释与此相符,但同样无益于模糊

我从5年前发现了一个相关的Tor bug报告,抱怨类似的错误来自同一类型的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
Run Code Online (Sandbox Code Playgroud)

他们的端口80(HTTP)回复:

$ torify tcping uj3wazyk5u4hnvtk.onion 80
uj3wazyk5u4hnvtk.onion port 80 open.
Run Code Online (Sandbox Code Playgroud)

因此,如果我使用socks5-http-client而不是socks5-http s -client ,则代码适用于我.

  • 这是一个救星。我有一个 Google oauth 登录需要使用 HTTP 的登录链接,而不是 HTTPS。情况很尴尬。 (2认同)