美文网首页
NodeJS中配置请求代理服务器

NodeJS中配置请求代理服务器

作者: 茶艺瑶 | 来源:发表于2020-03-14 11:23 被阅读0次

文章好久都没更新,最近在家办公,超级忙。
准备更新更新我最近遇到的问题,bug之类的。

先来说说场景,之前我写过一个小爬虫,node写的,一直都是当做玩具来用的。
某天不知道谁在我的接口,导致被拉黑了。
大佬让我换个机器重新装一下,但是因为我的里面用到了一个图片处理库 sharp 装起来很烦,然后就研究研究能不能搞个代理服务器。

image.png

大体是如上图,用户的请求最后都会通过我的服务器去请求对方服务器,这就导致频率一高就被封。
那么我可以请求代理服务器,甚至是做一个代理池,再把请求平均开。

既然方案定下来了,那么我们就要开始测试了。先找找自己怎么做,然后看看有没有现成的服务。

代理服务器

squid 是应用层的代理服务软件,它可以提供缓存加速、应用层过滤的功能。
我的服务器就可以理解为客户机,通过代理服务器请求对方服务器。可以达到两个目的

  1. 缓存一部分请求,防止同一地址,短时间内大量请求。
  2. 隐藏客户机ip
image.png

阿布云

阿布云就是一个做代理的服务提供商,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地址如何解决?

首先我们先确定两种情况

  1. http 可以正常请求
  2. https 返回501

这个问题是因为axios支持导致的,有两个解决办法。

  1. 使用 axios-https-proxy-fix 版本来代替 axios。
    https://www.npmjs.com/package...

  2. 使用 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 来装

其他测试请求代理服务器的方法

curl

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

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

-x 是设置代理服务器地址, x 是小写哦。别写错,大写的是设置请求方式 -X POST

相关文章

  • NodeJS中配置请求代理服务器

    文章好久都没更新,最近在家办公,超级忙。准备更新更新我最近遇到的问题,bug之类的。 先来说说场景,之前我写过一个...

  • anyproxy生成rootCA根证书

    前言 AnyProxy是一个基于NodeJS的,可供插件配置的HTTP/HTTPS代理服务器。环境:node.js...

  • vue项目配置代理服务器中转请求

    在 vue 推崇的插件 axios 中 ,并没有 jsonp 功能, 因此可以配置一个代理服务器中转请求,如下...

  • jmeter_教程-02.03-配置元件

     配置元件维护Sampler需要的配置信息,配置元件并不发送请求(除了 HTTP代理服务器例外),并根据实际的需...

  • NodeJS 请求转发配置

    43.1 不是跨域的跨域[http://vhr.javaboy.org/2020/0323/vhr-43#431-...

  • 常用脚本

    *.nginx转发websocket请求配置方式 代理服务器就可以转发224服务器的推送数据了。 *.centos...

  • NodeJS获取GET和POST请求

    NodeJS获取GET请求 使用NodeJS获取GET请求,主要是通过使用NodeJS内置的querystring...

  • urllib笔记

    ProxyHandler处理器(代理): 代理的原理:在请求目的网站之前,先请求代理服务器,然后让代理服务器去请求...

  • WEB服务器加速机制

    Web缓存:由代理服务器满足客户端的请求 1.代理服务器 客户端发送所有的http请求到代理服务器。代理服务器保存...

  • Jenkins部署Vue到Nginx

    1.安装NodeJS和Publish Over SSH插件 2.配置NodeJS得到版本: 3.在系统设置中配置远...

网友评论

      本文标题:NodeJS中配置请求代理服务器

      本文链接:https://www.haomeiwen.com/subject/neomshtx.html