Выполнение 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);
});
});
Но это не сработало.
Итак, любые предложения?
Ответы
Ответ 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.
Я отправил ему электронное письмо с запросом, когда он ожидал, что оно будет полным, вскоре опубликует эту запись с этой информацией.
Ответ 3
Йо надо попробовать с полипо, это работает для меня;
http://ccm.net/faq/805-installing-an-easy-http-proxy-cache-polipo
Ответ 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);
});