http.get通过vpn +节点

时间:2012-02-02 21:39:51

标签: http node.js get

我希望能够通过我自己的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

1 个答案:

答案 0 :(得分:2)

http确实解析了VPN中正确的地址,但我只是输入了一个小错误。