Я создаю стабильное сокет-соединение к прокси серверу и мне нужно отправлять запросы на разные домены и протоколы (http, https, итд). Столкнулся с проблемой отправки запросов используя полученный сокет после соединение к прокси серверу:
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
Т.е., https соединение создается успешно, судя по ответу "HTTP/1.0 200 Connection established", но затем прокси соединение закрывается, не выдав ответа на GET запрос и остальные запросы, хотя указан Keep-Alive.
Где ошибка? Гугление привело к созданию разных соединений для https и для остальных протоколов, что не подходит для моей задачи, так как мне нужно отправлять запросы в контексте одного стабильного соединения к прокси серверу.
UPD:
Иногда получаю ошибку:
ssl3_get_record:wrong version number
Но когда пытаюсь указать протокол шифрования SSLv3_method, то получаю ошибку:
ssl3_methods is disabled