Мне было очень трудно узнать, как получить заголовок x-proxymesh-ip с туннелированием http в nodeJS.
Я мог бы заставить этот код работать, чтобы получить этот заголовок.
Я бы лучше использовал модуль запросов NodeJS, но не смог получить заголовок x-proxymesh-ip из первого вызова 'CONNECT', этот код работает хорошо: я нашел его здесь
const request = require('request');
request({
url : 'http://www.google.com',
proxy : 'http://fr.proxymesh.com:31280'
tunnel : true
}, (err, res, body) => {
...
});
если вам не важно знать, что прокси-сервер использует ip ведьмы, это нормально, но если вам нужна эта информация, вам нужно сделать это, как показано ниже.
аутентификация не обязательна, если вы настроили авторизованныйСписки IP-адресов
, которые вам нужны, вы должны указать точки сайта в пути, а также в заголовке узла и после снова в методе get.
сразу после первого подключения вы можете получить x-заголовок proxymesh-ip
Если кто-то знает, как заставить это работать с модулем запроса, добро пожаловать
const http = require('http')
const https = require('https')
const username = 'username'
const password = 'password'
const auth = 'Basic ' + Buffer.from(username + ':' + password).toString('base64');
http.request({
host: 'fr.proxymesh.com', // IP address of proxy server
port: 31280, // port of proxy server
method: 'CONNECT',
path: 'api.ipify.org', // some destination,
headers: {
'Host' : "https://api.ipify.org",
'Proxy-Authorization': auth
},
}).on('connect', (res, socket) => {
if (res.statusCode === 200) { // connected to proxy server
//get the ip used by proxymesh here
console.log("IP : "+res.headers["x-proxymesh-ip"]);
https.get({
host: 'api.ipify.org',
socket: socket, // using a tunnel
agent: false // cannot use a default agent
path: '/' //put here the path ont the target site
}, (res) => {
let chunks = []
res.on('data', chunk => chunks.push(chunk));
res.on('end', () => {
console.log('DONE', Buffer.concat(chunks).toString('utf8'))
})
})
}
}).on('error', (err) => {
console.error('error', err)
}).end();