我希望能够通过我自己的vpn中的节点执行http.get请求,但似乎该函数将网站传递给dns而不是查看我的vpn。以下代码适用于谷歌作为主机。
http = require('http');
var host = "www.google.com";
var options = {host:host, port:80, path:'/'}
http.get( options, function( res ){
res.setEncoding('utf8');
res.on( 'data', function( chunk ){
console.log( chunk );
});
});
但是当我将主机更改为a_site_on_my_vpn.com时会抛出域名未找到错误,但是当我在firefox上键入a_site_on_my_vpn.com时,我可以加载该页面。我想我可以解决这个问题的一种方法是找出主机名的ip但有更简单的方法吗? :d
我解决了我自己的答案,但是为了回答后续问题,答案是肯定的,这里有一个片段,通过DNS ip查找,然后通过IP进行谷歌搜索。
var dns = require('dns');
var http = require('http');
dns.resolve4('www.google.com', function (err, addresses) {
if (err) throw err;
console.log('addresses: ' + JSON.stringify(addresses));
var options = {
host: addresses[0]
}
http.get(options, function(res){
console.log("Sending http request to google with options", options);
var htmlsize = 0;
res.on('data', function( chunk ){
htmlsize+=chunk.length;
});
res.on('end', function(){
console.log( "got html of lenght", htmlsize );
});
});
});
这是输出
addresses: ["74.125.224.82","74.125.224.81","74.125.224.84","74.125.224.80","74.125.224.83"]
Sending http request to google with options { host: '74.125.224.82' }
got html of lenght 33431
答案 0 :(得分:2)
http
确实解析了VPN中正确的地址,但我只是输入了一个小错误。