通过一个的NodeJS SOCKS5代理进行HTTP请求(Doing http requests t

2019-06-26 09:06发布

我计划做了一系列不过的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);
  });
});

但它没有工作。
那么,有什么建议?

Answer 1:

我刚刚发布了两个模块,应该帮助你做到这一点: 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);
    });
});


Answer 2:

我知道我回答一个老问题,但有这个问题,有关如何使用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)  }


Answer 3:

不是一个完整的答案,但你可能要保持你的眼睛这两个模块。

https://github.com/Ayms/node-Tor

支持被加入到: https://github.com/Ayms/node-bot 。

我给他发了一封电子邮件,要求时,他希望这是完整的,就会用该信息更新很快这个帖子。



Answer 4:

哟,应尽量在Polipo,对于我这种工作; http://ccm.net/faq/805-installing-an-easy-http-proxy-cache-polipo



Answer 5:

我有同样的问题,并使用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);   

        });


Answer 6:

如果你的* nix机器上,你可以使用的tsocks。 它将“socksify”的全过程,所以你可以使用它甚至对任何事情不支持代理的。 该文章有一些很好的例子

基本上,这是因为这样做容易tsocks node myscript.js 。 我不知道这是否与工作tsocks npm start ,但你可以试试看(NPM开始你的代码作为子)

所有你需要的是一些设置第一(把server = 127.0.0.1etc/tsocks.conf



文章来源: Doing http requests through a SOCKS5 proxy in NodeJS