我真的很难找出如何通过nodeJS中的http隧道获取x-proxymesh-ip标头。
我可以使这段代码被删除以获取该标头。
我最好使用NodeJS请求模块,但无法从第一个“ CONNECT”调用中获得x-proxymesh-ip标头,此代码运行良好: 我找到了here
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();