nodejs如何通过goagent(代理服务器)发送请求

jopen 9年前

介绍了nodejs如何通过goagent(代理服务器)发送请求的应用场景,分析了实现的方法和具体的代码,同时还介绍了nodejs中http模块的get方法,通过简单的例子来实现效果。    在我们平时用nodejs编写网络请求过程中,会遇到一些不能直接访问的请求,比如一些国外网站的请求或者说是一些被过滤掉的网站,这个时候我们首先想到的是代理服务器(比如goagent)。
    用代理服务器是没有错的,在浏览器中使用代理服务器只需要设置一下就可以了,那么在nodejs程序中则只需要改变一下请求的参数即可。
    说到代理服务器,用得比较多的是一些代理软件,比如自由门、goagent等,还有一些网站是提供代理服务的,那么我觉得最稳定的免费代理服务器的应该是goagent了,这个也是很多人都在使用的,所以这里就以gogent作为例子来讲解。
    本例中用到了gogent,代理IP为:127.0.0.1,端口为:8087(这些都是默认的),如果没有goagent,其他的代理服务器也是同样的原理,就是提供了一个IP和端口。
    本例中讲到的是http请求,其他的https socket也是类似的原理,因为http比较简单,所以先从这个开始。
    那么先从http的请求开始,首先用到的是http模块,然后再用到http.get方法,通过http.get方法完成请求,得到需要的数据。

    http.get需要到的参数主要有host port path,下面是一个简单的请求百度的例子:

var http = require('http')   ,req   ,opt={     host:'www.baidu.com'    ,port:80    ,path:'/'   }  ;    req = http.get(opt,function(res){    console.log(res.headers);  });

    这就是一个简单的请求,上面的程序就是一个直接的请求,那么使用代理请求只需要改一下host  port path的配置就可以了。host 改为代理服务器的IP,port改为代理服务器的端口,path则为真实的请求url,这样这个请求就会先去请求代理服务器,代理服务器根据path来判断真实的请求,然后代理服务器进行请求,得到数据后返回给程序。具体代码如下:

/*   在nodejs中如何使用goAgent发送请求  */  var http = require('http')   ,req   ,opt={     host:'127.0.0.1'//代理服务器的IP    ,port:8087//代理服务器的端口    ,path:'http://www.baidu.com'//真实请求的url   }  ;    req = http.get(opt,function(res){    console.log(res.headers);  });

    控制台看到的结果:

nodejs如何通过goagent(代理服务器)发送请求

    gogent中看到的结果:

nodejs如何通过goagent(代理服务器)发送请求

    很明显看到了goagent发送了请求。
    nodejs通过goagent(代理服务器)发送请求就是这样,很简单的一个例子,希望给有需要的朋友提供一些帮助,特别是像我这样的菜鸟!

原文地址:http://www.subying.com/archives/75.html