NodeJS中配置请求代理服务器
2020/3/14 14:01:29
本文主要是介绍NodeJS中配置请求代理服务器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章好久都没更新,最近在家办公,超级忙。
准备更新更新我最近遇到的问题,bug之类的。
先来说说场景,之前我写过一个小爬虫,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。
https://www.npmjs.com/package... -
使用
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
。
微信公众号:前端linong
这篇关于NodeJS中配置请求代理服务器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25前端大厂面试真题解析与实战攻略
- 2024-12-25如何准备前端面试:新手指南
- 2024-12-25前端面试题详解与实战攻略
- 2024-12-25前端面试真题详解与实战攻略
- 2024-12-252024前端大厂面试真题详解及备考指南
- 2024-12-252024前端面试必备指南:从零开始掌握前端面试技巧
- 2024-12-252024前端面试题详解与实战指南
- 2024-12-21动态面包屑教程:新手入门指南
- 2024-12-21动态主题处理教程:新手必读指南
- 2024-12-21富文本编辑器教程:新手入门指南