文章好久没更新了,最近一直在家办公,超级忙。准备更新更新我最近遇到的问题,bug之类的。先说现场吧。之前写过一个小爬虫,node写的,一直当玩具玩。有一天,我不知道是谁在刷我的界面,导致我被屏蔽了。老大让我换机重装,但是因为里面用了一个图片处理库sharp,安装起来很烦,然后研究了一下能不能设置代理服务器。大致如上图所示,用户的请求最终会经过我的服务器去请求对方的服务器,导致频率一高就被屏蔽。然后我可以请求一个代理服务器,甚至创建一个代理池,然后对请求进行平均。现在方案敲定了,我们就要开始测试了。先自己搞清楚怎么做,再看看有没有现成的服务。代理服务器squidssquid是应用层的代理服务软件,可以提供缓存加速和应用层过滤的功能。我的服务器可以理解为客户端,通过代理服务器请求对方服务器。它可以通过缓存一部分请求来达到两个目的,防止短时间内来自同一个地址的大量请求。隐藏客户端ipAbuyunAbuyun是一家代理服务商。HTTP隧道允许每个请求从一个随机的IP转发(每秒5个,最多200个,超过429个)。如何在Node中配置代理服务器axios如果使用axios,Node支持proxy参数,参考文档即可完成。constaxios=require('axios');//要访问的目标页面vartargetUrl="https://www.lilnong.top/cors/sf";//配置代理服务器信息varproxy={host:"8.8.8.8",//代理服务器地址port:80,//端口auth:{//auth认证信息,阿布云有,squid不需要username:'',password:''}};//https://github.com/axios/axios#request-configaxios.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...使用隧道来处理。axios('https://www.lilnong.top/cors/sf2',{proxy:false,httpsAgent:tunnel.httpsOverHttp({proxy:{host:'8.8.8.8',//代理服务器域名或ip端口:80//代理服务器端口}})}).then(v=>console.log(JSON.stringify(v.data))).catch(v=>console.log(v.message))requestifweuse不是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);});requestexceptionnpminstallrequestCan'tinstallrequest已经弃用,参见https://github.com/request/request/issues/3142因为request不会开发新功能,所以不建议再使用。也是因为用的人太多,需要考虑的兼容性太多,所以整个库都转成维护了。这时候我们可以尝试使用cnpminstallrequest安装其他测试请求代理服务器的方法。使用curl,我们可以快速查看服务器上代理服务器是否正常工作。curl-x"http://8.8.8.8:80"https://www.lilnong.top/cors/sf4-x是设置代理服务器地址,x为小写。别搞错了,大写的是设置请求方式-XPOST。微信公众号:前端立农
