#node.js #sockets
#node.js #сокеты
Вопрос:
Есть пример использования туннеля HTTP CONNECT из node.js документация.
var options = {
port: 1337,
hostname: '127.0.0.1',
method: 'CONNECT',
path: 'www.google.com:80'
};
var req = http.request(options);
req.end();
req.on('connect', (res, socket, head) => {
console.log('got connected!');
// make a request over an HTTP tunnel
socket.write('GET / HTTP/1.1rn'
'Host: www.google.com:80rn'
'Connection: closern'
'rn');
socket.on('data', (chunk) => {
console.log(chunk.toString());
});
socket.on('end', () => {
proxy.close();
});
});
Есть ли способ использовать сокет с установленным туннелем с http-библиотекой вместо того, чтобы передавать тело http-запроса через сокет самостоятельно (через сокет.написать)?
Ответ №1:
Я не думаю, что обычная http
библиотека поддерживает прокси, поэтому вам придется реализовать это самостоятельно.
request
Пакет (построенный поверх http
) немного упростит задачу, хотя:
const request = require('request');
request({
url : 'http://www.google.com',
proxy : 'http://localhost:1337'
tunnel : true
}, (err, res, body) => {
...
});
Указав tunnel : true
, он также будет туннелировать обычные HTTP-запросы.