博文

无服务器 自建短链服务 Url-Shorten-Worker 变身图床 Image Hosting 基于base64编码

图片
需求 在 NodeSeek 上发贴, 是要自备图床的. 我们已经实现了单纯的KV数据库 . 那么, 同样的原理, 图床不就是一样的事情吗? 发给系统一个path, 系统还给你一个图片的数据. 思路 我设计在KV中保存图片的base64数据. 因为这样可以在KV的后台中直接管理; 人眼阅读后台数据时, 不会有奇怪的字符; 在复制粘贴, 不同的系统之间复制转移, 会比较方便. 坏处是, 数据量会变大, 变大 33%. 实践 图片转base64先利用其它网站实现, 如  https://oktools.net/image2base64 这样一个gif图片 得到下面这一大段base64数据. 我们在pastebin的基础上, 使用这些base64数据当作value, 设置233.gif当作key. 保存之后, 我们可以通过233.gif再获取这些base64数据, 像这样: 求助 GPT, 得到下面这段代码来把 base64 数据转化为一个图片返回给http请求. 把这段代码的函数添加到worker.js function base64ToBlob(base64String) {   var parts = base64String.split(';base64,');   var contentType = parts[0].split(':')[1];   var raw = atob(parts[1]);   var rawLength = raw.length;   var uInt8Array = new Uint8Array(rawLength);   for (var i = 0; i < rawLength; ++i) {     uInt8Array[i] = raw.charCodeAt(i);   }   return new Blob([uInt8Array], { type: contentType }); } 然后在返回http请求之前, 多处理这么一步, 就行了. 效果如下: ======== 完 把代码整理漂亮一点, 再上传. 用一个配置项设置系统的类型. Github:  https://github.com/crazypeace/url-Shorten-Worker/ 演示站:  https://im

无服务器 自建短链服务 Url-Shorten-Worker path为 'password' 时 让查询结果为空

图片
问题 今天调试 Pastebin 发现一个bug, 如果直接把path改为'password', 就会显示KV中的密码. 以前短链系统的时候, 因为短链系统会把查出来的value做302跳转, 而密码并不是一个网址, 在跳转时就会出问题, 所以就没有暴露这个bug. 修正 在按path查询了KV之后, 如果path是'password', 让查询结果为空.  这样后续处理就和 path 不存在是一样的. ======= 完 Github:  https://github.com/crazypeace/url-Shorten-Worker/ 演示站:  https://pastebin.icdyct.cloudns.asia/tieludasiliqiuweiyue https://pastebin.icdyct.cloudns.asia/password 的结果是和错误的path一样的了.

无服务器 自建短链服务 Url-Shorten-Worker 变身网络记事本 Pastebin 优化界面

图片
Url-Shorten-Worker 原作者本来就设计了可以支持不同的主题. 其实就是加载不同的index.html 默认是空, 也就是加载默认的 Repo 根目录下的 index.html 我们在 theme 下新建一个目录, pastebin, 再把 index.html 复制一份进来, 以此为基础做一些修改. 因为如果是当网络记事本PasteBin使用的话, value常常遇到大段文字的情况, 所以我修改为 textarea 元素. 最终效果如下, ======== 完 Github:  https://github.com/crazypeace/Url-Shorten-Worker 演示站:  https://pastebin.icdyct.cloudns.asia/tieludasiliqiuweiyue  

无服务器 自建短链服务 Url-Shorten-Worker 保护password

图片
需求 有PR提到, password应该要保护起来. https://github.com/crazypeace/Url-Shorten-Worker/pull/6 也有评论提到, 要避免显示password. 思路 定一个 protect_keylist  const protect_keylist = [   "password", ] 判断list是否包含指定元素, 用 protect_keylist.includes(req_key) 在 add, del, qry 时, 判断key属于 protect_keylist 就返回报错. 在 qryall 时, 遇到 protect_keylist 就不要放到返回结果中. ======== 完 Github:  https://github.com/crazypeace/Url-Shorten-Worker 演示站:  https://1way.eu.org/bodongshouqulveweifengci  你用 loadKV 查不到 password 的结果

无服务器 自建短链服务 Url-Shorten-Worker 优化-count显示

图片
需求 当 visit_count 和 load_kv 同时打开的时候, 会显示出这样的结果. 评论也提到希望隐藏. 思路 在 qryall 拼凑返回数据时, 跳过 '-count' 结尾的数据. ======== 完 Github:  https://github.com/crazypeace/Url-Shorten-Worker 演示站:  https://1way.eu.org/bodongshouqulveweifengci   你能查看访问次数, 但是看不到 -count 的查询结果

一键脚本获取本机 IP 以及用gh-proxy访问 Github 的通道

图片
经常在各TG群里看到各种一键脚本用户有检测IP与域名解析不匹配的反馈 这样的原因 常常是因为 脚本中检测IP的方法失效了. 在 233boy 的群中受到启发. 我有一个想法. 对各脚本的作者发起一个倡议, 使用统一的 本机IP 的变量名. _FQ_IP_ 使用统一的IP栈变量名. 值为4表示使用IPv4, 值为6表示使用IPv6. _FQ_NET_STACK_  在脚本中, 检测本机IP之前, 先判断这个环境变量是否为空. 环境变量非空, 则不检测本机IP. 示例, get_ip() {   if [[ -z $_FQ_IP_ ]]; then      if [[ $_FQ_NET_STACK_ == "4" ]]; then       _FQ_IP_=$(curl -4s https://www.cloudflare.com/cdn-cgi/trace | grep -oP "ip=\K\S+")       [[ -z $_FQ_IP_ ]] && echo -e "\n 检测本机IP失败\n" && exit     elif [[ $_FQ_NET_STACK_ == "6" ]]; then        _FQ_IP_=$(curl -6s https://www.cloudflare.com/cdn-cgi/trace | grep -oP "ip=\K\S+")       [[ -z $_FQ_IP_ ]] && echo -e "\n 检测本机IP失败\n" && exit     else       _FQ_IP_=$(curl -s https://www.cloudflare.com/cdn-cgi/trace | grep -oP "ip=\K\S+")       [[ -z $_FQ_IP_ ]] && echo -e "\n 检测本机IP失败\n" && exit     fi   fi } 检测IP的具体方法, 欢迎大家在评论区交流. 关于IP栈使用IPv4 还是 IPv6

无服务器 自建短链服务 Url-Shorten-Worker 变身网络记事本 Pastebin 托管你的翻墙节点订阅

图片
需求 相信大家已经用过很多网络记事本的应用了. 比如:  https://gist.github.com/ https://pastebin.ubuntu.com/ 其实我很早就有这样的想法. 短链服务本质上就是输入一个Key, 返回一个Value. 只不过多做了一步, 把Value当作目标网址, 自动跳转. 那么如果我们不做跳转呢? 仅仅是显示Key对应的Value, 那么就是一个简单的网络记事本了.

The Hot3 in Last 30 Days

无服务器 自建短链服务 Url-Shorten-Worker 完整的部署教程

ClouDNS .asia免费域名 托管到CloudFlare开CDN白嫖Websocket WS通道翻墙 / desec.io