通过https站点使用nodeJS的Proxymesh

时间:2018-12-11 08:51:08

标签: node.js https proxy http-tunneling

我真的很难找出如何通过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();

0 个答案:

没有答案