Подтвердить что ты не робот

Выполнение HTTP-запросов через прокси-сервер SOCKS5 в NodeJS

Я планирую сделать серию HTTP-запросов в NodeJS, хотя Tor.
Tor использует SOCKS5, поэтому я вышел и искал способ проксирования 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);
  });
});

Но это не сработало. Итак, любые предложения?

4b9b3361

Ответ 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);
    });
});

Ответ 2

Не полный ответ, но вы можете следить за этими двумя модулями.

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

Поддержка добавляется в: https://github.com/Ayms/node-bot.

Я отправил ему электронное письмо с запросом, когда он ожидал, что оно будет полным, вскоре опубликует эту запись с этой информацией.

Ответ 4

У меня была такая же проблема, и я использовал polipo как прокси-сервер между node и 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

Рабочий пример с request

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);   

        });