之前给大家介绍过挨踢君写的短网址服务。(见附件更新记录)
由于政策规定,大部分后缀的域名都无法在国内备案,“manyou.it”也就无法在国内使用了。这导致部分业务代码无法使用。
本来更加短小的manyou.it域名瞬间黯然失色。
转机:无服务器计算
CloudFlare Workers 是一项不错的无服务器计算服务。通过本次案例可以挨踢君带大家体验无服务器计算。
- 首先,将“manyou.it”的DNS服务托管到CloudFlare
- 在Workers 里面添加反向代理业务代码
const base = "https://manyouit.com/"
async function handleRequest(request) {
const url = new URL(request.url)
const { pathname, search, hash } = url
const destinationURL = base + pathname + search + hash
let response = await fetch(destinationURL, request)
return response
}
addEventListener("fetch", event => {
event.respondWith(handleRequest(event.request))
})
通过上面两步操作,就能实现manyou.it对manyouit.com 的反向代理。
看来,无服务器计算就是一种服务,但这种服务不需要你维护专门的服务器。你只需要给服务商提供代码就行。
现在,我们实现了manyou.it 对manyouit.com 的反向代理。但是由于短网址服务使用http 的301 状态码实现网页跳转,而这种跳转无法被反向代理代码所支持。
在Workers 里面实现跳转
由于挨踢君的短网址结构容易分析,比如 https://manyouit.com/s/Al(或短一点:manyou.it/s/Al)
url 中都包含/s,因此把代码改成:
const base = "https://manyouit.com/"
async function handleRequest(request) {
const url = new URL(request.url)
const { pathname, search, hash } = url
if(pathname.toString().charAt(1)=="s" && pathname.toString().charAt(2)=="/"){
return Response.redirect("https://manyouit.com"+pathname, 301)
}
const destinationURL = base + pathname + search + hash
let response = await fetch(destinationURL, request)
return response
}
addEventListener("fetch", event => {
event.respondWith(handleRequest(event.request))
})
就能恢复manyou.it 的短网址功能!
总结:大家敞开用吧!
附件: 上次更新记录
一个新生的短网址服务!
---
title: 一个新生的短网址服务!
date: 2020-09-09
draft: false
description: 其他短网址服务要么“不短”,要么寿命“太短”,要么被微信“封杀”,看看我是怎么做的!
tags: [想法, 短网址, 短链接, software, 优秀软件]
# aliases: [/sanlian/Chrome]
# type: post
---
大智若愚、才大器粗
我们对“大”的追求是孜孜不倦的
可是你听说过“短小精悍”吗?
“短小”如何胜出?
同样的电影,使用h265 技术压缩的体积
往往会比上一代技术小一半
2020年新版的h266算法甚至能更进一步:
在h265的基础上再节约30~50%的体积
也就是说,一部原来40G的蓝光电影
在新的标准下可以压缩到只剩10个G!(理想情况)
最重要的是,在体积变小的同时还能做到不损失画质!
启示:
在存储和传输过程中,我们希望它尽可能小;
在使用过程中,我们又希望它尽可能无损
大,或许笨重;小,反而精悍!
长,不代表好;短,也可以赢!
为了能得到大家的三连
挨踢君喜欢把一些有趣、有用的资源链接分享给大家
但往往会遇到链接太长的问题
于是,我想将这些长网址“变短”
然而,尽管市面上已经存在了相当多的短网址服务
但我发现,这些短网址或多或少存在一些问题:
被滥用
很多短网址指向了许多广告、甚至是色情非法网站
因此,它们被微信屏蔽了
这导致短网址的传播性大打折扣
短网址不短
这些短网址因为被大量使用
已经不算短了,它们的后缀往往有8位之多
植入广告
部分短网址
甚至会在到达目标页面之前
给用户闪现广告!看完广告再到目标页面
这就更难忍了
挨踢君如何克服这些缺点
针对短网址的这些问题
我进行了充分考虑
这里给出我的解决思路
▲“就差一个程序员了”
微信为了用户体验
屏蔽了一些非法短网址,这当然无可厚非
然而从另一个层面看,这一屏蔽也误杀了许多正常用户
为了防止误杀,我们可以把域名限定在一个白名单里面:
比如,我选择了中国排名前100的网站
同时,为了最大程度地防止微信屏蔽
我还需要移除了电商类网站
另外,为了防止特殊癖好的人滥用该服务
比如写一个DDOS脚本,疯狂调用该接口
我于是将短网址服务设置了使用门槛
具体做法等会我会告诉大家
域名白名单 + 使用门槛
这样的设定,可以保证短网址服务经久不衰
另外,我的manyouit域名续费到了上限
也就是2029年
如果用它来做短网址,应该能高枕无忧吧
虽然说起来,核心思路就是白名单+使用门槛
但是这个服务我写了差不1多个月
【泪目】
试试挨踢君的短网址服务?
使用
使用挨踢君的短网址服务,最简单的方法
就是把长网址发到漫游挨踢的公众号上
复原
当然,如果你想还原成原来的网址
只要发送短网址即可
另类用法
实际上
短网址本质上就是一个字符串到另一个字符串的映射
所以当然,也可以在这里种下一个秘密
比如,你可以把要记住的东西伪装成一个网址:
my.secret/我的wifi密码是:mywifipw
然后我会返回一个短网址
下一次,当你想复原的时候,你把短网址发给我就行
【演示】
当然,也可以把一些悄悄话“加密”成短网址,大家看:
love.you/我对你的爱有如滔滔江水连绵不绝,又有如黄河泛滥一发而不可收拾。
然后你把这个加密的短链接发给TA
并提示TA把短链接复原
就能看到你加密的信息了!
my.secret、love.you
这两个域名是未经注册的
我特地加到了白名单里面
算是挨踢君添加的彩蛋吧!
当然,如果你想在白名单里面添加其他域名
记得私信告诉我
最后
因为那些人可能会突然
终止合作、停止服务、断绝供应
小到一个个体,大到一个国家
有些东西还是掌握在咱们自己手里比较好
如果你觉得我讲的还不错,请随意三连
你三连的样子真好看!
YES!
拟过的标题:
长,不代表好;短,也可以赢!
1个月后:新生的短网址服务!
太长并不好,还是缩短吧。
短,居然有这么多的好处!
一个新生的短网址服务!