Я пытаюсь создать промежуточный прокси-сервер с основным рабочим процессом:
клиент -> Мой прокси -> другой прокси-сервис -> цель
И затем снова черезпо цепочке к клиенту.
Мне нужно получить запрос от кого-то, кто использует мой сервис в качестве 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 и просто ... перенаправить ее на другой внешний прокси-сервер, а затем отправить ответ через сокеты обратно клиенту