介绍了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); });
控制台看到的结果:
gogent中看到的结果: