Node.JS HTTP / HTTPS / etc запросы через прокси туннель - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть прокси-соединение «net», и мне нужно отправить запрос на несколько разных доменов и протоколов (http, https, ftp и т. Д.) С одним стабильным соединением с прокси-сервером.

var socket = net.connect(
    1111, // proxy port
    'xx.xx.xxx.xx' // proxy host
);

socket.on('connect', function(a) {
    console.log('--- connect', socket.remoteAddress);

    // connecting to https host
    socket.write(
        'CONNECT www.google.com:443 HTTP/1.1\r\n' +
        'Proxy-Connections: keep-alive\r\n' +
        'Host: www.google.com\r\n\r\n',
    function() {

        // send GET request and wait for response
        socket.write(
            'GET / HTTP/1.0\r\n' +
            'User-Agent: Node.js/0.6.6\r\n' +
            'Connection: keep-alive\r\n' +
            'Host: www.google.com\r\n\r\n',
            function(a) {
                return socket;
            }
        );

        /*
            another requests to different protocols/ports...
            socket.write(...)
        */

        return socket;
    });
});

socket.on('data', function(a) {
    console.log('--- data', a.toString());
});
socket.on('drain', function() {
    console.log('drain!');
});

socket.on('timeout', function() {
    console.log('timeout!');
});
socket.on('close', function() {
    console.log('Connection closed');
});
socket.on('end', function() {
    console.log('Connection end');
});

После исполнения у меня следующий результат:

--- connect xx.xx.xxx.xx
--- data HTTP/1.0 200 Connection established

Connection end
Connection closed

Существует только один ответ как "Соединение установлено", но я не могу получить ответ от запроса "GET". Соединение закрывается после получения ответа.

Где я не прав? Погуглил, но нашел только одно решение - создать разные соединения для http или других протоколов и для https, но мне нужно отправлять запросы только с одного стабильного соединения.

...