NodeJS中配置請求代理服務器


先來說說場景,之前我寫過一個小爬蟲,node寫的,一直都是當做玩具來用的。某天不知道誰在我的接口,導致被拉黑了。
大佬讓我換個機器重新裝一下,但是因為我的里面用到了一個圖片處理庫 sharp 裝起來很煩,然后就研究研究能不能搞個代理服務器。

大體是如上圖,用戶的請求最后都會通過我的服務器去請求對方服務器,這就導致頻率一高就被封。
那么我可以請求代理服務器,甚至是做一個代理池,再把請求平均開。

既然方案定下來了,那么我們就要開始測試了。先找找自己怎么做,然后看看有沒有現成的服務。

 

代理服務器

squid

squid 是應用層的代理服務軟件,它可以提供緩存加速、應用層過濾的功能。
我的服務器就可以理解為客戶機,通過代理服務器請求對方服務器。可以達到兩個目的

 

緩存一部分請求,防止同一地址,短時間內大量請求。

隱藏客戶機ip

 

阿布雲

阿布雲就是一個做代理的服務提供商,HTTP隧道可以讓每個請求從一個隨機 IP 轉發(秒級5個,最高200個,超過會429)。

 

Node中如何配置代理服務器

axios

使用axios的話,Node中支持 proxy 參數,參照文檔完成即可。

const axios = require('axios'); // 要訪問的目標頁面 var targetUrl = "https://www.lilnong.top/cors/sf"; // 配置代理服務器信息 var proxy = { host: "8.8.8.8", //代理服務器地址 port: 80,//端口 auth: { // auth認證信息,阿布雲那邊有,squid 的話不需要 username: '',password: '' } }; // https://github.com/axios/axios#request-config axios.get(targetUrl,{proxy:proxy}) .then((response) => console.log(response.data)) .catch((error) => console.log(error))

axios 異常情況

axios配置代理服務器后無法請求https地址如何解決?

首先我們先確定兩種情況

 

http 可以正常請求
https 返回501

 

這個問題是因為axios支持導致的,有兩個解決辦法。

 

使用 axios-https-proxy-fix 版本來代替 axios。

 

使用 tunnel 隧道來處理。

 axios('https://www.lilnong.top/cors/sf2',{ proxy: false, httpsAgent: tunnel.httpsOverHttp({proxy:{ host: '8.8.8.8',//代理服務器域名或者ip port: 80 //代理服務器端口 }}) }) .then(v=>console.log(jsON.stringify(v.data))) .catch(v=>console.log(v.message))

 

 

request

如果我們使用的不是 axios,而且 request 庫的話,也是可以的。

request({
    url:'https://www.lilnong.top/cors/sf3', proxy: 'http://8.8.8.8:80'//代理服務器地址 // "http://" + proxyUser + ":" + proxyPass + "@" + proxyHost + ":" + proxyPort; }, function (error, response, body) { console.log('body:', body); });

request 異常情況

npm install request 裝不上

request has been deprecated, see https://github.com/request/request/issues/3142

因為 request 不會在開發新的功能了,不推薦再使用了。
也因為用的人實在太多了,需要考慮的兼容太多,所以整個庫轉為了維護。

這個時候我們可以試試用 cnpm install request 來裝

資源搜索網站大全https://55wd.com 廣州品牌設計公司http://www.maiqicn.com

其他測試請求代理服務器的方法

curl

使用 curl 我們可以在服務器上很快的看到代理服務器是否好使。

curl -x "http://8.8.8.8:80" https://www.lilnong.top/cors/sf4

-x 是設置代理服務器地址, x 是小寫哦。別寫錯,大寫的是設置請求方式 -X POST。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM