nodejs如何通過goagent(代理服務器)發送請求
介紹了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中看到的結果:
很明顯看到了goagent發送了請求。
nodejs通過goagent(代理服務器)發送請求就是這樣,很簡單的一個例子,希望給有需要的朋友提供一些幫助,特別是像我這樣的菜鳥!
原文地址:http://www.subying.com/archives/75.html