利用cloudFlare的边缘计算workers实现外链转内链跳转

跋涉者曾经分享过一篇7b2主题外链跳转的文章,那篇文章实现的原理是在自己服务器里增加一个跳转的页面代码。

[zrz_insert_post id=1656]

不过今天看张戈大神的一篇文章CloudFlare边缘计算Workers尝鲜初探:博客跳转中间页。这篇文章谈到可以把这个跳转代码保存到cloudFlare的边缘计算workers中,从而让跳转可以在CDN里实现,显然,这样会减轻服务器计算的压力。对小水管的博客来说有一定的使用价值。

首先,你的网站要使用cloudFlare这个cdn加速。

由于国内的网络情况,直接使用往往比较卡,不过好在张戈大神折腾出了另外一个套路,使用后感觉还不错。有兴趣的朋友可以去他的网站上参考。本文不做详细的叙述。

第二,把代码添加到cloudFlare的边缘计算workers中

步骤如下:

  • 打开CF域名控制面板,如图1点击切换到Workers选项卡;
  • 点击【Launch Editor】按钮进入Workers编辑界面后,点击【Add script】输入脚本名称并保存,如图:
利用cloudFlare的边缘计算workers实现外链转内链跳转
  • 把如下代码放入代码编辑框中,此代码来自张戈博客.并点击save。

addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) }) /** * Fetch and log a request * @param {Request} request */ html = `<html><html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"><meta name="renderer" content="webkit"><meta http-equiv="Cache-Control" content="no-transform" /><meta http-equiv="Cache-Control" content="no-siteapp" /><meta name="robots" content="noindex, nofollow" /><meta name="applicable-device" content="pc,mobile"><meta name="HandheldFriendly" content="true" /><meta name="description" content="跳转页面" /><meta name="keywords" content="跳转页面" /><script>var base64EncodeChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var base64DecodeChars=new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);function base64encode(str){var out,i,len;var c1,c2,c3;len=str.length;i=;out="";while(i<len){c1=str.charCodeAt(i++)&255;if(i==len){out+=base64EncodeChars.charAt(c1>>2);out+=base64EncodeChars.charAt((c1&3)<<4);out+="==";break}c2=str.charCodeAt(i++);if(i==len){out+=base64EncodeChars.charAt(c1>>2);out+=base64EncodeChars.charAt(((c1&3)<<4)|((c2&240)>>4));out+=base64EncodeChars.charAt((c2&15)<<2);out+="=";break}c3=str.charCodeAt(i++);out+=base64EncodeChars.charAt(c1>>2);out+=base64EncodeChars.charAt(((c1&3)<<4)|((c2&240)>>4));out+=base64EncodeChars.charAt(((c2&15)<<2)|((c3&192)>>6));out+=base64EncodeChars.charAt(c3&63)}return out}function base64decode(str){var c1,c2,c3,c4;var i,len,out;len=str.length;i=;out="";while(i<len){do{c1=base64DecodeChars[str.charCodeAt(i++)&255]}while(i<len&&c1==-1);if(c1==-1){break}do{c2=base64DecodeChars[str.charCodeAt(i++)&255]}while(i<len&&c2==-1);if(c2==-1){break}out+=String.fromCharCode((c1<<2)|((c2&48)>>4));do{c3=str.charCodeAt(i++)&255;if(c3==61){return out}c3=base64DecodeChars[c3]}while(i<len&&c3==-1);if(c3==-1){break}out+=String.fromCharCode(((c2&15)<<4)|((c3&60)>>2));do{c4=str.charCodeAt(i++)&255;if(c4==61){return out}c4=base64DecodeChars[c4]}while(i<len&&c4==-1);if(c4==-1){break}out+=String.fromCharCode(((c3&3)<<6)|c4)}return out}function utf16to8(str){var out,i,len,c;out="";len=str.length;for(i=;i<len;i++){c=str.charCodeAt(i);if((c>=1)&&(c<=127)){out+=str.charAt(i)}else{if(c>2047){out+=String.fromCharCode(224|((c>>12)&15));out+=String.fromCharCode(128|((c>>6)&63));out+=String.fromCharCode(128|((c>>)&63))}else{out+=String.fromCharCode(192|((c>>6)&31));out+=String.fromCharCode(128|((c>>)&63))}}}return out}function utf8to16(str){var out,i,len,c;var char2,char3;out="";len=str.length;i=;while(i<len){c=str.charCodeAt(i++);switch(c>>4){case :case 1:case 2:case 3:case 4:case 5:case 6:case 7:out+=str.charAt(i-1);break;case 12:case 13:char2=str.charCodeAt(i++);out+=String.fromCharCode(((c&31)<<6)|(char2&63));break;case 14:char2=str.charCodeAt(i++);char3=str.charCodeAt(i++);out+=String.fromCharCode(((c&15)<<12)|((char2&63)<<6)|((char3&63)<<));break}}return out}function doit(){var f=document.f;f.output.value=base64encode(utf16to8(f.source.value));f.decode.value=utf8to16(base64decode(f.output.value))}; function GetQueryString(name) { var reg = new RegExp("(^|&)"+ name +"=(.*)$"); var r = window.location.search.substr(1).match(reg); if(r!=null) { return  unescape(r[2]); } else { return window.location.pathname.replace("/goto/",""); //注意代码中的/goto/和跳转地址/goto/保持一致,请记得自行修改!     } } jump_url = GetQueryString("url"); // 若传入的是base加密数据,则进行解密处理if( jump_url == base64encode(base64decode(jump_url))) { jump_url = base64decode(jump_url); } // 自定义一些特殊字符串的跳转,请根据实际需求自行发挥,比如:// 访问 "/goto/baidu" 会跳转到百度首页:if(jump_url=="baidu") { jump_url="https://www.baidu.com/"; } // 访问 "/goto/cf" 会跳转到cloudflare首页:if(jump_url=="cf") { jump_url="https://www.cloudflare.com/"; } // 网址校验var UrlReg = "^((http|https|thunder|qqdl|ed2k|Flashget|qbrowser|ftp|rtsp|mms)://)"; if(jump_url == null || jump_url.toString().length<1 || !jump_url.match(UrlReg)) { document.title = "参数错误,正在返回首页..."; jump_url = location.origin; } // 延时执行跳转setTimeout(function link_jump() { // 防止盗用,但是微信等客户端无法取得referrer,因此这里允许了referrer为空的访问,请自行修改zhang.ge为自己的域名  var MyHOST = new RegExp("ewader\.com"); if (!MyHOST.test(document.referrer) && document.referrer.length ) { alert("请不要盗用本站跳转页面!"); location.href = "https://tunan.org/"; return; } location.href = jump_url; },1000); setTimeout(function(){window.opener=null;window.close();}, 50000); </script><title>页面加载中,请稍候...</title><style type="text/css">a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:;padding:;border:;font-size:100%;font:inherit;vertical-align:baseline}body{background:#3498db}#loader-container{width:188px;height:188px;color:#fff;margin: auto;position:absolute;top:50%;left:50%;margin-right:-50%;transform:translate(-50%,-50%);border:5px solid #3498db;border-radius:50%;-webkit-animation:borderScale 1s infinite ease-in-out;animation:borderScale 1s infinite ease-in-out}#loadingText{font-family:"Microsoft YaHei",Helvetica,Arial,Lucida Grande,Tahoma,sans-serif,Raleway,sans-serif;font-size:1.4em;position:absolute;top:50%;left:50%;margin-right:-50%;transform:translate(-50%,-50%)}@-webkit-keyframes borderScale{0%{border:5px solid #fff}50%{border:25px solid #3498db}100%{border:5px solid #fff}}@keyframes borderScale{0%{border:5px solid #fff}50%{border:25px solid #3498db}100%{border:5px solid #fff}} </style></head><body><div id="loader-container"><p id="loadingText">页面加载中...</p></div></body></html>` //console.log(html) async function handleRequest(request) { const newResponse = new Response(html) newResponse.headers.set('Content-Type', 'text/html'); return newResponse }

  • 点击【routers】按钮切到路由编辑界面,点击【Add router】后如图添加路由:点击save
利用cloudFlare的边缘计算workers实现外链转内链跳转

至此,已经大功告成,想看效果的可以点击上面的外链,值得说明的一点是,cloudFlare的边缘计算workers是收费服务,不过每天有免费10w的请求数量,对我们这个小博客来说,是非常非常的够用了。

如果,你也在使用cloudFlare,不妨也可以用用这个玩意,毕竟充分利用外部资源是我等小博主追求的目标哈。

Read more

开箱|媳妇的华为 Watch Fit 4

开箱|媳妇的华为 Watch Fit 4

媳妇前段时间去南京学习,回来跟我说起一件事:她的同学戴的手表居然能直接接打电话。她说起的时候眼神里有点心动。她平常其实不太喜欢戴这些东西,更结婚没多久的时候,说想要一块手表,也就戴了一段时间,就收藏了起来了。前几年给她买了一只荣耀手环 7,她戴过一阵子,后来也不戴了。 之所以现在又提出来,大概是和她最近工作有关,最近她们科新开了中医护理门诊,有不少患者是冲着她的刮痧来的,所以有时候满手都是刮痧油的情况下,有电话进来的时候,再取手机确实也不太方便。 于是我在京东上搜了一下。没想到就发现了华为 Watch Fit 4 ——白色的表带,颜值简洁大方,价格也不算离谱,不到 800 块钱(如果有国补的情况下,还能便宜不少)。几乎一下就戳中了她的需求,于是毫不犹豫下单。 开箱过程 快递很快,盒子不大,正面是手表的渲染图。拆开之后,里面的东西也很简单: * 手表本体 * 白色硅胶表带(已经装好) * 充电线 * 使用说明书 说实话,这条 充电线还挺让我惊艳的。磁吸式的圆形接口,

By laoliu
粮票里的父爱

粮票里的父爱

前几天在博客群里闲聊,话题莫名其妙地扯到了粮票。我随口说了一句:“当年我爸把全国的粮票攒着不舍得用,说是为了给我和我哥上大学的时候用。”阿均半开玩笑地说:“整理一下这个故事吧,也挺有意思的。”我心里一动,其实不久前还听我爸抱怨呢:“当年给你们攒的粮票,其实也没怎么用上。” 说到粮票,很多年轻人可能都没见过。上世纪八九十年代,粮食和一些生活用品都是按票供应的。手里有粮票才能买粮,没有就只能干着急。那时候的粮票分两种:地方粮票和全国性粮票。地方粮票只能在本地用,而全国性的粮票可以全国通用,更珍贵。 我爸攒的,就是全国粮票。他考虑到我和我哥上大学,不一定会留在甘肃,怕我们去外地没粮票买粮,饿肚子。他省吃俭用,把这些全国粮票默默积攒起来,为我们未来的温饱留着。想象他每天回家,把一张张小票叠好放进抽屉里,那画面真是朴素又让人心安。 求学的道路上,其实父母一直在鼓励我们。父亲看到单位新分来的大学生待遇非常好,意识到知识和学历的重要性;同时,我们家从祖辈开始都没有什么学问,所以望子成龙的期望特别重。放假的时候,除非是集中性的农活,比如收种庄稼、施肥这些有时效的农活,平常的象除草这些活儿都不让我

By laoliu
物必自腐,而后虫生

物必自腐,而后虫生

前几天朋友送了一箱黄桃,一次性吃不了那么多,慢慢的桃子就有点发软,这两天吃桃子的时候,屡屡遇到外表鲜亮,啃两口发现里面已经变质的桃子。这不由的让我想起了一句忘了从哪里看到的话——“物必自腐,而后虫生”。 查了一下资料,出处应该是苏轼的《范增论》。苏轼借楚汉相争,感叹项羽失天下并非因为范增未被重用,而是因为项羽自己内部的问题。于是写道:“物必先腐也,而后虫生之;人必先疑也,而后谗入之。”意思是,万物的败坏,必然从自身腐烂开始,外来的虫子不过是乘虚而入;人的失败,往往是自己心中先起疑念,外来的谗言才有了可乘之机。桃子如此,世间又何尝不是? 一颗桃子,即便外皮光鲜,若果肉先行腐坏,虫子自然会滋生。虫并不是腐烂的原因,而是腐烂的结果。真正决定一颗桃子命运的,不在于外表多么饱满,而在于内里是否坚实清新。 历史上的王朝也是如此。唐宋明清,无不曾强盛一时,但当内部积弊滋生、腐化蔓延时,再坚固的城池也难以自保。外敌入侵只是导火索,真正的根源是自身的腐朽。 组织亦然。一个团队,如果内部保持团结向上,足以抵御风雨;

By laoliu
茶与菩提:慢下来的时光

茶与菩提:慢下来的时光

周末收拾店内的东西,无意中翻出一个纸袋。打开一看,里面是半块普洱茶饼。这块茶饼是媳妇她表哥送的。刚拿到手时,我兴致勃勃地撬下一点泡来喝。慢慢地,三两次、五六次,一块完整的茶饼就被消耗掉了一半。后来是因为茶壶被摔坏了,改用玻璃杯泡绿茶,也就放在那了。都说普洱茶的妙处,就在于它“越陈越香”。这两年,它是不是也在悄悄发生着变化呢? 茶汤里的岁月 普洱分为生普和熟普。生普茶汤清亮,滋味苦涩中带着一丝清甜,回甘悠长,那是岁月的原味,直接而真切。熟普则是经过人工发酵,褪去了青涩,变得醇厚温润。茶汤红浓明亮,入口顺滑,带着独特的陈香,仿佛一位历尽风霜的长者,沉稳而内敛。我这一块,是熟普。撬下一点,用开水冲泡,茶汤渐渐转为红褐色,透着微微的枣香。轻轻啜一口,醇厚顺滑,温润入喉。这不只是一杯茶,更是一段被遗忘的时光。 菩提的光泽 喝茶的时候,瞥见了柜子里的那一串星月菩提。那是2015年买的,这些年不知不觉间,

By laoliu