Как переслать запрос прокси Https на другой прокси-сервер в Node - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь создать промежуточный прокси-сервер с основным рабочим процессом:

клиент -> Мой прокси -> другой прокси-сервис -> цель

И затем снова черезпо цепочке к клиенту.

Мне нужно получить запрос от кого-то, кто использует мой сервис в качестве URL-адреса прокси, внести изменения в свой запрос (незначительно) и переслать его в другой прокси-сервис.

IЯ пробовал использовать параметры res.redirect, но они работают только в обычном http, а не в https.Единственное соединение, которое я смог установить, это 'server.addListener (' connect ', function)' ', однако это не позволяет мне пересылать запрос и требует сокетов (о которых я действительно не знаю много).

Вот запрос, который я пытаюсь сделать:

request (
    {
        url: 'https://www.iplocation.net/find-ip-address',
        //url : 'http://example.org',
        followAllRedirects: true,
        proxy: 'http://localhost:7005',
        method: "post",
        headers: {
            'User-Agent': userAgent
        }
    }, function(err, res, body) {
        //console.log(err)
        console.log(res);           
    }
);

Вот моя серверная функция для обработки https:

server.addListener('connect', function (req, socket, bodyhead) {
  var hostPort = getHostPortFromString(req.url, 443);
  var hostDomain = hostPort[0];
  var port = parseInt(hostPort[1]);
  console.log("Proxying HTTPS request for:", hostDomain, port);
  console.log(req);

  var proxySocket = new net.Socket();
  proxySocket.connect(port, hostDomain, function () {
      proxySocket.write(bodyhead);
      socket.write("HTTP/" + req.httpVersion + " 200 Connection established\r\n\r\n");
    }
  );

  proxySocket.on('data', function (chunk) {
    socket.write(chunk);
  });

  proxySocket.on('end', function () {
    socket.end();
  });

  proxySocket.on('error', function () {
    socket.write("HTTP/" + req.httpVersion + " 500 Connection error\r\n\r\n");
    socket.end();
  });

  socket.on('data', function (chunk) {
    proxySocket.write(chunk);
  });

  socket.on('end', function () {
    proxySocket.end();
  });

  socket.on('error', function () {
    proxySocket.end();
  });

});

(скопировано из другого ответа stackoverflow).Я не могу понять, как взять входную переменную req и просто ... перенаправить ее на другой внешний прокси-сервер, а затем отправить ответ через сокеты обратно клиенту

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...