it-swarm.com.de

HTTP-Anforderungen über einen SOCKS5-Proxy in NodeJS ausführen

Ich habe vor, eine Reihe von HTTP-Anforderungen in NodeJS über Tor auszuführen.
Tor verwendet SOCKS5, also ging ich raus und suchte nach einem Weg, um HTTP-Anfragen in NodeJS weiterzuleiten.
Ich plane die Standardfunktion http.request (), um die Arbeit zu erledigen.
Ich kann jedoch keinen Weg finden, einen Proxy damit zu verwenden.
Jemand schlug vor, ich könnte das tun:

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

Aber es hat nicht funktioniert.
Also irgendwelche Vorschläge?

26
Fredefl

Ich habe gerade zwei Module veröffentlicht, die Ihnen dabei helfen sollten: socks5 - http - client und socks5 - https - client .

Verwenden Sie einfach diese anstelle des Standardmoduls http. Die API ist gleich. Zum Beispiel:

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

Ich weiß, dass ich eine alte Frage beantworte, aber es gibt eine bessere Lösung für diese Frage, wie sock4 & sock5 proxy in Node.js verwendet wird. Der Einfachheit halber verwende ich das Request-Promise-Modul. Sie können jedoch auch das Bare-Request-Modul verwenden.

Anfrage: Socken-Proxy-Agent , Anfrage-Versprechen

Beispiel:

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)  }
6
Point Networks

Keine vollständige Antwort, aber Sie möchten vielleicht diese beiden Module im Auge behalten. 

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

Support wird hinzugefügt in: https://github.com/Ayms/node-bot .

Ich habe ihm eine E-Mail mit der Frage gesendet, wann er damit rechnet, dass dies abgeschlossen sein wird. Dieser Post wird demnächst mit diesen Informationen aktualisiert.

2
Hortinstein

Du solltest es mit polipo versuchen, das funktioniert für mich: Http://ccm.net/faq/805-installing-an-easy-http-proxy-cache-polipo

0
Tim

Ich hatte das gleiche Problem und verwendete polipo als Proxy zwischen Knoten und TOR

node (request) - polilp httproxy:8123 -  polipo - tor (socks5:9050).

Für Mac (osx mit brew ) hat es so funktioniert:

brew install polipo tor
tor # start top
polipo socksParentProxy=localhost:9050 # start polipo

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

        });
0
Simon Fakir

Wenn Sie sich auf einem * Nix-Computer befinden, können Sie TSocks verwenden. Dadurch wird der gesamte Prozess "socksifiziert", sodass Sie ihn auch für alles verwenden können, was keine Proxies unterstützt. Dieser Artikel hat einige großartige Beispiele

Im Grunde ist es so einfach wie tsocks node myscript.js. Ich bin nicht sicher, ob es mit tsocks npm start funktioniert, aber Sie könnten es versuchen (npm startet Ihren Code als Unterprozess).

Alles was Sie brauchen, ist zuerst ein Setup (setzen Sie server = 127.0.0.1 in etc/tsocks.conf).

0
Kamil Tomšík