通过 TOR 使用节点的 HTTP 请求问题

Issue with HTTP request using node through TOR

我对节点和 TOR 都比较陌生。我正在尝试通过 TOR 使用节点应用程序发送请求。我使用 socks5-HTTP-client 设置了一个基本应用程序。此外,TOR 已安装(sudo port install tor)并且我 运行 服务器使用 tor..

执行应用程序,节点给我以下错误

Error: SOCKS connection failed. General SOCKS server failure.
    at Socket.<anonymous> (/Users/MyName/node_modules/socks5-client/lib/Socket.js:199:12)
    at Socket.g (events.js:260:16)
    at emitOne (events.js:77:13)
    at Socket.emit (events.js:169:7)
    at readableAddChunk (_stream_readable.js:146:16)
    at Socket.Readable.push (_stream_readable.js:110:10)
    at TCP.onread (net.js:523:20)

TOR 服务器向我报告以下内容:

[warn] Rejecting SOCKS request for anonymous connection to private address [scrubbed].

我找到的话题here does not seem to apply to this case. Also, this earlier article does not answer my question. Neither can I find any difference between the example socks5 模块的开发者和我的案例。

我不确定这是我的节点配置问题还是我的 TOR 配置问题。

下面是JS代码

var shttp = require('socks5-http-client');
var config = 
        { url: 'http://whatismyipaddress.com/', // I'd like to see a different IP on every request, that should be the end result, correct?
      socksHost: '127.0.0.1',
        socksPort: 9050
    }
shttp.get(config, function(res) {
    res.setEncoding('utf8');
    res.on('readable', function() {
        console.log(res.read());
    });
});

此外,在我的 torrc.sample 配置文件中,我确保设置了以下内容:

SOCKSPort 127.0.0.1:9050 

此外,我的 SOCKSPolicy 设置如下:

SOCKSPolicy accept 192.168.0.0/16
SOCKSPolicy accept6 FC00::/7
SOCKSPolicy reject *

尝试时,我的内部 IP 地址是 192.168.0.11,我觉得没问题。

如有任何帮助,我们将不胜感激!

您收到该错误是因为 URL 未正确传递给请求,因此它试图向 localhost 而不是您要访问的站点发出 SOCKS 请求。

URL使用url.parse解析。

尝试将您的代码更改为:

var shttp = require('socks5-http-client');
var url = require('url');
var config = url.parse('http://whatismyipaddress.com/');
config.socksHost = '127.0.0.1';
config.socksPort = 9050;

shttp.get(config, function(res) {
    res.setEncoding('utf8');
    res.on('readable', function() {
        console.log(res.read());
    });
});

此外,似乎 whatismyipaddress.com 可能阻止了 Tor,因为我没有收到他们的回复。试试 ipchicken.com 或其他网站。您可能需要设置 User-Agent header 才能让以前的站点回复,但此代码更改确实有效。