30

Torを介してNodeJSで一連のHTTPリクエストを実行することを計画しています。
TorはSOCKS5を使用しているので、NodeJSでHTTPリクエストをプロキシする方法を探しました。
作業を行うために、デフォルトの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);
  });
});

しかし、それはうまくいきませんでした。
それで、何か提案はありますか?

4

6 に答える 6

31

これを行うのに役立つ2つのモジュールを公開しました:socks5- http -clientsocks5- 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);
    });
});
于 2013-03-05T01:33:44.493 に答える
12

私は古い質問に答えていることを知っていますが、Node.jsでsock4とsock5プロキシを使用する方法について、この質問に利用できるより良い解決策があります。簡単にするために、request-promiseモジュールを使用しますが、barerequestモジュールを使用することもできます。

要件:socks-proxy-agentrequest-promise

例:

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)  }
于 2018-02-17T12:35:29.417 に答える
2

完全な答えではありませんが、これら2つのモジュールに注目することをお勧めします。

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

https://github.com/Ayms/node-botにサポートが追加されています。

私は彼に、これがいつ完了すると予想しているかを尋ねる電子メールを送信しました。その情報でこの投稿をすぐに更新します。

于 2012-08-14T20:32:26.237 に答える
1

私は同じ問題を抱えていて、ノードとTORの間のプロキシとしてポリポを使用しました

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

mac(osx with 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);   

        });
于 2016-09-14T09:25:09.980 に答える
1

* nixマシンを使用している場合は、tsocksを使用できます。プロセス全体を「ソックス化」するため、プロキシをまったくサポートしていないものにも使用できます。この記事にはいくつかの素晴らしい例があります

基本的にそれはするのと同じくらい簡単tsocks node myscript.jsです。動作するかどうかはわかりませんtsocks npm startが、試してみることができます(npmはコードをサブプロセスとして開始します)

必要なのは、最初にセットアップすることだけです(にserver = 127.0.0.1置くetc/tsocks.conf

于 2018-07-17T07:40:10.127 に答える
0

ヨはポリープを試してみるべきです、それは私のために働きます。 http://ccm.net/faq/805-installing-an-easy-http-proxy-cache-polipo

于 2015-07-22T05:35:25.340 に答える