词元保护区

418 I’m a teapot

也是用上美国家宽了

⚡ 太长不读:真爽,但真贵 😅 为了保障体验,除了家宽本身还需要购买普通机场作为链式代理,或者 VPS 作为中转服务器。 🏡 哪儿来的 众所周知,高质量家宽一直处于反审查工具鄙视链顶端,上可 Amazon 电商、TikTok 直播,下可 ChatGPT、注册机、爬虫,无所不能,是每一位 MJJ 心中永远的追求 🐶 很可惜,家宽非常昂贵。这也是可以理解的,毕竟真正独享的家宽,本质上就是在当地办一套宽带,然后开代理服务器。以 AT&T 为例,其 300Mbps 套餐价格高达每月 ¥3001,对于普通人来说基本是不可承受的;何况还需要额外准备线路优化的机场或 VPS 作为链式代理或者中转服务器(后面会说)💸 得益于 LINUX DO 一位佬友的慷慨拼车2,词元突破阶级限制用上了高端的 VIRCS 家宽,深感占到了便宜,必须水一则博客来记录一下体验。 ⛓️‍💥 链式代理 词元没用过家宽,不知道情况,以为直连效果就算不好,也不会影响基本使用。当然,被现实重重地打了脸 🤡 由于完全没有线路优化,直连直接走骨干网,白天勉强能用,晚上 6 到 9 点连 GitHub 都加载不出来。 痛定思痛,词元突然想到自己的普通机场订阅还没过期,全 IPLC 线路,能不能用代理来代理代理?查了查,原来这叫链式代理,许多客户端都是支持的,包括词元用的 v2rayN。 v2rayN 的链式代理功能没有 Clash 那么丰富,也因此比较简单。先单独导入机场订阅和家宽节点,然后在订阅分组里设置落地代理服务器即可。 然后再去看看 PING0,发现虽然连接的是机场节点,显示的 IP 已经变成了家宽,并且威胁值非常美丽。 词元从来没见过这么干净3的 IP,就算关掉代理检测真·家宽也才 10% 左右 🎉 💨 体验 既然是家宽,体验的项目除了常规的速度之外,解锁和跳验证码也要考虑。 先看喜闻乐见的 YouTube 跑分和测速。 YouTube 4K 视频4,冷加载 5s,缓存健康维持在 20s 上下: Arch Linux 镜像下载(地理位置 Anycast),速度 4MBps 左右: ...

June 7, 2025 · 1 min · 133 words · 词元

词元计数器构造简介

又咕咕了一段时间 😅 但是这段时间词元也没闲着,除了上次写的迁移,还小修小补,给博客做了不少加载速度、界面、功能上的提升。目前这个版本词元是比较满意的,因此水一则博客介绍一下。 🏗️ 分离构建 虽然 Cloudflare 静态资源托管,流量是无限的,但是每个月有 3,000 分钟的构建时长限制。虽然这也是用不完的1,但是——白嫖怪怎么能接受限制呢? 如果您按照词元的教程,搭建了含有 index.js 的动态 Workers,那么很可惜,词元已经反悔了;这样实在是太浪费 Workers 请求了,都不用 DDoS,写个小脚本请求一天就能干下线 🙃 不过 Workers 也可以纯静态,不消耗 Workers 调用次数,只要删除所有 JS 脚本,从 wrangler.toml 里删掉除了定义静态资源之外的所有配置,就可以转换为静态 Workers 了。例如: 1 2 3 4 5 6 name = "tokeniland" compatibility_date = "2025-05-05" [assets] directory = "./public" not_found_handling = "404-page" 其中 public 是我们构建生成的目录。 话说回来,GitHub Actions 为公开仓库提供了无限时长的构建,结合无限流量的静态 Workers,就能实现全程白嫖。按照 Cloudflare 给出的文档,我们写一个 .github/workflows/build.yaml: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 name: 🌥️ Deploy Tokeniland to Cloudflare Workers on: push: branches: - master workflow_dispatch: jobs: build-and-deploy: runs-on: ubuntu-latest timeout-minutes: 15 steps: - uses: actions/checkout@v4 - name: 🚧 Build the site with Barrel Build run: bash script/build.sh - name: 🚀 Deploy to Cloudflare Workers uses: cloudflare/wrangler-action@v3 with: apiToken: ${{ secrets.CLOUDFLARE_WORKERS_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} 很简单吧!先这样(用 Hugo 生成,使用的 script/build.sh 待会儿会说),再那样(用 Wrangler 上传到 Workers),就可以用了。别忘了在 GitHub 仓库里添加 API 密钥和账户 token2。 ...

May 25, 2025 · 2 min · 372 words · 词元

SillyTavern 部署指南

真的不是词元喜欢搞涩涩 😵 实在是相关讨论铺天盖地1,有专门的论坛2,有开源客户端和大量贡献者3,甚至在抢真人涩涩的生意4…… 引用 Linus Torvalds 在他的自传 Just for Fun 中一句话,作为证据: [alt.sex is] Not my particular favorite. Although I did check it out once or twice to see what the fuss was about, I was pretty much your typical under-sexed nerd, more eager to play with my floating point processor than to keep abreast of the latest reports from the sexuality front—newly discovered lovemaking positions or reports from heavy petters or whatever else it was that so many people were talking about on alt.sex.5 ...

May 11, 2025 · 2 min · 350 words · 词元

将 Cloudflare Pages 迁移到 Workers

最近 Cloudflare 宣布 Workers Static Assets 进入“普遍可用”阶段,并在博客里建议新应用都使用 Workers 而非传统的 Pages1。 词元的博客一直都是托管在 Pages 上的,之前就想实现 UA 分流,例如 cURL 访问就返回纯文字版本,浏览器访问就返回网页版,但是在纯静态的情况下基本不可能实现2。既然 Cloudflare 把 Workers 吹上天了,那就来试试到底有多神奇吧 🔥 🤔 等等! Pages 是静态资源托管,访问次数和流量都是无限的;Workers 则需要执行用户脚本,免费版本每天限制调用 100,000 次。虽然看着很多,实际上也用不完,但是考虑每一个请求都需要计入,是不是有点浪费? 确实 😭 词元还有很多其他的 Workers,共享十万次请求,着实有点害怕(serverless 都能被 DDoS 到下线 😅)。但是考虑到 Workers 广阔的开发空间,以及 Cloudflare 的承诺“新功能都给 Workers”,词元决定玩一下,把博客转移到 Workers。 就算哪天发现不好用或者出事儿了,迁移回来也很方便嘛 😇 ⛅ Wrangler Wrangler 是 Cloudflare 提供的 Workers 开发工具,可以快速构建项目初始设置,还能在本地模拟运行一个 Workers 实例;总之就是我们必须要用。 Wrangler 基于(万恶的)Node.js 开发,所以您得先装个 Node.js 和 npm。然后,找一个风水宝地,执行: 1 npm create cloudflare@latest -- bug-barrel 嗯,词元决定将博客的名字还是改回原来的“桶装幺蛾子”,因为谷歌上“词元计数器”就算全文匹配都搜不到自己的博客 🤣 最近又改成了词元保护区…… ...

May 1, 2025 · 3 min · 433 words · 词元

Kindle 越狱的体验

两三年前,词元买了一部二手的 Kindle 8。选择如此陈旧(2016 年发布)的型号的原因,除了因为便宜(小黄鱼上全新未拆封只要 ¥300),还有个原因就是 Kindle 8 当时已经停止 OTA,词元可以放心大胆地越狱 Kindle,然后使用最新款 Kindle 仍然缺失的 EPUB 支持、自定义手势、文本编辑器等等(KOReader 提供)。 买回来之后,词元立刻尝试了越狱,用的是当时最常见、恰好支持 Kindle 8 最后一个 OTA(5.16.2.1.1 版本)的 LanguageBreak。然而,这个方法操作很复杂,词元经过四五次尝试,最终认命并注册了个美亚账号,老老实实使用内置功能 😮‍💨 然而,在词元不再关注 Kindle 越狱方法的这段时间中,今年元旦,MobileRead 论坛的 HackerDude 发布了一种新的越狱方法,号称是全版本通用,且越狱操作简单至极。 🎄 WinterBreak WinterBreak 利用了 Kindle 商店缓存的漏洞。简单概括一下越狱的原理: Kindle 在访问商店的时候,会产生缓存,存储在根目录下 .active_content_sandbox 目录下;下一次访问时,会更新过期的缓存。 这个目录中有可执行的文件,Kindle 商店会以设备权限执行。 开启飞行模式,Kindle 商店仍然会尝试读取这些文件,但是不会替换。 这样,如果我们把 .active_content_sandbox 储存的缓存中可执行文件,替换为越狱的脚本,让 Kindle 商店以设备(也就是 root)权限执行,就能实现越狱了。 Kindle 设备固件是一个精简版 Linux 内核。 本文的重点不是教您如何越狱;上文的 WinterBreak 链接里有英文教程,书伴有中文翻译和视频,都非常详细,词元不再赘述。 词元在操作过程中,有以下几个小小的坑: 🫥 如果您使用 Linux 或 macOS,请一定要提前启用“显示隐藏文件”,否则复制的时候,最重要的 .active_content_sandbox 很容易被漏掉。 🤬 不要用 WinZip 解压 .tar.gz 压缩文件,很容易损坏,导致越狱失败。 🛜 除非教程里明确说明,不要提前关闭飞行模式。 🤔 然后呢? 词元跟着上述教程,也成功地完成了越狱。如果您看的是英文教程且做完了 Post Jailbreak 这一节的步骤,那您应该已经获得了越狱的 Kindle 的最大好处——KOReader。待会儿说说 KOReader 的一些使用技巧。 ...

April 19, 2025 · 2 min · 287 words · 词元

零成本搭建 AI QQ 机器人

🌩️ 太长不读:用 Cloudflare Workers 搭建代理白嫖 Gemini,然后用 AstrBot 和 NapCat 接入 QQ,实现零(低)成本的 AI QQ 机器人。 🏛️ 首先要有 Gemini Google 是为数不多的开放免费大语言模型 API 的提供商,但是很可惜,与其他 Google 服务一样,在国内是无法直接访问的。考虑到低成本这个要求,我们使用 Cloudflare Workers 搭建一个代理,实现国内访问。 当然如果您有境外服务器,那更好,直接在 NGiNX 里用常规方法添加反向代理。您都有服务器了,就不需要词元教您了吧 😁 目前 Gemini 对 gemini-2.0-flash 提供了每天 1500 次免费请求,而 Cloudflare Workers 则有每天 1000 万次免费请求,对于个人用户,如果您不把机器人拉近好几个大群,肯定是绰绰有余的。 首先,您要有个 Google 账号,还有 Cloudflare 账号,都不需要绑定信用卡——相信您可以自己搞定。另外还得有个域名,在 NameSilo 上可以买个 .top,十几块一年,还能用支付宝。 然后,去 Google AI Studio,创建一个 token,复制备用。 Gemini 这边就结束了,接下来去 Cloudflare 创建一个 Worker。 然后,选择 Hello World 项目,创建一个空项目,随便起个名字。建立成功之后选择“编辑代码”,粘贴以下的 JS 代码。 ...

March 30, 2025 · 3 min · 509 words · 词元

“不道德”的 Hysteria2 协议

因为 Xray 内核面板扛把子 3X-UI 作者宣布停更、Xray 内核长期以来不支持 TUN(而 v2rayN 的双核心解决方案在词元这儿不大能用),词元最近把服务端和客户端都换成了 sing-box。 要说 sing-box 的配置文件是真的好写,主要是它对 Xray 和 Mihomo 的写法都做了兼容处理,词元写惯了 Xray,转换过去没有压力,之前使用的 VMess、WS、TLS 和 CDN 的保险方案很快就转移过去了。 💡 如果您感兴趣,可以参考这个模板:chika0801/sing-box-examples,需要自行填写 UUID 和 Path,可以参考之前词元那则脚本搭建的博客。 但是今天词元不是要讲怎么把这协议迁移过去。毕竟,只要套上 CDN 且有最基本的加密,就基本不可能被封——原因不在于协议、特征什么的,而是 GFW 不会封禁 CDN 的 IP,“代价”太大。 词元想聊的是 Hysteria2,一个其实也不算很新的协议。 🤬 Hysteria2 是啥 Hysteria2 是一个以 UDP、QUIC 和 HTTP/3 为基础的协议。说它的技术本质,词元也搞不清(您可以去看看文档),但有几个基本特点是很好说清的: 🎭 伪装成 HTTP/3 流量,理论上来说比第一代 Hysteria 特征减少。但是很可惜的是,HTTP/3 和 QUIC 本身就是特征,尤其是在某些地区,运营商会干扰、拦截这些流量(俗称“Q 死”)。 📦 使用 UDP 包,且比普通 TCP 和 BBR 算法 TCP 的丢包重发策略更激进: 普通 TCP 在丢包率高时,将其等同于“带宽小”,减速发包。 BBR 算法 TCP 在丢包率高时,以维持带宽稳定为目标,加速发包。 Hysteria2 则主动“抢占”带宽,按 Brutal 算法增加包的数量,尽力达到用户设定的带宽。 ☁️ 不能套 CDN,主流的 CDN 几乎没有支持 UDP 这种“暴力”的包,何况支持 HTTP/3 的 CDN 也很少。 第二点导致了很多争议,因为 Brutal 算法在努力达到用户设定的带宽时,有可能出现多倍发包的情况,而这在流量高峰期会导致网络更加拥挤。Hysteria2 和 Xray 开发者各执一词,前者认为这只是达到运营商和用户签订的“流量协议”的一种手段,而后者认为这会导致骨干网更加拥挤,影响其他协议的用户。 ...

February 2, 2025 · 2 min · 411 words · 词元

用 Plymouth 替换开机日志

默认情况下,Arch Linux 开机会展示 Linux 内核和 systemd 的日志。尽管出现问题时用这些日志排查很有用,但是每次开机,都看到一堆文字滚动,夹杂着几个报错(没有内核签名啊,无法更新钥匙环啊),还是不大舒服。 Fedora 的开发者照着 Windows 和 macOS,搞了个 Plymouth:它可以像这几个操作系统一样,显示开机画面。正好词元之前换到了 systemd-boot,可以默认禁用菜单,开机过程更加简洁了;现在再关掉日志,看起来也更舒服些。 那今天,就来装个 Plymouth 玩玩。 👄 安装 Plymouth 由于 Plymouth 已经进入 freedesktop.org 的官方资源,安装非常简单: 1 sudo pacman -S plymouth 然后,为了让内核和 systemd 在启动时不要显示日志,需要修改一下内核参数。您如果使用 systemd-boot,可以修改启动条目 /boot/loader/entries/*.conf,在内核参数末尾添加: options ... splash quiet 若您还是会看见一些日志,那是因为 dmesg 显示了一些它认为“重要”的日志。添加或修改日志等级即可: options ... loglevel=3 0 是最严重的错误,而 7 是调试信息,3 基本上就是只显示报错。 您当然也可以复制一份条目,然后删除 splash 和 quiet 并填写 loglevel=7,添加参数 plymouth.enable=0 disablehooks=plymouth 禁用 Plymouth,作为调试启动参数。 您还需要将 Plymouth 添加到 mkinitcpio 的生成参数里,以便生成包含 Plymouth 的 initramfs。编辑 /etc/mkinitcpio.conf,找到以下行: ...

February 1, 2025 · 1 min · 130 words · 词元

用 systemd-boot 替换 GRUB

systemd-boot 是一个易于配置的 UEFI 启动引导管理器。相比于更加常见的 GNU GRUB,它有以下优缺点: 轻量灵活,功能和界面都很精简,配置文件很好写(GRUB 的配置文件甚至需要 grub-mkconfig 转译)。 是一个原生的 EFI 应用程序,只使用固件功能。这导致了下一条的功能缺失。 缺乏 GRUB 的一些功能,例如不支持主题、不支持文件系统读写(FAT 等 EFI 固件支持的除外);对于 BTRFS 用户来说,还不支持直接从 BTRFS 子卷启动(只能写内核参数)。 似乎有些同学认为 systemd-boot 界面比 GRUB 好看。 对词元来说,由于不需要 Windows 双启动,也不怎么使用 BTRFS 子卷启动的功能,systemd-boot 的功能足矣。因此,今天就来删掉 GRUB,安装 systemd-boot。 📦 安装 systemd-boot 在 Arch Linux 上,systemd-boot 是 systemd 的依赖,而后者又是 base 包组的依赖,因此您应当已经安装了 systemd-boot,可以通过 bootctl 配置。 首先,将 systemd-boot 安装到 /boot: 1 sudo bootctl install systemd-boot 默认您的 ESP 分区是 /boot、/boot/efi 或 /efi。 如果您的输出中包括以下警告: ...

January 31, 2025 · 2 min · 350 words · 词元

使用 acme.sh 获取泛域名证书

Caddy 虽好,但是要让它使用 Cloudflare API 处理 DNS 验证,还非得重新编译一次。而且,词元发现 Caddy 直到目前都没有充足的第三方文档(尽管其官方文档很好),对于一些特殊需求到底该怎么写配置还是不甚清楚。因此,词元决定换用另一个可以自动续期的 SSL 申请工具,综合一下 Caddy 的功能和 NGiNX 的性能和资料优势。 很明显,这个工具就是 acme.sh。 😁 这个长得很像网址的名称确实是一个网址,直接重定向到 GitHub 仓库。 📦 安装 为了不要污染用来日常操作的账号,也防止 sudo 权限被滥用,我们新建一个普通用户: 1 2 sudo useradd -m certbot sudo passwd certbot 🤖 Certbot:你礼貌吗? 然后,使用 acme.sh 的安装脚本安装。注意这里不需要 Root 权限,安装位置也在主目录下: 1 curl https://get.acme.sh | sh -s email=you@example.com # 改为您的邮件 目前 acme.sh 已默认从 Let’s Encrypt 转为使用 ZeroSSL,后者需要邮箱地址进行注册,所以如果您打算使用默认设置,您需要添加 email=you@example.com 这一部分。如果您打算使用 Let’s Encrypt,可以忽略这个设置。 🏅 申请证书 首先要激活一下在 .bashrc 中添加的 $PATH 位置: 1 . .bashrc 如果您打算使用 Let’s Encrypt,请执行: ...

January 26, 2025 · 1 min · 180 words · 词元