亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

NodeJS中配置請求代理服務(wù)器方式

 更新時(shí)間:2023年10月30日 09:15:23   作者:高先生的貓  
這篇文章主要介紹了NodeJS中配置請求代理服務(wù)器方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

NodeJS配置請求代理服務(wù)器

先來說說場景,之前我寫過一個(gè)小爬蟲,node寫的,一直都是當(dāng)做玩具來用的。

某天不知道誰在我的接口,導(dǎo)致被拉黑了。

大佬讓我換個(gè)機(jī)器重新裝一下,但是因?yàn)槲业睦锩嬗玫搅艘粋€(gè)圖片處理庫 sharp 裝起來很煩,然后就研究研究能不能搞個(gè)代理服務(wù)器。

大體是如上圖,用戶的請求最后都會(huì)通過我的服務(wù)器去請求對方服務(wù)器,這就導(dǎo)致頻率一高就被封。

那么我可以請求代理服務(wù)器,甚至是做一個(gè)代理池,再把請求平均開。

既然方案定下來了,那么我們就要開始測試了。

先找找自己怎么做,然后看看有沒有現(xiàn)成的服務(wù)。

代理服務(wù)器

squid

squid 是應(yīng)用層的代理服務(wù)軟件,它可以提供緩存加速、應(yīng)用層過濾的功能。

我的服務(wù)器就可以理解為客戶機(jī),通過代理服務(wù)器請求對方服務(wù)器??梢赃_(dá)到兩個(gè)目的

緩存一部分請求,防止同一地址,短時(shí)間內(nèi)大量請求。

隱藏客戶機(jī)ip

阿布云

阿布云就是一個(gè)做代理的服務(wù)提供商,HTTP隧道可以讓每個(gè)請求從一個(gè)隨機(jī) IP 轉(zhuǎn)發(fā)(秒級(jí)5個(gè),最高200個(gè),超過會(huì)429)。

Node中如何配置代理服務(wù)器

axios

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

const axios = require('axios');
// 要訪問的目標(biāo)頁面
var targetUrl = "https://www.lilnong.top/cors/sf";
// 配置代理服務(wù)器信息
var proxy = {
    host: "8.8.8.8", //代理服務(wù)器地址
    port: 80,//端口
    auth: { // auth認(rèn)證信息,阿布云那邊有,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配置代理服務(wù)器后無法請求https地址如何解決?

首先我們先確定兩種情況

  • http 可以正常請求
  • https 返回501

這個(gè)問題是因?yàn)閍xios支持導(dǎo)致的,有兩個(gè)解決辦法。

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

使用 tunnel 隧道來處理。

 axios('https://www.lilnong.top/cors/sf2',{
         proxy: false,
         httpsAgent: tunnel.httpsOverHttp({proxy:{
             host: '8.8.8.8',//代理服務(wù)器域名或者ip
             port: 80 //代理服務(wù)器端口
         }})
     })
     .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'//代理服務(wù)器地址 
    // "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

因?yàn)?request 不會(huì)在開發(fā)新的功能了,不推薦再使用了。

也因?yàn)橛玫娜藢?shí)在太多了,需要考慮的兼容太多,所以整個(gè)庫轉(zhuǎn)為了維護(hù)。

這個(gè)時(shí)候我們可以試試用 cnpm install request 來裝

其他測試請求代理服務(wù)器的方法

curl

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

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

-x 是設(shè)置代理服務(wù)器地址, x 是小寫哦。

別寫錯(cuò),大寫的是設(shè)置請求方式 -X POST。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Node.js引入U(xiǎn)IBootstrap的方法示例

    Node.js引入U(xiǎn)IBootstrap的方法示例

    這篇文章主要介紹了Node.js引入U(xiǎn)IBootstrap的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • Node.js與Sails redis組件的使用教程

    Node.js與Sails redis組件的使用教程

    這篇文章主要介紹了Node.js與Sails redis組件的使用教程,主要介紹幾個(gè)用法,為string,set,hash和list的使用。需要的朋友可以參考下
    2017-02-02
  • nodejs 中模擬實(shí)現(xiàn) emmiter 自定義事件

    nodejs 中模擬實(shí)現(xiàn) emmiter 自定義事件

    這篇文章主要介紹了Nodejs中自定義事件實(shí)例,比較簡單的一個(gè)例子,需要的朋友可以參考下。
    2016-02-02
  • 詳解nodeJS中讀寫文件方法的區(qū)別

    詳解nodeJS中讀寫文件方法的區(qū)別

    本篇文章主要介紹了詳解nodeJS中讀寫文件方法的區(qū)別,nodejs的fs模塊針對讀操作為我們提供了readFile,read, createReadStream三個(gè)方法,有興趣的可以了解一下。
    2017-03-03
  • node.js三個(gè)步驟實(shí)現(xiàn)一個(gè)服務(wù)器及Express包使用

    node.js三個(gè)步驟實(shí)現(xiàn)一個(gè)服務(wù)器及Express包使用

    這篇文章主要介紹了node.js三個(gè)步驟實(shí)現(xiàn)一個(gè)服務(wù)器及Express包使用,文章通過新建一個(gè)文件展開全文內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • 淺談HTTP 緩存的那些事兒

    淺談HTTP 緩存的那些事兒

    HTTP 緩存機(jī)制作為 Web 應(yīng)用性能優(yōu)化的重要手段,是想要成為前端架構(gòu)的必備技能。這篇文章主要介紹了淺談HTTP 緩存并用node實(shí)現(xiàn)緩存,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-10-10
  • Node.js學(xué)習(xí)教程之Module模塊

    Node.js學(xué)習(xí)教程之Module模塊

    這篇文章主要給大家介紹了關(guān)于Node.js學(xué)習(xí)教程之Module模塊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Node.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 使用node.js實(shí)現(xiàn)接口步驟詳細(xì)記錄

    使用node.js實(shí)現(xiàn)接口步驟詳細(xì)記錄

    這篇文章主要給大家介紹了關(guān)于使用node.js實(shí)現(xiàn)接口步驟的相關(guān)資料,對于剛開始不會(huì)node寫接口和調(diào)用接口,可以通過這個(gè)清晰的初步了解到整個(gè)過程,下面需要的朋友可以參考下
    2023-03-03
  • node.js用fs.rename強(qiáng)制重命名或移動(dòng)文件夾的方法

    node.js用fs.rename強(qiáng)制重命名或移動(dòng)文件夾的方法

    本篇文章主要介紹了node.js用fs.rename強(qiáng)制重命名或移動(dòng)文件夾的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • package.json的版本號(hào)更新優(yōu)化方法

    package.json的版本號(hào)更新優(yōu)化方法

    這篇文章主要為大家介紹了package.json的版本號(hào)更新優(yōu)化方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04

最新評論