通过TOR使用节点发出HTTP请求
我对节点和TOR都比较陌生。 我试图通过TOR使用节点应用程序发送请求。 我使用socks5-HTTP-clientbuild立了一个基本的应用程序。 此外,TOR安装(sudo端口安装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].
我在这里find的话题似乎并不适用于这种情况。 另外, 这篇早期文章不回答我的问题。 我也没有发现socks5模块的开发者和我的例子有什么区别。
我不确定这是否是我的configuration在节点或我的TORconfiguration的问题。
下面是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
configuration文件中,我确保设置了以下内容:
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
parsing。
尝试将您的代码更改为:
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
标题,以获得前一个站点回复,但此代码更改确实工作。