我计划做了一系列不过的NodeJS Tor的HTTP请求。
Tor的使用SOCKS5所以我出去,并寻找一种方式来proxify在HTTP的NodeJS请求。
我打算在默认http.request()函数来完成这项工作。
不过,我似乎无法找到一种方法,使用代理这一点。
有人建议我可以这样做:
var http = require("http");
var options = {
host: "localhost",
port: 9050,
path: "http://check.torproject.org",
method: 'GET',
headers: {
Host: "http://check.torproject.org",
}
};
var req = http.request(options, function(res) {
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
});
但它没有工作。
那么,有什么建议?
我刚刚发布了两个模块,应该帮助你做到这一点: socks5- HTTP -client和socks5- HTTPS -client 。
只要使用这些,而不是默认http
模块。 API是相同的。 例如:
require('socks5-http-client').request(options, function(res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
});
我知道我回答一个老问题,但有这个问题,有关如何使用SOCK4和SOCK5代理在Node.js的提供更好的解决方案 为了简便起见,我将使用请求承诺模块但是你也可以使用裸请求模块。
Requrement: 袜子代理代理 , 请求承诺
例:
async function main() {
var proxy = "socks4://1.2.3.4:35618"
var agent = new SocksProxyAgent(proxy);
var options = {
uri: 'http://targetUrl',
agent: agent,
headers: {
'User-Agent': 'Request-Promise'
}
}
try {
var responce = await rp(options)
} catch(err) {
console.log(err)
}
console.log(responce) }
不是一个完整的答案,但你可能要保持你的眼睛这两个模块。
https://github.com/Ayms/node-Tor
支持被加入到: https://github.com/Ayms/node-bot 。
我给他发了一封电子邮件,要求时,他希望这是完整的,就会用该信息更新很快这个帖子。
哟,应尽量在Polipo,对于我这种工作; http://ccm.net/faq/805-installing-an-easy-http-proxy-cache-polipo
我有同样的问题,并使用Polipo即可为节点和TOR之间代理
node (request) - polilp httproxy:8123 - polipo - tor (socks5:9050).
对于Mac(OSX与BREW ),它的工作是这样的:
brew install polipo tor
tor # start top
polipo socksParentProxy=localhost:9050 # start polipo
正与例如要求
var request = require('request');
var options = {'url':'https://check.torproject.org/', 'proxy':'http://localhost:8123'}
request(options,
function (error, response, body) {
if (error){
console.log(error);
return;
}
var usingTor = (body.indexOf('Congratulations. This browser is configured to use Tor.') !== -1);
expect(usingTor).to.equal(true);
});
如果你的* nix机器上,你可以使用的tsocks。 它将“socksify”的全过程,所以你可以使用它甚至对任何事情不支持代理的。 该文章有一些很好的例子
基本上,这是因为这样做容易tsocks node myscript.js
。 我不知道这是否与工作tsocks npm start
,但你可以试试看(NPM开始你的代码作为子)
所有你需要的是一些设置第一(把server = 127.0.0.1
到etc/tsocks.conf
)