<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss/feed.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Sliverkiss Blog</title><description>与你一起发现更大的世界</description><link>https://blog.xn--ug8h.eu.org</link><item><title>用 AI Agent 薅 AI 羊毛：一个 Telegram 监控频道的搭建记录</title><link>https://blog.xn--ug8h.eu.org/post/note/tg-ai-monitor</link><guid isPermaLink="false">note/tg-ai-monitor</guid><description>RSSHub 拉公开频道 → LLM 两段过滤 → 多角度改写 → Bot 推送，附带产品页截图兜底。一台 aarch64 上的 cron 折腾。</description><pubDate>Thu, 16 Jul 2026 00:15:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;能用 &amp;gt; 看起来能用。与其手动刷频道找免费额度，不如让 Agent 自己刷。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;起因&lt;a href=&quot;#起因&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;关注了几个 TG 羊毛频道，每天消息不少，真正有用的 AI 免费额度 / 新模型上线 / IDE 送积分之类，混在抽奖、开卡、广告里，手动翻很烦。&lt;/p&gt;
&lt;p&gt;于是想：能不能让 AI 帮我盯着，过滤掉噪音，只推一条干净的摘要到自己的频道？&lt;/p&gt;
&lt;p&gt;答案是可以，而且不贵——跑在自家 aarch64 小机器上，cron 每 15 分钟一轮，LLM 用免费模型，零额外成本。&lt;/p&gt;
&lt;h2&gt;架构&lt;a href=&quot;#架构&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;整体链路长这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;公开TG频道&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  → RSSHub 拉消息&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  → SQLite 去重（source:msgId）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  → 关键词硬过滤（标题级）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  → LLM 预过滤（频道短文本，不爬论坛）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  → 仅对 KEEP 项：Scrapling 抓论坛首楼正文&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  → LLM 二次过滤（正文级，杀软广/折扣）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  → 跨频道去重&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  → LLM 多角度改写（3 角度 + 1 整合）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  → Bot 推送到目标群&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  → 无图有产品链 → Playwright 截图首屏兜底&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  → SQLite 标记 pushed&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一句话：&lt;strong&gt;频道短文本先判要不要看，论坛正文再判要不要推，最后 AI 重写 + 截图，推完入库。&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;各层做了什么&lt;a href=&quot;#各层做了什么&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;消息来源：RSSHub&lt;a href=&quot;#消息来源rsshub&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;公开 TG 频道不需要 Bot API 读权限，RSSHub 提供了 &lt;code&gt;rsshub.rssforever.com/telegram/channel/&amp;lt;name&amp;gt;&lt;/code&gt; 端点，直接拉最近消息为 RSS。&lt;/p&gt;
&lt;p&gt;每个频道限 10 条/轮，够用。RSSHub 有时不稳，多个实例轮换即可。&lt;/p&gt;
&lt;h3&gt;去重：SQLite&lt;a href=&quot;#去重sqlite&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;每条消息的 &lt;code&gt;source_channel:msg_id&lt;/code&gt; 作为主键入 &lt;code&gt;channel_posts&lt;/code&gt; 表，状态流转 &lt;code&gt;seen → filtered → pushed&lt;/code&gt;。跨频道去重用 &lt;code&gt;dedupe_keys&lt;/code&gt; 表，避免同一产品被两个频道各推一次。&lt;/p&gt;
&lt;p&gt;14 天自动清理，&lt;code&gt;RETENTION_DAYS=14&lt;/code&gt;，不用管膨胀。&lt;/p&gt;
&lt;h3&gt;关键词硬过滤&lt;a href=&quot;#关键词硬过滤&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;在 LLM 之前先跑一层正则：抽奖、开卡、虚拟卡、机场、节点、域名交易——直接丢。省 token，也减少误判。&lt;/p&gt;
&lt;h3&gt;LLM 预过滤（Stage A）&lt;a href=&quot;#llm-预过滤stage-a&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;只看频道标题 + 短文本（~800 字符），不爬论坛。prompt 让模型判断：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;KEEP&lt;/strong&gt;：免费 API / 模型额度 / IDE 送积分 / 官方 free tier 上线&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DROP&lt;/strong&gt;：抽奖、中转、反代、合租、广告、求助、 rant&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;输出 JSON：&lt;code&gt;useful&lt;/code&gt; / &lt;code&gt;score&lt;/code&gt; / &lt;code&gt;kind&lt;/code&gt; / &lt;code&gt;reason&lt;/code&gt; / &lt;code&gt;summary&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这一层砍掉 80% 的消息，后面论坛爬取只对 KEEP 项做。&lt;/p&gt;
&lt;h3&gt;论坛正文抓取&lt;a href=&quot;#论坛正文抓取&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Stage A 说 KEEP 的，才去爬论坛首楼。按站点分族：&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;族&lt;/th&gt;&lt;th&gt;站点&lt;/th&gt;&lt;th&gt;抓法&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;discourse&lt;/td&gt;&lt;td&gt;linux.do, nodeloc&lt;/td&gt;&lt;td&gt;&lt;code&gt;/t/{id}.json&lt;/code&gt; 首帖 &lt;code&gt;cooked&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;nodeseek&lt;/td&gt;&lt;td&gt;nodeseek.com&lt;/td&gt;&lt;td&gt;首个 &lt;code&gt;article.post-content&lt;/code&gt; + &lt;code&gt;/jump?to=&lt;/code&gt; 解包&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;v2ex&lt;/td&gt;&lt;td&gt;v2ex.com&lt;/td&gt;&lt;td&gt;&lt;code&gt;topic_content&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;generic&lt;/td&gt;&lt;td&gt;其它&lt;/td&gt;&lt;td&gt;article/main only&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;硬规则：&lt;strong&gt;只认首楼正文链接&lt;/strong&gt;，不扫整页——否则侧栏广告、站点规则页混进来就乱了。&lt;/p&gt;
&lt;h3&gt;LLM 二次过滤（Stage B）&lt;a href=&quot;#llm-二次过滤stage-b&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;拿到论坛正文后，再跑一次 LLM。这次能看清全文，专门杀：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;软广（折扣、专属价、充值套餐）&lt;/li&gt;
&lt;li&gt;促销算力（Seedance 9折之类）&lt;/li&gt;
&lt;li&gt;「怎么发羊毛」教程帖&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同一个产品两个频道各发一次，dedupe_key 去重。&lt;/p&gt;
&lt;h3&gt;多角度改写推送&lt;a href=&quot;#多角度改写推送&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;确定要推了，不直接发原文。跑 3 个角度分析师 + 1 个整合器：&lt;/p&gt;





















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;角度&lt;/th&gt;&lt;th&gt;提取什么&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;hook&lt;/td&gt;&lt;td&gt;白嫖价值 / 额度 / 模型 / 可否重复注册&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;howto&lt;/td&gt;&lt;td&gt;怎么领 / 门槛 / 有效期&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;caveat&lt;/td&gt;&lt;td&gt;坑 / 绑卡 / 限地区 / 不稳定&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;三个角度各出一组 bullet，整合成一条口语化短文。正文尽量 ≤80 字，点关键信息：额度、模型、无限注册、有效期。&lt;/p&gt;
&lt;p&gt;有效期不写 &lt;code&gt;【有效期: xxx】&lt;/code&gt; 这种机械标注，自然融进正文——「30天」「白嫖一个月」「前1万名」「长期有效」。&lt;/p&gt;
&lt;h3&gt;图片处理&lt;a href=&quot;#图片处理&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;推送时最多带一张图，优先级：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;频道真图&lt;/strong&gt;（RSS blockquote 里的论坛 OG 预览不算）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;论坛首楼正文图&lt;/strong&gt;（下载后检查尺寸，丢弃 logo/头像/小图标）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;产品页首屏截图&lt;/strong&gt;（无图但有 product_url 时，Playwright headless 截图 1280×900 @2x）&lt;/li&gt;
&lt;li&gt;都没有 → 纯文本&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;截图有个坑：最初用 &lt;code&gt;wait_until=networkidle&lt;/code&gt;，结果阿里云那种 SPA 页背景请求不停，30s 超时白推纯文本。后来改成 &lt;code&gt;load → domcontentloaded → commit&lt;/code&gt; 降级 + 4s settle，10s 内出图。&lt;/p&gt;
&lt;h2&gt;部署&lt;a href=&quot;#部署&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;# cron，每 15 分钟&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;/15 &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; *&lt;/span&gt;&lt;span&gt; *&lt;/span&gt;&lt;span&gt; *&lt;/span&gt;&lt;span&gt; /bin/bash /root/tg-ai-monitor/run_cron.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;run_cron.sh&lt;/code&gt; 带 &lt;code&gt;flock&lt;/code&gt; 防并发，日志写 &lt;code&gt;data/cron.log&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;LLM 走自己的 CPA 网关，模型用 &lt;code&gt;agnes-2.0-flash&lt;/code&gt;（免费），4 次 LLM 调用/条 × 通常 ≤5 条/轮，成本可忽略。&lt;/p&gt;
&lt;h2&gt;效果&lt;a href=&quot;#效果&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;跑了一阵，推送到自己的频道。典型推送长这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;注册送$40 AI + $360 VPS，支持Claude 4.6和GPT 5.2。单邮箱可无限注册。&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;http://signup.snowflake.com/cortex-code&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;#ai #白嫖&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;阿里云西湖论剑比赛，学生可领专属代金券，用于购买服务器和算力。&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;https://university.aliyun.com/action/dasctf&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;#ai #白嫖&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;短、直接、有链接有图。不写说明书腔，不标 ⏱ 有效期。&lt;/p&gt;
&lt;h2&gt;一些踩过的坑&lt;a href=&quot;#一些踩过的坑&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;坑&lt;/th&gt;&lt;th&gt;原因&lt;/th&gt;&lt;th&gt;解法&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;推了论坛 OG logo 当正文图&lt;/td&gt;&lt;td&gt;RSS 把论坛链接预览图放 blockquote 里&lt;/td&gt;&lt;td&gt;&lt;code&gt;strip_blockquote=True&lt;/code&gt;；下载后尺寸校验丢弃小图&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;强行挂了无关产品链&lt;/td&gt;&lt;td&gt;NodeLoc 整页扫链扫到站点 &lt;code&gt;community_rules&lt;/code&gt;&lt;/td&gt;&lt;td&gt;改成只扫首楼正文，不扫整页&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;截图超时纯文本推送&lt;/td&gt;&lt;td&gt;&lt;code&gt;networkidle&lt;/code&gt; 对 SPA 永远不 settle&lt;/td&gt;&lt;td&gt;降级为 &lt;code&gt;load&lt;/code&gt; + &lt;code&gt;domcontentloaded&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;LLM 把有效期标成 &lt;code&gt;【有效期: xxx】&lt;/code&gt;&lt;/td&gt;&lt;td&gt;publish prompt 没限制格式&lt;/td&gt;&lt;td&gt;要求口语化融入正文，禁机械标注&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;同一产品两个频道各推一次&lt;/td&gt;&lt;td&gt;无跨频道去重&lt;/td&gt;&lt;td&gt;&lt;code&gt;dedupe_keys&lt;/code&gt; 表，key 基于 product host&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;小结&lt;a href=&quot;#小结&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这东西本质是一个 &lt;strong&gt;LLM 驱动的 pipeline&lt;/strong&gt;：拉消息 → 过滤 → 抓详情 → 再过滤 → 改写 → 推送。每一步都有明确的丢弃条件，AI 负责判断，不负责编造。&lt;/p&gt;
&lt;p&gt;代码没开源——环境太特殊，泛用性不够。思路倒是通用的：RSSHub + SQLite + 任意 LLM API + Bot Token，谁都能搭。&lt;/p&gt;
&lt;p&gt;如果你也在刷 AI 羊毛频道，不妨试试让 Agent 替你刷。省下来的时间，可以用来薅更多的羊毛。&lt;/p&gt;</content:encoded><category>category:笔记</category><category>tag:Telegram</category><category>tag:AI</category><category>tag:LLM</category><category>tag:自动化</category><category>tag:RSSHub</category></item><item><title>给 Hermes 装 RTK：终端输出瘦身，token 少烧一点</title><link>https://blog.xn--ug8h.eu.org/post/note/%E7%BB%99hermes%E8%A3%85rtk</link><guid isPermaLink="false">note/给hermes装rtk</guid><description>预编译要 GLIBC 2.39、本机只有 2.36 时源码编译；rtk init 对接插件；gateway 必须在会话外重启。</description><pubDate>Wed, 15 Jul 2026 15:59:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;能用 &amp;gt; 看起来能用。Agent 天天 &lt;code&gt;git status&lt;/code&gt;、&lt;code&gt;docker ps&lt;/code&gt;，上下文却被原始输出塞满——这种账，值得算一算。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;起因&lt;a href=&quot;#起因&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Hermes 跑久了会发现一件事：工具调用里 &lt;strong&gt;&lt;code&gt;terminal&lt;/code&gt; 占比极高&lt;/strong&gt;，而命令回吐会整段进上下文。&lt;/p&gt;
&lt;p&gt;七天量级里 input token 可以上亿；其中一大块不是 system prompt，而是 &lt;strong&gt;shell 噪音&lt;/strong&gt;——git 状态、docker 列表、测试日志……模型其实只要结论，却被迫读全文。&lt;/p&gt;
&lt;p&gt;搜到 &lt;a href=&quot;https://github.com/rtk-ai/rtk&quot;&gt;rtk-ai/rtk&lt;/a&gt;（Rust Token Killer）：单二进制，把常见开发命令输出滤一滤、截一截，官方号称能省 &lt;strong&gt;60%～90%&lt;/strong&gt; 命令侧 token。更关键的是——&lt;strong&gt;官方支持 Hermes&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;rtk&lt;/span&gt;&lt;span&gt; init&lt;/span&gt;&lt;span&gt; --agent&lt;/span&gt;&lt;span&gt; hermes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;会装一个 &lt;code&gt;pre_tool_call&lt;/code&gt; 插件：在 &lt;code&gt;terminal&lt;/code&gt; 真正执行前，把 &lt;code&gt;git status&lt;/code&gt; 改写成 &lt;code&gt;rtk git status&lt;/code&gt;。Agent 不用改习惯，fail-open（rtk 挂了就原样跑）。&lt;/p&gt;
&lt;p&gt;这比「再叠一套记忆 / 自进化 skill」实在得多。于是就装了。&lt;/p&gt;
&lt;h2&gt;环境&lt;a href=&quot;#环境&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;项&lt;/th&gt;&lt;th&gt;值&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;机器&lt;/td&gt;&lt;td&gt;Linux &lt;strong&gt;aarch64&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;glibc&lt;/td&gt;&lt;td&gt;&lt;strong&gt;2.36&lt;/strong&gt;（Debian bookworm 一代）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Hermes&lt;/td&gt;&lt;td&gt;v0.18.x，gateway 用 systemd user 常驻&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;目标&lt;/td&gt;&lt;td&gt;rtk &lt;strong&gt;0.43.0&lt;/strong&gt; + 官方 Hermes 插件&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;踩坑 1：官方 aarch64 预编译跑不起来&lt;a href=&quot;#踩坑-1官方-aarch64-预编译跑不起来&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;按 README 下 release 里的：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;rtk-aarch64-unknown-linux-gnu.tar.gz&lt;/code&gt;（v0.43.0）&lt;/p&gt;
&lt;p&gt;一跑：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;/lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.39&apos; not found&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;objdump&lt;/code&gt; 看了一圈：预编译链到了 &lt;strong&gt;GLIBC_2.39&lt;/strong&gt; 的 &lt;code&gt;pidfd_*&lt;/code&gt; 一类符号。&lt;br /&gt;
本机是 &lt;strong&gt;2.36&lt;/strong&gt;。往回翻多个旧 tag（0.25～0.42）的 aarch64 gnu 包，&lt;strong&gt;全是 2.39&lt;/strong&gt;——不是「换个旧版本」能解决的。&lt;/p&gt;
&lt;p&gt;x86_64 倒有 musl 静态包；&lt;strong&gt;aarch64 目前没有 musl 预编译&lt;/strong&gt;。install.sh 对 aarch64 也是指到同一套 gnu 包。&lt;/p&gt;
&lt;p&gt;结论：&lt;strong&gt;在 bookworm / 2.36 上，aarch64 只能源码编译。&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;装二进制：本机 cargo release&lt;a href=&quot;#装二进制本机-cargo-release&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;# 装 rustup（若没有）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; --proto&lt;/span&gt;&lt;span&gt; &apos;=https&apos;&lt;/span&gt;&lt;span&gt; --tlsv1.2&lt;/span&gt;&lt;span&gt; -sSf&lt;/span&gt;&lt;span&gt; https://sh.rustup.rs&lt;/span&gt;&lt;span&gt; |&lt;/span&gt;&lt;span&gt; sh&lt;/span&gt;&lt;span&gt; -s&lt;/span&gt;&lt;span&gt; --&lt;/span&gt;&lt;span&gt; -y&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt; &quot;&lt;/span&gt;&lt;span&gt;$HOME&lt;/span&gt;&lt;span&gt;/.cargo/env&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; clone&lt;/span&gt;&lt;span&gt; --depth&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt; --branch&lt;/span&gt;&lt;span&gt; v0.43.0&lt;/span&gt;&lt;span&gt; https://github.com/rtk-ai/rtk.git&lt;/span&gt;&lt;span&gt; /tmp/rtk-build&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; /tmp/rtk-build&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;cargo&lt;/span&gt;&lt;span&gt; build&lt;/span&gt;&lt;span&gt; --release&lt;/span&gt;&lt;span&gt;   # 本机大约几分钟&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; -m&lt;/span&gt;&lt;span&gt; 755&lt;/span&gt;&lt;span&gt; target/release/rtk&lt;/span&gt;&lt;span&gt; ~/.local/bin/rtk&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; -m&lt;/span&gt;&lt;span&gt; 755&lt;/span&gt;&lt;span&gt; target/release/rtk&lt;/span&gt;&lt;span&gt; /usr/local/bin/rtk&lt;/span&gt;&lt;span&gt;   # gateway PATH 更稳&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;rtk&lt;/span&gt;&lt;span&gt; --version&lt;/span&gt;&lt;span&gt;   # rtk 0.43.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;源码编出来的依赖大约到 &lt;strong&gt;GLIBC_2.34&lt;/strong&gt;，本机 2.36 没问题。&lt;/p&gt;
&lt;p&gt;注意：crates.io 上还有个同名「Rust Type Kit」。装完务必：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;rtk&lt;/span&gt;&lt;span&gt; gain&lt;/span&gt;&lt;span&gt;    # 有 token 统计表头才是对的 rtk&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;对接 Hermes&lt;a href=&quot;#对接-hermes&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;# 建议先备份&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;cp&lt;/span&gt;&lt;span&gt; -a&lt;/span&gt;&lt;span&gt; ~/.hermes/config.yaml&lt;/span&gt;&lt;span&gt; ~/.hermes/config.yaml.bak.rtk&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;rtk&lt;/span&gt;&lt;span&gt; init&lt;/span&gt;&lt;span&gt; --agent&lt;/span&gt;&lt;span&gt; hermes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;会做两件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;写入 &lt;code&gt;~/.hermes/plugins/rtk-rewrite/&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;__init__.py&lt;/code&gt;：钩 &lt;code&gt;pre_tool_call&lt;/code&gt;，对 &lt;code&gt;terminal&lt;/code&gt; 调 &lt;code&gt;rtk rewrite&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugin.yaml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;config.yaml&lt;/code&gt; 加上：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;plugins&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  enabled&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;rtk-rewrite&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;插件逻辑很薄：PATH 里找不到 &lt;code&gt;rtk&lt;/code&gt; 就不注册钩子；rewrite 失败、非 &lt;code&gt;terminal&lt;/code&gt;、已经是 &lt;code&gt;rtk …&lt;/code&gt;、复合命令等——&lt;strong&gt;原命令执行&lt;/strong&gt;。不会把整机搞瘫。&lt;/p&gt;
&lt;h2&gt;踩坑 2：插件要 gateway 重启；会话里不能重启&lt;a href=&quot;#踩坑-2插件要-gateway-重启会话里不能重启&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;插件是进程启动时加载的。装完必须：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; --user&lt;/span&gt;&lt;span&gt; restart&lt;/span&gt;&lt;span&gt; hermes-gateway&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 或&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;hermes&lt;/span&gt;&lt;span&gt; gateway&lt;/span&gt;&lt;span&gt; restart&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;必须在 SSH / 本机 shell 跑。&lt;/strong&gt;&lt;br /&gt;
在 Telegram 里让 Hermes 自己 &lt;code&gt;restart gateway&lt;/code&gt;，会被拦——gateway 不能杀自己的父进程树。这是特性，不是 bug。&lt;/p&gt;
&lt;p&gt;重启后核对：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; --user&lt;/span&gt;&lt;span&gt; is-active&lt;/span&gt;&lt;span&gt; hermes-gateway&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;hermes&lt;/span&gt;&lt;span&gt; plugins&lt;/span&gt;&lt;span&gt; list&lt;/span&gt;&lt;span&gt; |&lt;/span&gt;&lt;span&gt; grep&lt;/span&gt;&lt;span&gt; rtk&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 应看到：rtk-rewrite  enabled  user&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# gateway 进程环境里也能找到 rtk&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# PATH 里应有 /usr/local/bin 或 ~/.local/bin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;验收（别只看「装上了」）&lt;a href=&quot;#验收别只看装上了&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;1）rewrite&lt;a href=&quot;#1rewrite&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;rtk&lt;/span&gt;&lt;span&gt; rewrite&lt;/span&gt;&lt;span&gt; &apos;git status&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# → rtk git status&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2）输出真的变短&lt;a href=&quot;#2输出真的变短&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;同仓库对比（数字因仓库状态会变，看趋势即可）：&lt;/p&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;命令&lt;/th&gt;&lt;th&gt;原始&lt;/th&gt;&lt;th&gt;rtk&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;git status&lt;/code&gt;&lt;/td&gt;&lt;td&gt;~618 B&lt;/td&gt;&lt;td&gt;~134 B&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;docker ps&lt;/code&gt;&lt;/td&gt;&lt;td&gt;~737 B&lt;/td&gt;&lt;td&gt;~287 B&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;3）插件钩子（不启 gateway 也能单测）&lt;a href=&quot;#3插件钩子不启-gateway-也能单测&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;# 加载 ~/.hermes/plugins/rtk-rewrite/__init__.py&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# _pre_tool_call(tool_name=&apos;terminal&apos;, args={&apos;command&apos;:&apos;git status&apos;})&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# → args[&apos;command&apos;] == &apos;rtk git status&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;4）运行时&lt;a href=&quot;#4运行时&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;hermes plugins list&lt;/code&gt; 里 &lt;strong&gt;enabled&lt;/strong&gt;，gateway &lt;strong&gt;active&lt;/strong&gt;，且 gateway 的 &lt;code&gt;PATH&lt;/code&gt; 能 &lt;code&gt;which rtk&lt;/code&gt;。&lt;br /&gt;
缺 PATH 时插件 fail-open，看起来像「装了但没生效」。&lt;/p&gt;
&lt;h2&gt;它不会帮你什么&lt;a href=&quot;#它不会帮你什么&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;写清楚边界，免得期待错位：&lt;/p&gt;





















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;会&lt;/th&gt;&lt;th&gt;不会&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;压缩 &lt;strong&gt;terminal 命令输出&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;压缩 system prompt / skills 索引&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;自动改写常见 git/docker/pytest…&lt;/td&gt;&lt;td&gt;改写 &lt;code&gt;read_file&lt;/code&gt; / &lt;code&gt;search_files&lt;/code&gt; 等内置工具&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;fail-open，坏了还能用&lt;/td&gt;&lt;td&gt;替代 &lt;code&gt;compression.threshold&lt;/code&gt;、裁 MCP 等整体 token 治理&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;和「压缩阈值调到 0.5」「关掉 0 调用的大 MCP」是&lt;strong&gt;互补&lt;/strong&gt;关系，不是二选一。&lt;/p&gt;
&lt;h2&gt;卸载&lt;a href=&quot;#卸载&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;rtk&lt;/span&gt;&lt;span&gt; init&lt;/span&gt;&lt;span&gt; --uninstall&lt;/span&gt;&lt;span&gt; --agent&lt;/span&gt;&lt;span&gt; hermes&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 需要的话再删二进制&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# rm -f ~/.local/bin/rtk /usr/local/bin/rtk&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;小结&lt;a href=&quot;#小结&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;RTK 值得接 Hermes&lt;/strong&gt;：官方插件、路径清晰、对 terminal 重用户收益直观。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;aarch64 + 旧 glibc 别死磕预编译&lt;/strong&gt;，直接 &lt;code&gt;cargo build --release&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;双路径安装&lt;/strong&gt;（&lt;code&gt;~/.local/bin&lt;/code&gt; + &lt;code&gt;/usr/local/bin&lt;/code&gt;）省得 gateway PATH 踩坑。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;gateway 在会话外重启&lt;/strong&gt;，再用 &lt;code&gt;plugins list&lt;/code&gt; + 一次真实 &lt;code&gt;git status&lt;/code&gt; 验收。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;折腾半下午，换来的是以后每一次 &lt;code&gt;docker ps&lt;/code&gt; 少塞一截废话进上下文——对长期挂着的 agent 来说，这比再装一百个 skill 实在。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;事实基于本机 2026-07-15 实装记录；版本与路径以你环境为准。欢迎 star &lt;a href=&quot;https://github.com/rtk-ai/rtk&quot;&gt;rtk&lt;/a&gt; 和 &lt;a href=&quot;https://github.com/NousResearch/hermes-agent&quot;&gt;Hermes&lt;/a&gt;，不欢迎催更本站。&lt;/em&gt;&lt;/p&gt;</content:encoded><category>category:笔记</category><category>tag:Hermes</category><category>tag:RTK</category><category>tag:AI Agent</category><category>tag:运维</category><category>tag:token</category></item><item><title>使用wrangler创建hono的Worker</title><link>https://blog.xn--ug8h.eu.org/post/note/%E4%BD%BF%E7%94%A8wrangler%E5%88%9B%E5%BB%BAhono%E7%9A%84worker</link><guid isPermaLink="false">note/使用wrangler创建hono的worker</guid><description>Cloudflare Workers 是 Cloudflare 提供的一项服务，它允许您在 Cloudflare 的全球网络边缘运行 JavaScript</description><pubDate>Wed, 11 Dec 2024 04:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;如何使用Cloudflare Workers&lt;a href=&quot;#如何使用cloudflare-workers&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Cloudflare Workers 是 Cloudflare 提供的一项服务，它允许您在 Cloudflare 的全球网络边缘运行 JavaScript (和其他兼容 WebAssembly 的语言) 代码。这意味着您可以编写代码，它会在接近用户的位置执行，从而降低延迟并提高性能。Workers 特别适合构建各种网络应用程序和API，以及修改现有的网站请求和响应。&lt;/p&gt;
&lt;h4&gt;1. 安装Wrangler环境&lt;a href=&quot;#1-安装wrangler环境&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; install&lt;/span&gt;&lt;span&gt; -g&lt;/span&gt;&lt;span&gt; @cloudflare/wrangler&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;2. 用户认证&lt;a href=&quot;#2-用户认证&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;npx&lt;/span&gt;&lt;span&gt; wrangler&lt;/span&gt;&lt;span&gt; login&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;3. 新建项目&lt;a href=&quot;#3-新建项目&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;在 Cloudflare Workers 控制台创建一个新项目，或者在本地使用 wrangler（Cloudflare Workers 的命令行工具）生成一个新的项目：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;npx&lt;/span&gt;&lt;span&gt; wrangler&lt;/span&gt;&lt;span&gt; generate&lt;/span&gt;&lt;span&gt; my-worker&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; my-worker&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;4. 安装Hono&lt;a href=&quot;#4-安装hono&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Hono 是一个适用于 Cloudflare Workers 的极简和高效的 Web 框架，它提供了一系列易于使用的 API 和中间件，使得在 Cloudflare Workers 上构建 Web 应用程序和 API 变得更加简单和直观。&lt;/p&gt;
&lt;p&gt;如果你在本地开发，可以通过 npm 安装 Hono：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; install&lt;/span&gt;&lt;span&gt; hono&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;5. 编写代码&lt;a href=&quot;#5-编写代码&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Hono 适用于那些需要在 Cloudflare Workers 上快速开发 Web 应用和 API 的场景。无论是构建完整的 Web 应用、API 服务、处理 Webhooks，还是实现自定义的请求处理逻辑，Hono 都是一个理想的选择.&lt;/p&gt;
&lt;p&gt;使用 Hono，你可以像构建常规的 Web 应用一样来编写你的 Workers 脚本。下面是一个基本的示例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; {Hono} &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &quot;hono&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; app&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Hono&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;app.&lt;/span&gt;&lt;span&gt;get&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;/&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;async&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;c&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	return&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Response&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Hello, World with Hono!&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;})&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; default&lt;/span&gt;&lt;span&gt; app;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在这个示例中，我们创建了一个 Hono 应用，并定义了一个处理根 URL (/) 的 GET 请求的路由。当访问该路由时，它将返回文本 “Hello, World with Hono!”。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ 虽然 Hono 是为 Cloudflare Workers 优化的，但在编写复杂逻辑时仍需注意性能和资源使用情况，以确保在 Workers 的限制内运行。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;6.本地调试&lt;a href=&quot;#6本地调试&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;使用 Cloudflare Workers 的内置工具或者 wrangler 来测试和调试你的应用：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; run&lt;/span&gt;&lt;span&gt; start&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;7.上传项目&lt;a href=&quot;#7上传项目&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;当你的应用准备好后，你可以使用 Cloudflare 控制台或 wrangler 将其部署到 Cloudflare Workers。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; run&lt;/span&gt;&lt;span&gt; deploy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
</content:encoded><category>category:笔记</category><category>tag:cloudflare</category></item><item><title>以 Serverless 的方式部署 Trojan</title><link>https://blog.xn--ug8h.eu.org/post/note/%E4%BB%A5serverless%E7%9A%84%E6%96%B9%E5%BC%8F%E9%83%A8%E7%BD%B2trojan</link><guid isPermaLink="false">note/以serverless的方式部署trojan</guid><description>1. cloudflare账户</description><pubDate>Sun, 05 May 2024 04:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;准备材料&lt;a href=&quot;#准备材料&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;cloudflare&lt;/code&gt;账户&lt;/li&gt;
&lt;li&gt;一个&lt;code&gt;域名&lt;/code&gt;，没有也没关系，下面会教你如何白嫖域名。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;获取域名&lt;a href=&quot;#获取域名&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;如果已经拥有域名，或配置订阅后能够正常使用，可以跳过这一步骤。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;1.访问&lt;a href=&quot;https://www.cloudns.net&quot;&gt;cloudns&lt;/a&gt;，注册或登录账号。&lt;/p&gt;
&lt;p&gt;2.在DNS Host页面选择&lt;code&gt;create zone&lt;/code&gt;,点击&lt;code&gt;Free zone&lt;/code&gt;&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic2.ziyuan.wang/user/tistzach/2024/05/IMG_4444_947046ed5abec.jpeg&quot; alt=&quot;IMG_4444.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_4444.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;3.输入自己喜欢的域名，点击&lt;code&gt;Create&lt;/code&gt;&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic2.ziyuan.wang/user/tistzach/2024/05/IMG_4445_94aa5dbe309f3.jpeg&quot; alt=&quot;IMG_4445.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_4445.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;4.创建完成后，先把这个域名放到一边，进行下面的部署操作。&lt;/p&gt;
&lt;h2&gt;部署&lt;a href=&quot;#部署&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;1.登录Cloudflare，在左边的侧边栏选择Workers和Pages，点击进入worker概述页面。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic2.ziyuan.wang/user/tistzach/2024/05/IMG_4432_aa4b1e6f8d9c7.jpeg&quot; alt=&quot;IMG_4432.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_4432.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;2.点击创建应用程序按钮，选择创建新的page项目&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic2.ziyuan.wang/user/tistzach/2024/05/IMG_4433_1411ec3f63a02.jpeg&quot; alt=&quot;IMG_4433.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_4433.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;3.输入项目名称，上传&lt;a href=&quot;https://gist.githubusercontent.com/Sliverkiss/e756e7712b7b6da843f9e28a1a2933fc/raw/_worker.js&quot;&gt;_worker.js&lt;/a&gt;文件,完成创建page项目。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic2.ziyuan.wang/user/tistzach/2024/05/IMG_4434_c8b43296df7a5.jpeg&quot; alt=&quot;IMG_4434.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_4434.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;4.进入创建好的page管理页面，选择自定义域，点击右上角的设置自定义域按钮，输入准备好的域名，并点击继续&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic2.ziyuan.wang/user/tistzach/2024/05/IMG_4435_c2a32bab3ab5c.jpeg&quot; alt=&quot;IMG_4435.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_4435.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;5.确认DNS记录，选择激活域&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic2.ziyuan.wang/user/tistzach/2024/05/IMG_4436_57f0f7b9d32e9.jpeg&quot; alt=&quot;IMG_4436.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_4436.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;6.点击检查DNS记录，等待几分钟，直到验证完成&lt;/p&gt;
&lt;p&gt;7.验证完成效果图如下&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic2.ziyuan.wang/user/tistzach/2024/05/IMG_4438_f8b174b47914c.jpeg&quot; alt=&quot;IMG_4438.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_4438.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;8.访问&lt;a href=&quot;https://%E5%88%9A%E5%88%9A%E7%BB%91%E5%AE%9A%E7%9A%84%E5%9F%9F%E5%90%8D/sub,%E8%8E%B7%E5%8F%96%E8%8A%82%E7%82%B9%E8%AE%A2%E9%98%85&quot;&gt;https://刚刚绑定的域名/sub,获取节点订阅&lt;/a&gt;&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic2.ziyuan.wang/user/tistzach/2024/05/IMG_4439_139813bd53d4e.jpeg&quot; alt=&quot;IMG_4439.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_4439.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h3&gt;CloudNs域名绑定Page&lt;a href=&quot;#cloudns域名绑定page&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;如果没有进行之前的注册CloudNs域名操作，可以跳过这一步骤。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;1.在之前的添加自定义域页面，输入之前注册的&lt;code&gt;CloudNs&lt;/code&gt;域名，需要添加前缀。如：你注册的域名为&lt;code&gt;aaa.cloudns.ch&lt;/code&gt;，则在自定义域输入&lt;code&gt;xxx.aaa.cloudns.ch&lt;/code&gt;,其中&lt;code&gt;xxx&lt;/code&gt;可以随意输入。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic2.ziyuan.wang/user/tistzach/2024/05/IMG_4435_c2a32bab3ab5c.jpeg&quot; alt=&quot;IMG_4435.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_4435.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;2.重复之前的激活域操作。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic2.ziyuan.wang/user/tistzach/2024/05/IMG_4436_57f0f7b9d32e9.jpeg&quot; alt=&quot;IMG_4436.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_4436.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;3.点击检查DNS记录，单击复制&lt;code&gt;目标内容&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;4.打开&lt;a href=&quot;https://www.cloudns.net&quot;&gt;cloudns&lt;/a&gt;，进入之前注册域名的管理界面，点击&lt;code&gt;Add new record&lt;/code&gt;按钮&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic2.ziyuan.wang/user/tistzach/2024/05/IMG_4446_2dbe4b8b0adb2.jpeg&quot; alt=&quot;IMG_4446.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_4446.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;5.将&lt;code&gt;Type&lt;/code&gt;选择为&lt;code&gt;CName&lt;/code&gt;，并在host输入之前自定义域的前缀。如&lt;code&gt;xxx.aaa.cloudns.ch&lt;/code&gt;,前缀则为&lt;code&gt;xxx&lt;/code&gt;，&lt;code&gt;Point to&lt;/code&gt;输入之前第三步复制的&lt;code&gt;目标&lt;/code&gt;内容，最后点击&lt;code&gt;Save&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;6.返回Page管理页面，再次点击检查DNS记录，等待完成验证。&lt;/p&gt;
&lt;p&gt;7.验证完成效果图如下&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic2.ziyuan.wang/user/tistzach/2024/05/IMG_4438_f8b174b47914c.jpeg&quot; alt=&quot;IMG_4438.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_4438.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h3&gt;裂变ip&lt;a href=&quot;#裂变ip&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;1.打开&lt;code&gt;Sub-Store&lt;/code&gt;,点击右下角的+号。如果不知道&lt;code&gt;Sub-Store&lt;/code&gt;是什么，可以考虑跳过后面的步骤。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic2.ziyuan.wang/user/tistzach/2024/05/IMG_2256_8a6f6b652c65d.jpeg&quot; alt=&quot;IMG_2256.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_2256.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;2.选择导入配置，需要导入的配置文件为&lt;a href=&quot;https://gist.githubusercontent.com/Sliverkiss/298d1410dfbeb3b6882e23d9e616a525/raw/cf-trojan.json&quot;&gt;cf-trojan.json&lt;/a&gt;&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic2.ziyuan.wang/user/tistzach/2024/05/IMG_4447_87e2b613ff9cb.jpeg&quot; alt=&quot;IMG_4447.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_4447.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;3.选择需要使用的节点区域。裂变的节点很多，不建议选择太多区域，一个就好。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic2.ziyuan.wang/user/tistzach/2024/05/IMG_4448_de032879395df.jpeg&quot; alt=&quot;IMG_4448.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_4448.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;4.将脚本操作中的&lt;code&gt;_______.com&lt;/code&gt;全部更改为自己刚刚绑定的自定义域名。如&lt;code&gt;xxx.aaa.cloudns.ch&lt;/code&gt;。将&lt;code&gt;proxyip.sg.fxxk.dedyn.io&lt;/code&gt;中的&lt;code&gt;sg&lt;/code&gt;字段修改为所选区域，如&lt;code&gt;hk&lt;/code&gt;、&lt;code&gt;JP&lt;/code&gt;等。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic2.ziyuan.wang/user/tistzach/2024/05/IMG_4449_eea96d365d058.jpeg&quot; alt=&quot;IMG_4449.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_4449.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;5.最后点击底部的保存，复制订阅链接，导入代理软件即可享用。&lt;/p&gt;
&lt;h3&gt;相关问题解答&lt;a href=&quot;#相关问题解答&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;如果获取了订阅之后，出现ping不通的情况，可以分别尝试以下操作：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;更换代理软件的测速链接，如&lt;code&gt;http://1.0.0.1/favicon.ico&lt;/code&gt;、&lt;code&gt;http://www.gstatic.com/generate_204&lt;/code&gt;、&lt;code&gt;http://www.apple.com/generate_204&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;更换域名&lt;/li&gt;
&lt;li&gt;关闭WIFI，切换为流量，即更换运营商。&lt;/li&gt;
&lt;li&gt;不用&lt;/li&gt;
&lt;/ol&gt;
</content:encoded><category>category:笔记</category><category>tag:cloudflare</category></item><item><title>Alist简易美化（一）</title><link>https://blog.xn--ug8h.eu.org/post/note/alist%E7%AE%80%E6%98%93%E7%BE%8E%E5%8C%96%E4%B8%80</link><guid isPermaLink="false">note/alist简易美化一</guid><description>记录一次简单美化Alist网盘的过程</description><pubDate>Tue, 05 Dec 2023 04:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;“If you care about me at all, please don’t say anything to anyone. ”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;正文&lt;a href=&quot;#正文&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;之前用阿里云的服务器搭建了一个挂载了阿里云盘的Alist，并反向代理到&lt;code&gt;alist.sliverkiss.xyz&lt;/code&gt;。但由于时间过于仓促，还没来得及对alist进行美化。最近闲了下来，便打算对Alist主题进行一番整改。&lt;/p&gt;
&lt;p&gt;网盘入口：&lt;a href=&quot;http://alist.sliverkiss.xyz&quot;&gt;Alist&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Alist具体美化过程&lt;a href=&quot;#alist具体美化过程&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;首先，登录Alist，点击设置，进入全局设置页面。将美化的代码分别粘贴到自定义头部和自定义内容。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic.ziyuan.wang/2023/12/04/guest_c91b228a825c5.jpeg&quot; alt=&quot;IMG_3962.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_3962.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;自定义头部代码如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;&amp;lt;!--Alist V3建议添加的，已经默认添加了，如果你的没有建议加上--&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt; src&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://polyfill.io/v3/polyfill.min.js?features=String.prototype.replaceAll&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;!-- Font6，自定义底部使用和看板娘使用的图标和字体文件--&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;link&lt;/span&gt;&lt;span&gt; type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&apos;text/css&apos;&lt;/span&gt;&lt;span&gt; rel&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;stylesheet&quot;&lt;/span&gt;&lt;span&gt; href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://npm.elemecdn.com/font6pro@6.0.1/css/fontawesome.min.css&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  media&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&apos;all&apos;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;link&lt;/span&gt;&lt;span&gt; href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://npm.elemecdn.com/font6pro@6.0.1/css/all.min.css&quot;&lt;/span&gt;&lt;span&gt; rel&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;stylesheet&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt; src&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://eqcn.ajz.miesnfu.com/wp-content/plugins/wp-3d-pony/live2dw/lib/L2Dwidget.min.js&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;!-- 看板娘 --&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;link&lt;/span&gt;&lt;span&gt; rel&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;stylesheet&quot;&lt;/span&gt;&lt;span&gt; href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://cdn.jsdelivr.net/npm/font-awesome/css/font-awesome.min.css&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt; src&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://cdn.jsdelivr.net/gh/stevenjoezhang/live2d-widget@latest/autoload.js&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;!--音乐播放器所用的文件--&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;!-- require APlayer --&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;link&lt;/span&gt;&lt;span&gt; rel&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;stylesheet&quot;&lt;/span&gt;&lt;span&gt; href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://npm.elemecdn.com/aplayer@1.10.1/dist/APlayer.min.css&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt; src&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://npm.elemecdn.com/aplayer@1.10.1/dist/APlayer.min.js&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;!-- require MetingJS --&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt; src&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://npm.elemecdn.com/meting@2.0.1/dist/Meting.min.js&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  /* 自定义字体 */&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  @font-face&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    font-family&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&apos;PingFangSC-Semibold&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    font-weight&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;bold&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    src&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;url&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;https://thbook.top/upload/2023/01/PingFangSC-Semibold.woff2&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .body&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    font-family&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&apos;PingFangSC-Semibold&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    font-weight&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;bold&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    src&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;url&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;https://thbook.top/upload/2023/01/PingFangSC-Semibold.woff2&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .dibu&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    font-family&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&apos;PingFangSC-Semibold&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    font-weight&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;bold&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    src&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;url&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;https://thbook.top/upload/2023/01/PingFangSC-Semibold.woff2&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  /* 去除通知栏 右上角 X */&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .notify-render&lt;/span&gt;&lt;span&gt; .hope-close-button&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    display&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;none&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  /*白天背景图*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .hope-ui-light&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    background-image&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;url&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;https://images6.alphacoders.com/132/1327487.png&quot;&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;!important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    background-size&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;cover&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    background-repeat&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;no-repeat&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    background-attachment&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;fixed&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  background: linear-gradient(to bottom, &lt;/span&gt;&lt;span&gt;#D5DEE7&lt;/span&gt;&lt;span&gt; 0%, &lt;/span&gt;&lt;span&gt;#E8EBF2&lt;/span&gt;&lt;span&gt; 50%, &lt;/span&gt;&lt;span&gt;#E2E7ED&lt;/span&gt;&lt;span&gt; 100%),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  linear-gradient(to bottom, rgba(0, 0, 0, 0&lt;/span&gt;&lt;span&gt;.02&lt;/span&gt;&lt;span&gt;) 50%, rgba(255, 255, 255, 0&lt;/span&gt;&lt;span&gt;.02&lt;/span&gt;&lt;span&gt;) 61%, rgba(0, 0, 0, 0&lt;/span&gt;&lt;span&gt;.02&lt;/span&gt;&lt;span&gt;) 73%),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  linear-gradient(33deg, rgba(255, 255, 255, 0&lt;/span&gt;&lt;span&gt;.20&lt;/span&gt;&lt;span&gt;) 0%, rgba(0, 0, 0, 0&lt;/span&gt;&lt;span&gt;.20&lt;/span&gt;&lt;span&gt;) 100%);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  background-blend-mode&lt;/span&gt;&lt;span&gt;: normal,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  color-burn&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  /*夜间背景图*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .hope-ui-dark&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    background-image&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;url&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;https://images2.alphacoders.com/743/743487.jpg&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;!important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    background-repeat&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;no-repeat&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    background-size&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;cover&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    background-attachment&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;fixed&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    background-position-x&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;center&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  /*主列表透明*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .obj-box.hope-stack.hope-c-dhzjXW.hope-c-PJLV.hope-c-PJLV-igScBhH-css&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    background-color&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;rgba&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0.5&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;!important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  /*readme透明*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .hope-c-PJLV.hope-c-PJLV-ikSuVsl-css&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    background-color&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;rgba&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0.5&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;!important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  /*顶部右上角切换按钮透明*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .hope-c-ivMHWx-hZistB-cv.hope-icon-button&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    background-color&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;rgba&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0.3&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;!important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  /*右下角侧边栏按钮透明*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .hope-c-PJLV-ijgzmFG-css&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    background-color&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;rgba&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0.5&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;!important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  /*白天模式代码块透明*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .hope-ui-light&lt;/span&gt;&lt;span&gt; pre&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    background-color&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;rgba&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0.1&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;!important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  /*夜间模式代码块透明*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .hope-ui-dark&lt;/span&gt;&lt;span&gt; pre&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    background-color&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;rgba&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;!important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  /*底部CSS，.APP .tanle这三个一起的*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  dibu {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    border-top&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    position&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;absolute&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    bottom&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    width&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    margin&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    padding&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .App&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    min-height&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;vh&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .table&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    margin&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;auto&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  /*去掉底部*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .footer&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    display&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;none&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  /*渐变背景CSS*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  #canvas-basic&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    position&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;fixed&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    display&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;block&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    width&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    height&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    top&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    right&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    bottom&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    left&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    z-index&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;-999&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .hope-c-PJLV-ihKMwLA-css&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    conent&lt;/span&gt;&lt;span&gt; flex-direction&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;row&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    align-items&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;center&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    height&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    width&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;200&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;自定义内容代码如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;&amp;lt;!--延迟加载--&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;!--如果要写自定义内容建议都加到这个延迟加载的范围内--&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;customize&quot;&lt;/span&gt;&lt;span&gt; style&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;display: none;&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    &amp;lt;!--音乐播放器--&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    &amp;lt;&lt;/span&gt;&lt;span&gt;meting-js&lt;/span&gt;&lt;span&gt; fixed&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;true&quot;&lt;/span&gt;&lt;span&gt; autoplay&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;false&quot;&lt;/span&gt;&lt;span&gt; theme&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;#409EFF&quot;&lt;/span&gt;&lt;span&gt; list-folded&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;true&quot;&lt;/span&gt;&lt;span&gt; auto&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;QQ音乐或者网易云的链接&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;meting-js&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    &amp;lt;&lt;/span&gt;&lt;span&gt;br&lt;/span&gt;&lt;span&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    &amp;lt;&lt;/span&gt;&lt;span&gt;center&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;dibu&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; style&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot; line-height: 20px;font-size: 11pt;font-weight: bold;&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    &amp;lt;&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt; style&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;color:#F0FFF0; font-weight: bold;&quot;&lt;/span&gt;&lt;span&gt; id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;hitokoto&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                        &amp;lt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt; href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;#&quot;&lt;/span&gt;&lt;span&gt; id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;hitokoto_text&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                            &quot;人生最大的遗憾,就是在最无能为力的时候遇到一个想要保护一生的人.&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                        &amp;lt;/&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    &amp;lt;/&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        &amp;lt;/&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt; style&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;color:#F0FFF0; font-size: 12px font-weight: bold;&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt; href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt; target&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;_blank&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;Power of Sliverkiss&amp;lt;/&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &amp;lt;/&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; style&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;color:#F0FFF0;&lt;/span&gt;&lt;span&gt;&quot;font-size:&lt;/span&gt;&lt;span&gt; 12px;&lt;/span&gt;&lt;span&gt; font-weight:&lt;/span&gt;&lt;span&gt; bold;&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        &amp;lt;!-- &amp;lt;span class=&quot;nav-item&quot;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    &amp;lt;a class=&quot;nav-link&quot; href=&quot;tencent://AddContact/?fromId=50&amp;amp;fromSubId=1&amp;amp;subcmd=all&amp;amp;uin=467234849&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                        target=&quot;_blank&quot;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                        &amp;lt;i class=&quot;e-halo-icon e-halo-icon-yuwen&quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                        &amp;lt;/i&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                       github |&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    &amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                &amp;lt;/span&amp;gt; --&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;nav-item&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    &amp;lt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;nav-link&quot;&lt;/span&gt;&lt;span&gt; href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;tistzach@gmail.com&quot;&lt;/span&gt;&lt;span&gt; target&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;_blank&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                        &amp;lt;&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;e-halo-icon e-halo-icon-MAILBOX&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                        邮箱 |&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    &amp;lt;/&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                &amp;lt;/&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;nav-item&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    &amp;lt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;nav-link&quot;&lt;/span&gt;&lt;span&gt; href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;http://sliverkiss.free.hr&quot;&lt;/span&gt;&lt;span&gt; target&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;_blank&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    &amp;lt;&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;e-halo-icon e-halo-icon-yuwen&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                        博客 |&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    &amp;lt;/&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                &amp;lt;/&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;nav-item&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    &amp;lt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;nav-link&quot;&lt;/span&gt;&lt;span&gt; href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://t.me/sliverkiss&quot;&lt;/span&gt;&lt;span&gt; target&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;_blank&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                         &amp;lt;&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;e-halo-icon e-halo-icon-heiban&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                        Telegram |&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    &amp;lt;/&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                &amp;lt;/&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;nav-item&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    &amp;lt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;nav-link&quot;&lt;/span&gt;&lt;span&gt; href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt; target&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;_blank&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                        &amp;lt;&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;e-halo-icon e-halo-icon-cunchu&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                        云盘 |&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    &amp;lt;/&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                &amp;lt;/&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        &amp;lt;!--后台入口--&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;nav-item&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    &amp;lt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;nav-link&quot;&lt;/span&gt;&lt;span&gt; href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;/@manage&quot;&lt;/span&gt;&lt;span&gt; target&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;_blank&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                     &amp;lt;&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;e-halo-icon e-halo-icon-keyanxiangmu&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                        管理 &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    &amp;lt;/&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                &amp;lt;/&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        &amp;lt;!--版权，请尊重作者--&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        &amp;lt;!--&amp;lt;span class=&quot;nav-item&quot;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    &amp;lt;a class=&quot;nav-link&quot; href=&quot;https://github.com/Xhofe/alist&quot; target=&quot;_blank&quot;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                        &amp;lt;i class=&quot;fa-solid fa-copyright&quot; style=&quot;color:#409EFF;&quot; aria-hidden=&quot;true&quot;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                        &amp;lt;/i&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                        Alist&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    &amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                &amp;lt;/span&amp;gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;br&lt;/span&gt;&lt;span&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    &amp;lt;/&lt;/span&gt;&lt;span&gt;center&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    &amp;lt;&lt;/span&gt;&lt;span&gt;br&lt;/span&gt;&lt;span&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    &amp;lt;&lt;/span&gt;&lt;span&gt;br&lt;/span&gt;&lt;span&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &amp;lt;!--一言API--&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt; src&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://v1.hitokoto.cn/?encode=js&amp;amp;select=%23hitokoto&quot;&lt;/span&gt;&lt;span&gt; defer&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &amp;lt;!--鼠标点击效果--&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt; src&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://cdn.jsdelivr.net/gh/TRHX/CDN-for-itrhx.com@3.0.8/js/maodian.js&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &amp;lt;!--运行时间--&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt; type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;text/javascript&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    function&lt;/span&gt;&lt;span&gt; show_runtime&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        window.&lt;/span&gt;&lt;span&gt;setTimeout&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;show_runtime()&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1000&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        X&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Date&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;8/24/2022 10:28:00&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        Y&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Date&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        T&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;Y&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getTime&lt;/span&gt;&lt;span&gt;() &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; X&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getTime&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        M&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; 24&lt;/span&gt;&lt;span&gt; *&lt;/span&gt;&lt;span&gt; 60&lt;/span&gt;&lt;span&gt; *&lt;/span&gt;&lt;span&gt; 60&lt;/span&gt;&lt;span&gt; *&lt;/span&gt;&lt;span&gt; 1000&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        a &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; T&lt;/span&gt;&lt;span&gt; /&lt;/span&gt;&lt;span&gt; M&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        A&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; Math.&lt;/span&gt;&lt;span&gt;floor&lt;/span&gt;&lt;span&gt;(a);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        b &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (a &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; A&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; 24&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        B&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; Math.&lt;/span&gt;&lt;span&gt;floor&lt;/span&gt;&lt;span&gt;(b);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (b &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; B&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; 60&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        C&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; Math.&lt;/span&gt;&lt;span&gt;floor&lt;/span&gt;&lt;span&gt;((b &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; B&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; 60&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        D&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; Math.&lt;/span&gt;&lt;span&gt;floor&lt;/span&gt;&lt;span&gt;((c &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; C&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; 60&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        runtime_span.innerHTML &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &quot;本站已运行 &quot;&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; A&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; &quot;天&quot;&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; B&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; &quot;小时&quot;&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; C&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; &quot;分&quot;&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; D&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; &quot;秒&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    show_runtime&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &amp;lt;!--延迟加载范围到这里结束--&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;!--延迟加载配套使用JS--&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  let&lt;/span&gt;&lt;span&gt; interval &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; setInterval&lt;/span&gt;&lt;span&gt;(() &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; (document.&lt;/span&gt;&lt;span&gt;querySelector&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;.footer&quot;&lt;/span&gt;&lt;span&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            document.&lt;/span&gt;&lt;span&gt;querySelector&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;#customize&quot;&lt;/span&gt;&lt;span&gt;).style.display &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &quot;&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            clearInterval&lt;/span&gt;&lt;span&gt;(interval);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }, &lt;/span&gt;&lt;span&gt;200&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt; id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;runtime_span&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;!-- 渐变背景初始化,如果要使用渐变背景把下面的那一行注释去掉即可--&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;!-- 下面的几行都是渐变的一套,自定义头部内还有一个关联的自定义CSS --&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;!--&amp;lt;canvas id=&quot;canvas-basic&quot;&amp;gt;&amp;lt;/canvas&amp;gt; --&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt; src&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://npm.elemecdn.com/granim@2.0.0/dist/granim.min.js&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  var&lt;/span&gt;&lt;span&gt; granimInstance &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Granim&lt;/span&gt;&lt;span&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    element: &lt;/span&gt;&lt;span&gt;&apos;#canvas-basic&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    direction: &lt;/span&gt;&lt;span&gt;&apos;left-right&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    isPausedWhenNotInView: &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    states : {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        &quot;default-state&quot;&lt;/span&gt;&lt;span&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            gradients: [&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                [&lt;/span&gt;&lt;span&gt;&apos;#a18cd1&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;#fbc2eb&apos;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                 [&lt;/span&gt;&lt;span&gt;&apos;#fff1eb&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;#ace0f9&apos;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                 [&lt;/span&gt;&lt;span&gt;&apos;#d4fc79&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;#96e6a1&apos;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                 [&lt;/span&gt;&lt;span&gt;&apos;#a1c4fd&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;#c2e9fb&apos;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                 [&lt;/span&gt;&lt;span&gt;&apos;#a8edea&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;#fed6e3&apos;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                 [&lt;/span&gt;&lt;span&gt;&apos;#9890e3&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;#b1f4cf&apos;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                 [&lt;/span&gt;&lt;span&gt;&apos;#a1c4fd&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;#c2e9fb&apos;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                 [&lt;/span&gt;&lt;span&gt;&apos;#fff1eb&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&apos;#ace0f9&apos;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;           &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            ]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;!---去掉底部文字---&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt; type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;text/css&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .footer&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    display&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;none&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;!---去掉.hope-c-PJLV-iicyfOA-css规则---&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt; type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;text/css&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .hope-c-PJLV-iicyfOA-css&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    width&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;min&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;980&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;!---重写.hope-c-PJLV-iicyfOA-css规则---&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt; type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;text/css&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .hope-c-PJLV-iicyfOA-css&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    width&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;min&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;!---去掉.hope-c-PJLV-iicyfOA-css规则---&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt; type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;text/css&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .hope-c-PJLV-ibwASZs-css&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    margin-right&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--hope-space-2&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    width&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--hope-sizes-12&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    height&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--hope-sizes-12&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;!---重写.hope-c-PJLV-ibwASZs-css 规则---&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  .hope-c-PJLV-ibwASZs-css&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    /*margin-right: var(--hope-space-2);*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    width&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;160&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    height&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--hope-sizes-12&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果觉得网盘展示内容过于空荡，可以在元信息新建路径，为相应的路径添加md顶部说明以及说明。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic.ziyuan.wang/2023/12/04/guest_3958d55d0d313.jpeg&quot; alt=&quot;IMG_3963.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_3963.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;我在首页添加了一个公告显示。代码如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;### 公告&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;该网盘仅供学习交流，请勿用于商业、盈利等用途。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;美化结果&lt;a href=&quot;#美化结果&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;最终美化完成的页面如下所示：&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic.ziyuan.wang/2023/12/04/guest_301d314953398.jpeg&quot; alt=&quot;IMG_3960.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_3960.jpeg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h3&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
</content:encoded><category>category:笔记</category><category>tag:Code</category></item><item><title>UNRAID无公网ip搭建Cloudflare Zero trust隧道穿透反向代理</title><link>https://blog.xn--ug8h.eu.org/post/note/unraid%E6%97%A0%E5%85%AC%E7%BD%91ip%E6%90%AD%E5%BB%BAcloudflare-zero-trust%E9%9A%A7%E9%81%93%E7%A9%BF%E9%80%8F%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86</link><guid isPermaLink="false">note/unraid无公网ip搭建cloudflare-zero-trust隧道穿透反向代理</guid><description>记录一次将没有公网ip的本地服务器通过cloudlfare内网穿透到公网的过程</description><pubDate>Mon, 04 Dec 2023 04:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;“If you care about me at all, please don’t say anything to anyone. ”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;碎碎念&lt;a href=&quot;#碎碎念&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;前阵子申请的几个&lt;code&gt;free.hr&lt;/code&gt;域名还没用完，趁着这几天有空，便想着让自己的unraid内网穿透，实现随时随地都能访问。&lt;/p&gt;
&lt;h3&gt;准备条件&lt;a href=&quot;#准备条件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;一个任意域名，并使用Cloudflare进行DNS解析&lt;/li&gt;
&lt;li&gt;一台家庭网络无公网IPv4，且有远程穿透链接家庭服务需求的本地服务器&lt;/li&gt;
&lt;li&gt;一个Zero Trust账户,具体如何申请，详见&lt;a href=&quot;https://blog.misaka.rest/2023/02/08/cf-teams/?highlight=warp&quot;&gt;申请CloudFlare Teams(Zero Trust)账户教程&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Cloudflare Zero Trust配置&lt;a href=&quot;#cloudflare-zero-trust配置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;首先登录&lt;code&gt;cloudflare&lt;/code&gt;,进入Cloudflare Zero Trust页面,点击&lt;code&gt;Access&lt;/code&gt;-&amp;gt;&lt;code&gt;Tunnels&lt;/code&gt;创建一个新的隧道。&lt;/li&gt;
&lt;li&gt;输入任意隧道名称，点击&lt;code&gt;Save tunel&lt;/code&gt;保存。&lt;/li&gt;
&lt;li&gt;进入隧道配置页面，复制Docker配置&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;tunnel&lt;/span&gt;&lt;span&gt; --no-autoupdate&lt;/span&gt;&lt;span&gt; run&lt;/span&gt;&lt;span&gt; --token&lt;/span&gt;&lt;span&gt; 你的token&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic.ziyuan.wang/2023/12/04/guest_acfb40ea13f3a.png&quot; alt=&quot;IMG_3952.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_3952.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h3&gt;UNRAID端配置cloudflared&lt;a href=&quot;#unraid端配置cloudflared&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;登录进入UNRAID，在应用市场搜索&lt;code&gt;cloudflared&lt;/code&gt;，选择&lt;code&gt;aeleo&lt;/code&gt;的库，点击安装。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic.ziyuan.wang/2023/12/04/guest_46a3393691196.png&quot; alt=&quot;IMG_3953.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_3953.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;修改容器配置，开启高级视图，将存储库修改为&lt;code&gt;cloudflare/cloudflared:latest&lt;/code&gt;，获取最新版本，并添加发布参数&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;tunnel&lt;/span&gt;&lt;span&gt; --no-autoupdate&lt;/span&gt;&lt;span&gt; run&lt;/span&gt;&lt;span&gt; --token&lt;/span&gt;&lt;span&gt; 你的token&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic.ziyuan.wang/2023/12/04/guest_e96ab60ff4ea1.png&quot; alt=&quot;IMG_3954.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_3954.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;完成配置后，返回Cloudflare Zero Trust页面，等待1～2分钟，此时的隧道状态变为&lt;code&gt;HEALTHY&lt;/code&gt;，说明隧道配置已完成。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic.ziyuan.wang/2023/12/04/guest_ee952a0cb77b0.png&quot; alt=&quot;IMG_3955.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_3955.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h3&gt;完成隧道配置，设置反向代理&lt;a href=&quot;#完成隧道配置设置反向代理&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;进入隧道配置页面，创建新的&lt;code&gt;public hostname&lt;/code&gt;，设置反向代理。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://pic.ziyuan.wang/2023/12/04/guest_e4745511429e8.png&quot; alt=&quot;IMG_3956.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;IMG_3956.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h3&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;unraid配置隧道+反向代理操作比较简单，10分钟就能完成所有操作。在设置反向代理时，unraid的面板是通过https进行访问的，需要在unraid自行配置stl证书等相关设置，才能正常访问，我目前还能找到办法解决，只能暂留以后再进行研究了&lt;/p&gt;
</content:encoded><category>category:笔记</category><category>tag:Code</category></item><item><title>github博客绑定域名</title><link>https://blog.xn--ug8h.eu.org/post/note/github%E5%8D%9A%E5%AE%A2%E7%BB%91%E5%AE%9A%E5%9F%9F%E5%90%8D</link><guid isPermaLink="false">note/github博客绑定域名</guid><description>记录一次将github的静态博客绑定到自己的域名的过程</description><pubDate>Sat, 25 Nov 2023 04:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;“If you care about me at all, please don’t say anything to anyone. ”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;▎正文&lt;a href=&quot;#正文&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;前几天在活动中申请了几个免费的域名，便想着给自己的静态博客挂一个域名。这里简单的记录一下将github博客绑定到自己域名的过程。&lt;/p&gt;
&lt;h5&gt;步骤一&lt;a href=&quot;#步骤一&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;在github博客仓库下创建一个名为CNAME的文件，并在其中填入要绑定的域名地址，如&lt;code&gt;sliverkiss.free.hr&lt;/code&gt;。&lt;/p&gt;
&lt;h5&gt;步骤二&lt;a href=&quot;#步骤二&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;进入github博客仓库，点击&lt;code&gt;settings&lt;/code&gt;,查看&lt;code&gt;Custom domian&lt;/code&gt;是否已经填写并保存。通常完成步骤一后会自动保存。&lt;/p&gt;
&lt;h5&gt;步骤三&lt;a href=&quot;#步骤三&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;域名解析，由于我的域名是通过&lt;code&gt;cloudflare&lt;/code&gt;解析的，所以需要登录cloudflare，点击网站选项，选择想要绑定的域名。在DNS解析选项中添加相应的记录&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;类型    名称           目标&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;CNAME   www  sliverkiss.github.io&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;CNAME    @   sliverkiss.github.io&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;配置完成后，等待1～2min直到DNS解析完毕，便可以通过域名&lt;code&gt;sliverkiss.free.hr&lt;/code&gt;访问原来的博客&lt;code&gt;sliverkiss.github.io&lt;/code&gt;了&lt;/p&gt;
</content:encoded><category>category:笔记</category><category>tag:Code</category></item><item><title>Hax主机折腾从入门到如土（一）</title><link>https://blog.xn--ug8h.eu.org/post/note/hax%E4%B8%BB%E6%9C%BA%E6%8A%98%E8%85%BE%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E5%A6%82%E5%9C%9F%E4%B8%80</link><guid isPermaLink="false">note/hax主机折腾从入门到如土一</guid><description>记录一次曲折的ipv6机器折腾记录</description><pubDate>Sat, 18 Nov 2023 04:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;“If you care about me at all, please don’t say anything to anyone. ”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;▎简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这篇文章整理了一些领取hax的免费ipv6 vps以及如何使用的基础教程。&lt;/p&gt;
&lt;p&gt;hax本身的vps虽然不太友好，但是可以用来托管tg机器人、Whatsapp机器人、Python脚本、网络服务器、学习Linux服务器等。&lt;/p&gt;
&lt;p&gt;考虑到许多活动都有时间限制，可以通过关注论坛、加入tg群等获取最新信息。hax的站长专门为&lt;code&gt;mjj&lt;/code&gt;开了个分群&lt;a href=&quot;https://t.me/ipv6china&quot;&gt;[IPv6 Server - Chinese]&lt;/a&gt;,可以进群里学习技术（吹水）.&lt;/p&gt;
&lt;p&gt;▎官网入口：&lt;a href=&quot;https://hax.co.id&quot;&gt;hax.co.id&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;▎注意事项&lt;a href=&quot;#注意事项&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;文章仅供学习交流，请勿滥用此服务。&lt;/p&gt;
&lt;h3&gt;▎申请机器&lt;a href=&quot;#申请机器&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;注册过程中，需要关闭浏览器的广告拦截程序，如Adblock Plus等，否则网站无法打开，提示“Please disable AdBlock to access this site!”&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;关注官方的TG机器人&lt;a href=&quot;https://t.me/HaxTG_bot&quot;&gt;HaxTG_bot&lt;/a&gt;，然后发送: &lt;code&gt;/getid&lt;/code&gt;获取帐号ID&lt;/li&gt;
&lt;li&gt;注册页面填写账号ID，提交后TG会得到一个注册代码&lt;/li&gt;
&lt;li&gt;按照要求完成注册登录即可&lt;/li&gt;
&lt;li&gt;创建一台免费的VPS,成功后如下图：
&lt;figure&gt;&lt;img src=&quot;/img/hax/image_1.png&quot; alt=&quot;创建成功&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;创建成功&lt;/figcaption&gt;&lt;/figure&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;▎连接SSH&lt;a href=&quot;#连接ssh&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;由于hax提供的&lt;code&gt;VPS&lt;/code&gt;没有&lt;code&gt;IPv4&lt;/code&gt;，所以只有&lt;code&gt;IPv6&lt;/code&gt;才能登陆。可以通过&lt;a href=&quot;https://www.test-ipv6.com/&quot;&gt;ipv6-test&lt;/a&gt;检查你的网络是否支持 &lt;code&gt;IPv6&lt;/code&gt;。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用hax官网提供的 &lt;code&gt;Terminal&lt;/code&gt; 登陆,网页入口：&lt;/li&gt;
&lt;li&gt;通过&lt;code&gt;Warp&lt;/code&gt;开通&lt;code&gt;ipv6&lt;/code&gt;隧道，然后使用&lt;code&gt;ssh&lt;/code&gt;连接。具体的&lt;code&gt;Warp&lt;/code&gt;使用方法可以参考以下教程：
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.misaka.rest/2023/02/08/cf-warp/?highlight=warp&quot;&gt;CloudFlare WARP官方客户端详细使用教程&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.misaka.rest/2023/02/08/cf-teams/?highlight=warp&quot;&gt;申请CloudFlare Teams(Zero Trust)账户教程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;▎vps监控与续期&lt;a href=&quot;#vps监控与续期&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;在hax领取的&lt;code&gt;IPv6 only VPS&lt;/code&gt;仅有7天的有效期，如果想要继续使用，则需要在到期前进行手动续期。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;续期时，点击Extend VPS进入续期页面，输入&lt;code&gt;hax.co.id&lt;/code&gt;并完成数学题，勾选复选框，点击&lt;code&gt;Renew VPS&lt;/code&gt;按钮。
&lt;figure&gt;&lt;img src=&quot;/img/hax/image_2.png&quot; alt=&quot;点击续期&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;点击续期&lt;/figcaption&gt;&lt;/figure&gt;&lt;/li&gt;
&lt;li&gt;点击&lt;code&gt;INPUT RENEW CODE&lt;/code&gt;按钮
&lt;figure&gt;&lt;img src=&quot;/img/hax/image_3.png&quot; alt=&quot;点击续期&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;点击续期&lt;/figcaption&gt;&lt;/figure&gt;&lt;/li&gt;
&lt;li&gt;复制粘贴从Bot发来的续期口令，完成数学题以及人机验证，点击&lt;code&gt;Renew VPS&lt;/code&gt;按钮。
&lt;figure&gt;&lt;img src=&quot;/img/hax/image_4.png&quot; alt=&quot;点击续期&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;点击续期&lt;/figcaption&gt;&lt;/figure&gt;
4.看到此消息即可代表续期成功。
&lt;figure&gt;&lt;img src=&quot;/img/hax/image_5.png&quot; alt=&quot;点击续期&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;点击续期&lt;/figcaption&gt;&lt;/figure&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;考虑到有些人常常会因为各种各样的事情忘记续费，从而导致痛失vps的问题，我写了一个用于监控hax的vps到期情况的&lt;a href=&quot;https://gist.githubusercontent.com/Sliverkiss/c92ff545b2c48da565c029720c5282db/raw/hax.js&quot;&gt;辅助工具&lt;/a&gt;（小脚本）。&lt;/p&gt;
&lt;p&gt;该脚本兼容&lt;code&gt;Surge&lt;/code&gt;、&lt;code&gt;Quantumult X&lt;/code&gt;、&lt;code&gt;Loon&lt;/code&gt;、&lt;code&gt;Shadowrocket&lt;/code&gt;、&lt;code&gt;Node.js&lt;/code&gt;等。&lt;/p&gt;
&lt;p&gt;⚠️此脚本仅用于学习研究，禁止其他商业以及非法用途。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ps&lt;/p&gt;&lt;div&gt;&lt;/div&gt;，从而减少登录hax时所需要的繁琐操作。&lt;p&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;hax监控脚本具体使用方法如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;抓&lt;code&gt;https://oauth.telegram.org/auth/push?&lt;/code&gt;接口的&lt;code&gt;Cookie&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;抓&lt;code&gt;https://hax.co.id/vps-info/&lt;/code&gt;接口的&lt;code&gt;PHPSESSID=XXXXXXXX;&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;将上面抓取到的两个数据分别用&lt;code&gt;#&lt;/code&gt;拼接，如&lt;code&gt;stel_token=XXXX;stel_ssid=XXXXX#PHPSESSID=XXXXX;&lt;/code&gt;,填写到&lt;code&gt;hax_data&lt;/code&gt;,多账号用 &lt;code&gt;@&lt;/code&gt;分割&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;监控成功通知如下图所示：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;/img/hax/image_6.png&quot; alt=&quot;监控通知&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;监控通知&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;▎vps的初步搭建与应用&lt;a href=&quot;#vps的初步搭建与应用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;如果在Hax领取到了&lt;code&gt;OpenVZ&lt;/code&gt;的机器，在安装&lt;code&gt;Warp&lt;/code&gt;脚本之前需要先进入&lt;code&gt;Poweroff &amp;amp; Restart VPS&lt;/code&gt;页面,点击&lt;code&gt;Enable Tun&lt;/code&gt;按钮启用&lt;code&gt;TUN&lt;/code&gt;模块,随后再点击&lt;code&gt;Restart&lt;/code&gt;按钮重新启动vps以让&lt;code&gt;TUN&lt;/code&gt;模块生效。&lt;/p&gt;
&lt;h4&gt;▎服务器关闭防火墙，开放所有端口&lt;a href=&quot;#服务器关闭防火墙开放所有端口&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Ubuntu系统：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开放所有端口：
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;iptables&lt;/span&gt;&lt;span&gt; -P&lt;/span&gt;&lt;span&gt; INPUT&lt;/span&gt;&lt;span&gt; ACCEPT&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;iptables&lt;/span&gt;&lt;span&gt; -P&lt;/span&gt;&lt;span&gt; FORWARD&lt;/span&gt;&lt;span&gt; ACCEPT&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;iptables&lt;/span&gt;&lt;span&gt; -P&lt;/span&gt;&lt;span&gt; OUTPUT&lt;/span&gt;&lt;span&gt; ACCEPT&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;iptables&lt;/span&gt;&lt;span&gt; -F&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;取消默认的Iptable规则:
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;apt-get&lt;/span&gt;&lt;span&gt; purge&lt;/span&gt;&lt;span&gt; netfilter-persistent&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;reboot&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;或者强制删除:
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;rm&lt;/span&gt;&lt;span&gt; -rf&lt;/span&gt;&lt;span&gt; /etc/iptables&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;reboot&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Centos 系统：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;删除多余附件:
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; stop&lt;/span&gt;&lt;span&gt; oracle-cloud-agent&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; disable&lt;/span&gt;&lt;span&gt; oracle-cloud-agent&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; stop&lt;/span&gt;&lt;span&gt; oracle-cloud-agent-updater&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; disable&lt;/span&gt;&lt;span&gt; oracle-cloud-agent-updater&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;停止 firewall:
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; stop&lt;/span&gt;&lt;span&gt; firewalld.service&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;禁止 firewall 开机启动:
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; disable&lt;/span&gt;&lt;span&gt; firewalld.service&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;▎安装Warp脚本&lt;a href=&quot;#安装warp脚本&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;众所周知，&lt;code&gt;Warp&lt;/code&gt;是个很好的东西，不仅可以提供相对干净的出站节点，还支持chatGpt，解锁奈飞流媒体等。&lt;/p&gt;
&lt;p&gt;对&lt;code&gt;IPv6 only VPS&lt;/code&gt;来说，安装warp，让其可以调用&lt;code&gt;IPv4&lt;/code&gt;接口，从而使&lt;code&gt;vps&lt;/code&gt;上的青龙、V2P等项目能够正常运行。&lt;/p&gt;
&lt;p&gt;warp一键安装脚本如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;wget&lt;/span&gt;&lt;span&gt; -N&lt;/span&gt;&lt;span&gt; https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;bash&lt;/span&gt;&lt;span&gt; menu.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;日常维护&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;warp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;▎安装宝塔面板&lt;a href=&quot;#安装宝塔面板&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;按照&lt;a href=&quot;https://www.bt.cn/bbs/thread-19376-1-1.html&quot;&gt;官方教程&lt;/a&gt;安装宝塔面板。一键安装脚本如下：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Centos
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;yum&lt;/span&gt;&lt;span&gt; install&lt;/span&gt;&lt;span&gt; -y&lt;/span&gt;&lt;span&gt; wget&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;wget&lt;/span&gt;&lt;span&gt; -O&lt;/span&gt;&lt;span&gt; install.sh&lt;/span&gt;&lt;span&gt; https://download.bt.cn/install/install_6.0.sh&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;sh&lt;/span&gt;&lt;span&gt; install.sh&lt;/span&gt;&lt;span&gt; ed8484bec&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Ubuntu/Deepin
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;wget&lt;/span&gt;&lt;span&gt; -O&lt;/span&gt;&lt;span&gt; install.sh&lt;/span&gt;&lt;span&gt; https://download.bt.cn/install/install-ubuntu_6.0.sh&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; bash&lt;/span&gt;&lt;span&gt; install.sh&lt;/span&gt;&lt;span&gt; ed8484bec&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Debian
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;wget&lt;/span&gt;&lt;span&gt; -O&lt;/span&gt;&lt;span&gt; install.sh&lt;/span&gt;&lt;span&gt; https://download.bt.cn/install/install-ubuntu_6.0.sh&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;bash&lt;/span&gt;&lt;span&gt; install.sh&lt;/span&gt;&lt;span&gt; ed8484bec&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;执行指令使面板监听 &lt;code&gt;IPv6&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;echo&lt;/span&gt;&lt;span&gt; &apos;::&apos;&lt;/span&gt;&lt;span&gt; &amp;gt;&lt;/span&gt;&lt;span&gt; /www/server/panel/data/ipv6.pl&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;/etc/init.d/bt&lt;/span&gt;&lt;span&gt; restart&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;执行指令将面板端口修改至&lt;code&gt;8080&lt;/code&gt;,不要改成其他端口。因为 &lt;code&gt;Cloudflare&lt;/code&gt; 开放&lt;code&gt;HTTP&lt;/code&gt;访问的端口有&lt;code&gt;80&lt;/code&gt;、&lt;code&gt;8080&lt;/code&gt;、&lt;code&gt;8880&lt;/code&gt;、&lt;code&gt;2052&lt;/code&gt;、&lt;code&gt;2082&lt;/code&gt;、&lt;code&gt;2086&lt;/code&gt;、&lt;code&gt;2095&lt;/code&gt;,除此之外的端口无法访问，所以必须改成其中一个。&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;echo&lt;/span&gt;&lt;span&gt; &quot;8080&quot;&lt;/span&gt;&lt;span&gt; &amp;gt;&lt;/span&gt;&lt;span&gt; /www/server/panel/data/port.pl&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;让系统防火墙放行 &lt;code&gt;8080&lt;/code&gt; 端口。&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;CentOS
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;firewall-cmd&lt;/span&gt;&lt;span&gt; --permanent&lt;/span&gt;&lt;span&gt; --zone=public&lt;/span&gt;&lt;span&gt; --add-port=8080/tcp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Debian/Ubuntu
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;ufw&lt;/span&gt;&lt;span&gt; allow&lt;/span&gt;&lt;span&gt; 8080&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;重启服务器使上面所有变更生效&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;reboot&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;至此，服务器的宝塔面板已经可以通过&lt;code&gt;IPv6:8080&lt;/code&gt;端口正常访问。&lt;/p&gt;
&lt;h4&gt;▎安装1Panel&lt;a href=&quot;#安装1panel&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;使用了一段时间宝塔面板后，我发现它其实并不是很好用，主要原因有：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;广告，无法忍受那些多余的东西充斥在vps上，这并不优雅。&lt;/li&gt;
&lt;li&gt;会员功能限制，宝塔面板有些功能只有会员才能使用，这不符合我的实用主义。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;因此，我决定卸载宝塔面板，并使用开源的&lt;code&gt;1Panel&lt;/code&gt;面板。&lt;/p&gt;
&lt;p&gt;宝塔面板卸载命令如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;wget&lt;/span&gt;&lt;span&gt; http://download.bt.cn/install/bt-uninstall.sh&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;sh&lt;/span&gt;&lt;span&gt; bt-uninstall.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;1Panel一键安装命令如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RedHat/CentOS
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; -sSL&lt;/span&gt;&lt;span&gt; https://resource.fit2cloud.com/1panel/package/quick_start.sh&lt;/span&gt;&lt;span&gt; -o&lt;/span&gt;&lt;span&gt; quick_start.sh&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;sh&lt;/span&gt;&lt;span&gt; quick_start.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Ubuntu
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; -sSL&lt;/span&gt;&lt;span&gt; https://resource.fit2cloud.com/1panel/package/quick_start.sh&lt;/span&gt;&lt;span&gt; -o&lt;/span&gt;&lt;span&gt; quick_start.sh&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; bash&lt;/span&gt;&lt;span&gt; quick_start.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Debian
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; -sSL&lt;/span&gt;&lt;span&gt; https://resource.fit2cloud.com/1panel/package/quick_start.sh&lt;/span&gt;&lt;span&gt; -o&lt;/span&gt;&lt;span&gt; quick_start.sh&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;bash&lt;/span&gt;&lt;span&gt; quick_start.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安装完成后，需要执行指令使&lt;code&gt;1panel&lt;/code&gt;面板监听 &lt;code&gt;IPv6&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;1panel&lt;/span&gt;&lt;span&gt; listen-ip&lt;/span&gt;&lt;span&gt; ipv6&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;让系统防火墙放行端口&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CentOS
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;firewall-cmd&lt;/span&gt;&lt;span&gt; --permanent&lt;/span&gt;&lt;span&gt; --zone=public&lt;/span&gt;&lt;span&gt; --add-port=端口/tcp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Debian/Ubuntu
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;ufw&lt;/span&gt;&lt;span&gt; allow&lt;/span&gt;&lt;span&gt; 端口&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;重启服务器使上面所有变更生效&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;reboot&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;至此，服务器的1panel面板已经可以通过&lt;code&gt;http://[IPv6]:端口&lt;/code&gt;正常访问。效果如下图所示：&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/img/hax/image_7.png&quot; alt=&quot;1panel&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;1panel&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h3&gt;▎致谢&lt;a href=&quot;#致谢&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;本博客主要内容参考于以下来源：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://gitlab.com/fscarmen/warp/&quot;&gt;@fscarmen&lt;/a&gt;
&lt;a href=&quot;https://blog.misaka.rest&quot;&gt;@Misaka&lt;/a&gt;
&lt;a href=&quot;https://blog.iuiun.com&quot;&gt;@Bzlrs&lt;/a&gt;
&lt;a href=&quot;https://www.idcfq.com/315.html&quot;&gt;@颜家小小&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>category:笔记</category><category>tag:Code</category></item><item><title>Boxjs 订阅使用及制作教程</title><link>https://blog.xn--ug8h.eu.org/post/tools/boxjs%E8%AE%A2%E9%98%85%E4%BD%BF%E7%94%A8%E5%8F%8A%E5%88%B6%E4%BD%9C%E6%95%99%E7%A8%8B</link><guid isPermaLink="false">tools/boxjs订阅使用及制作教程</guid><description>记录一次简易的Boxjs订阅使用及制作教程</description><pubDate>Thu, 16 Nov 2023 04:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;“If you care about me at all, please don’t say anything to anyone. ”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h5&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;有些小白只知道通过脚本和&lt;code&gt;boxjs&lt;/code&gt;订阅复合使用。一旦没有了&lt;code&gt;boxjs&lt;/code&gt;订阅，便不知道该如何管理脚本的环境变量。为让各位更好地了解&lt;code&gt;Boxjs&lt;/code&gt;，我决定抽空写一份使用以及制作&lt;code&gt;boxjs&lt;/code&gt;订阅的教程。&lt;/p&gt;
&lt;p&gt;在本次教程中，将会使用到以下脚本作为参考案例：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/wf021325/qx/master/task/xdm.js&quot;&gt;小豆苗 App 签到脚本&lt;/a&gt; by 苍井灰灰&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/MCdasheng/QuantumultX/main/Scripts/myScripts/ty.js&quot;&gt;天翼云盘签到脚本&lt;/a&gt; by Mcdasheng&lt;/li&gt;
&lt;/ol&gt;
&lt;h5&gt;创建模版文件&lt;a href=&quot;#创建模版文件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;首先，创建一个后缀为 json 格式的文件，作为 boxjs 订阅的主要来源。模版如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  “id”:”订阅id，随便写一个”,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  “name”:”订阅名称”,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  “author”:”订阅作者”,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  ”repo”:”来源仓库地址”,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  //下面的apps就是主要的应用订阅&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  ”apps”:[&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    “id”:”应用id(通常使用应用名称简写,如天翼云盘:tyyp)”,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    ”name”:“应用名称”,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    ”script”:”脚本地址”,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    ”author”:”脚本作者”,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    ”repo”:“脚本来源仓库”,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    ”icons”:[&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      “图标地址”,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      ”图标地址”&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    ”keys”:[“环境变量”],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    “descs_html”:[“操作步骤介绍”],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    ”setting”:[&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      “id”:”环境变量”,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      ”name”:”变量名称备注”,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      //默认值，一半留空&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      ”val”:””,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      ”type”:”textarea”，&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      “desc”:”环境变量介绍”&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    //如有多个变量则在keys中填入，并复制上面setting中的内容重复填写&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  //多个应用变量同理，复制对象填写。&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果上面的模版还是看不懂，可以参考其他作者写的&lt;a href=&quot;https://raw.githubusercontent.com/chiupam/surge/main/boxjs/chiupam.boxjs.json&quot;&gt;boxjs订阅&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;实战过程&lt;a href=&quot;#实战过程&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;接下来我们进入实战，根据脚本内容制作对应的 &lt;code&gt;boxjs&lt;/code&gt; 应用订阅。&lt;/p&gt;
&lt;p&gt;首先是&lt;code&gt;苍井灰灰&lt;/code&gt;大佬的&lt;code&gt;小豆苗&lt;/code&gt; app 脚本，通过查看脚本内容，寻找 &lt;code&gt;$.getdata&lt;/code&gt;、&lt;code&gt;$.setdata&lt;/code&gt;、&lt;code&gt;$.read&lt;/code&gt; 等关键字段。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/img/boxjs/image_1.jpg&quot; alt=&quot;小豆苗app&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;小豆苗app&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;通过上图我们得知，&lt;code&gt;$.getdata&lt;/code&gt; 里面的内容是&lt;code&gt;_key&lt;/code&gt;, 寻找&lt;code&gt;_key&lt;/code&gt; 对应的字符串就是 “XDM_Header”。因此，该脚本所需要的环境变量名称为 &lt;code&gt;XDM_Header&lt;/code&gt;，在 &lt;code&gt;keys&lt;/code&gt; 中填写环境变量，以及相关信息。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt; ”keys”:[“XDM_Header”],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    “descs_html”:[“打开客户端即可获取cookie”],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    ”setting”:[&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;     {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      “id”:”XDM_Header”,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      ”name”:”小豆苗环境变量”,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      //默认值，一半留空&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      ”val”:””,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      ”type”:”textarea”，&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      “desc”:”小豆苗签到的请求头信息”&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    ]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;天翼云盘脚本的应用订阅过程类似，打开脚本，寻找 &lt;code&gt;$.getdata&lt;/code&gt;, 找到对应的字符串为 “ty_session”。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/img/boxjs/image_2.jpg&quot; alt=&quot;天翼云盘app&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;天翼云盘app&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;如图所示，该脚本所需要的环境变量名称为 &lt;code&gt;ty_session&lt;/code&gt;，在 keys 中填写环境变量，以及相关信息.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt; ”keys”:[“ty_session”],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    “descs_html”:[“天翼云盘获取session”],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    ”setting”:[&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;     {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      “id”:”ty_session”,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      ”name”:”天翼云盘环境变量”,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      //默认值，一半留空&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      ”val”:””,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      ”type”:”textarea”，&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      “desc”:”天翼云盘签到的session信息”&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    ]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;环境变量的使用教程&lt;a href=&quot;#环境变量的使用教程&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;一般来说，我的脚本注释通常都会有将 &lt;code&gt;XXX&lt;/code&gt; 填写到 &lt;code&gt;XXX&lt;/code&gt; 的描述，我会在这里演示一遍具体的操作流程，希望大家能够学会。例如&lt;code&gt;松鼠 ios&lt;/code&gt; 的签到脚本：找到 &lt;code&gt;cookie&lt;/code&gt;，填写到 &lt;code&gt;sxios_data&lt;/code&gt;, 多账号用 &lt;code&gt;@&lt;/code&gt;分割。&lt;/p&gt;
&lt;p&gt;首先打开 &lt;code&gt;boxjs&lt;/code&gt;，点击我的。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/img/boxjs/image_3.png&quot; alt=&quot;说明&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;说明&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;点击数据查看器，在数据键输入 &lt;code&gt;sxios_data&lt;/code&gt;, 点击 &lt;code&gt;VIEW&lt;/code&gt;s 查看具体内容，此时看到的数据为空。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/img/boxjs/image_4.png&quot; alt=&quot;说明&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;说明&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;在数据内容输入你抓到的 &lt;code&gt;cookie&lt;/code&gt; 信息，如果有多个账号，就用 &lt;code&gt;@&lt;/code&gt;拼接，如 &lt;code&gt;cookie@cookie@cookie&lt;/code&gt;, 最后点击保存。此时再运行脚本就不会出现未找到环境变量等问题了。&lt;/p&gt;
&lt;p&gt;以上，教程结束。&lt;/p&gt;
&lt;h5&gt;后记&lt;a href=&quot;#后记&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;教学类型文章不可避免会有一些专业性。俗话说：授人以鱼不如授人以渔，授之以渔可解一生之需。&lt;/p&gt;
&lt;p&gt;祝大家学成归来。&lt;/p&gt;
</content:encoded><category>category:工具</category><category>tag:Code</category></item><item><title>哈根达斯签到脚本（解密实例）</title><link>https://blog.xn--ug8h.eu.org/post/tools/%E5%93%88%E6%A0%B9%E8%BE%BE%E6%96%AF%E7%AD%BE%E5%88%B0%E8%84%9A%E6%9C%AC%E8%A7%A3%E5%AF%86%E5%AE%9E%E4%BE%8B</link><guid isPermaLink="false">tools/哈根达斯签到脚本解密实例</guid><description>Hello World and hello to you</description><pubDate>Wed, 15 Nov 2023 04:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;“If you care about me at all, please don’t say anything to anyone. ”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h5&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;本文主要记录一次哈根达斯会员中心（微信小程序）的解密过程。&lt;/p&gt;
&lt;h5&gt;过程&lt;a href=&quot;#过程&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;首先对哈根达斯的微信小程序进行解包，可以使用网上现成的工具，如&lt;code&gt;wxappUnpacker&lt;/code&gt;。通过使用&lt;code&gt;wxappUnpacker&lt;/code&gt;这个工具可以解手机微信的包。Pc 的微信包则需要先解密一下，再用&lt;code&gt;wxappUnpacker&lt;/code&gt;解。这个解包，很多时候并不完美，不能搞到微信开发者工具调试，大概就是静态分析，研究一下代码内容。&lt;/p&gt;
&lt;p&gt;解包后找到的 JS 文件如下：&lt;a href=&quot;https://t.me/NobyDa_Chat/1501857&quot;&gt;appservice.js&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;根据以往的经验来看，哈根达斯应该是双层 &lt;code&gt;MD5&lt;/code&gt;，即&lt;code&gt;MD5 (MD5 (a + MD5 (c, d)))&lt;/code&gt;。在以上的 JS 随便搜索&lt;code&gt;sign:&lt;/code&gt;, 任意找一处即可，得到一个方法&lt;code&gt;l.default.mdString&lt;/code&gt;。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/img/hgds/image_1.jpg&quot; alt=&quot;图片说明&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;图片说明&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;再搜索&lt;code&gt;mdString&lt;/code&gt;关键词，找到&lt;code&gt;mdString&lt;/code&gt;开头的方法，这个关键词比较多,有 100 多个，只有开头这个才是，这里大概就是加密算法了。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/img/hgds/image_2.jpg&quot; alt=&quot;图片说明&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;图片说明&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;此时我们得到加密关键字&lt;code&gt;hexMD5&lt;/code&gt;，目测就是加密算法。&lt;/p&gt;
&lt;p&gt;根据查询到的结果得知，&lt;code&gt;var h = u.default.hexMD5 (o, &quot;cs&quot;);&lt;/code&gt;，&lt;code&gt;hexMD5&lt;/code&gt;加密方法中有一个&lt;code&gt;o&lt;/code&gt;变量。&lt;/p&gt;
&lt;p&gt;再次通过关键词&lt;code&gt;o&lt;/code&gt;查找代码，发现&lt;code&gt;o = &quot;Z15&quot; + getApp ().globalData.keyinfo;&lt;/code&gt;。通过解读代码得知，还需要找到&lt;code&gt;etApp ().globalData.keyinfo&lt;/code&gt;。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/img/hgds/image_3.jpg&quot; alt=&quot;图片说明&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;图片说明&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;那么，尝试一下使用关键词&lt;code&gt;keyinfo&lt;/code&gt;进行搜索,找到&lt;code&gt;keyinfo=‘$$ABCD&amp;amp;&lt;/code&gt;。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/img/hgds/image_4.jpg&quot; alt=&quot;图片说明&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;图片说明&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;最后将&lt;code&gt;getApp ().globalData.keyinfo;&lt;/code&gt;替换成&lt;code&gt;$$ABCD&amp;amp;&lt;/code&gt;,得到&lt;code&gt;o=&quot;Z15$$ABCD&amp;amp;&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;此时再看代码&lt;code&gt;var h = u.default.hexMD5 (o, &quot;cs&quot;)&lt;/code&gt;，将&lt;code&gt;o&lt;/code&gt;替换成&lt;code&gt;“Z15$$ABCD&amp;amp;”&lt;/code&gt;,就是&lt;code&gt;var h = u.default.hexMD5 (“Z15$$ABCD&amp;amp;”, &quot;cs&quot;)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;接下来就是抠代码过程，经过一番代码解析后发现，这个&lt;code&gt;hexMD5&lt;/code&gt;可以完美的抠出来。计算得到 &lt;code&gt;c36b51abb26c3357cb00ef4c6e235a45&lt;/code&gt;。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/img/hgds/image_5.jpg&quot; alt=&quot;图片说明&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;图片说明&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;经过测试，这个是标准的 hexMD5, 其中有两个参数并不是很清楚，但之前见过。只传入第一个参数，第二个参数忽略计算结果就是我们常用的 &lt;code&gt;MD5&lt;/code&gt;。 剩下的应该靠猜就行了&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; u.default.&lt;/span&gt;&lt;span&gt;hexMD5&lt;/span&gt;&lt;span&gt; (u.default.&lt;/span&gt;&lt;span&gt;hexMD5&lt;/span&gt;&lt;span&gt; (Array.&lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; (i).&lt;/span&gt;&lt;span&gt;sort&lt;/span&gt;&lt;span&gt; ().&lt;/span&gt;&lt;span&gt;join&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;)) &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&quot;,&quot;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; h)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;精简后大概就是&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; hexMD5&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;hexMD5&lt;/span&gt;&lt;span&gt; (aaaaa) &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&quot;,&quot;&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; “c36b51abb26c3357cb00ef4c6e235a45”)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里的 &lt;code&gt;aaaaa&lt;/code&gt; 大概就是从提交 &lt;code&gt;body&lt;/code&gt; 抓包得到的 &lt;code&gt;json&lt;/code&gt;, 把 &lt;code&gt;json&lt;/code&gt; 转为 &lt;code&gt;a=1&amp;amp;b=2&amp;amp;c=3&lt;/code&gt; 的格式，具体需不需要按 &lt;code&gt;a~z&lt;/code&gt; 顺序排列还不清楚。&lt;/p&gt;
&lt;p&gt;至于怎么抠这个 &lt;code&gt;MD5&lt;/code&gt;，关键字，搜&lt;code&gt;hexMD5&lt;/code&gt;找到&lt;code&gt;hexMD5&lt;/code&gt;开头的，经过实测，上面的方法&lt;code&gt;n&lt;/code&gt;、&lt;code&gt;r&lt;/code&gt;、&lt;code&gt;i&lt;/code&gt;、&lt;code&gt;o&lt;/code&gt;、&lt;code&gt;a&lt;/code&gt;、&lt;code&gt;s&lt;/code&gt;也需要。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/img/hgds/image_6.jpg&quot; alt=&quot;图片说明&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;图片说明&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;将&lt;code&gt;n&lt;/code&gt;、&lt;code&gt;r&lt;/code&gt;、&lt;code&gt;i&lt;/code&gt;、&lt;code&gt;o&lt;/code&gt;、&lt;code&gt;a&lt;/code&gt;、&lt;code&gt;s&lt;/code&gt;方法提取出来，再将&lt;code&gt;hexMD5&lt;/code&gt;放到 &lt;code&gt;function&lt;/code&gt;后面，就能得到图中的代码。此时这个&lt;code&gt;hexMD5&lt;/code&gt;已经可以正常调用。而调用方法&lt;code&gt;hexMD5 (e,t)&lt;/code&gt;中的参数&lt;code&gt;t&lt;/code&gt;根据情况可以忽略不用。具体如下:&lt;/p&gt;
&lt;p&gt;这里需要两个参数。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;h &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; u.default.&lt;/span&gt;&lt;span&gt;hexMD5&lt;/span&gt;&lt;span&gt; (o, &lt;/span&gt;&lt;span&gt;&quot;cs&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;而下面代码需要一个参数。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; u.default.&lt;/span&gt;&lt;span&gt;hexMD5&lt;/span&gt;&lt;span&gt; (u.default.&lt;/span&gt;&lt;span&gt;hexMD5&lt;/span&gt;&lt;span&gt; (Array.&lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; (i).&lt;/span&gt;&lt;span&gt;sort&lt;/span&gt;&lt;span&gt; ().&lt;/span&gt;&lt;span&gt;join&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;)) &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&quot;,&quot;&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; h)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;figure&gt;&lt;img src=&quot;/img/hgds/image_7.jpg&quot; alt=&quot;图片说明&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;图片说明&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;一开始找到这个 &lt;code&gt;AES&lt;/code&gt;，不知道是用来加密什么。经过研究分析，发现 &lt;code&gt;sessionKey&lt;/code&gt; 是 &lt;code&gt;AES-ECB&lt;/code&gt; 密钥 &lt;code&gt;sinobase@1234567&lt;/code&gt;。但是解密出来，也没意义。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/img/hgds/image_7.jpg&quot; alt=&quot;图片说明&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;图片说明&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;&lt;code&gt;sessionKey&lt;/code&gt; 从代码里面可以看出，它是从内存进行读取之类的，只要不清理小程序缓存就没事，清理缓存后就变了。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/img/hgds/image_8.jpg&quot; alt=&quot;图片说明&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;图片说明&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;/img/hgds/image_9.jpg&quot; alt=&quot;图片说明&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;图片说明&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;最后，将上面找到的有用信息进行整合，整理出用来解密签到 &lt;code&gt;sign&lt;/code&gt; 的算法如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; n&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;r&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    var&lt;/span&gt;&lt;span&gt; o &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;65535&lt;/span&gt;&lt;span&gt; &amp;amp;&lt;/span&gt;&lt;span&gt; n) &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;65535&lt;/span&gt;&lt;span&gt; &amp;amp;&lt;/span&gt;&lt;span&gt; r);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    return&lt;/span&gt;&lt;span&gt; (n &lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt; 16&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; (r &lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt; 16&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; (o &lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt; 16&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span&gt; 16&lt;/span&gt;&lt;span&gt; |&lt;/span&gt;&lt;span&gt; 65535&lt;/span&gt;&lt;span&gt; &amp;amp;&lt;/span&gt;&lt;span&gt; o&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; r&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;r&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;o&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    return&lt;/span&gt;&lt;span&gt; n&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;r&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; n &lt;/span&gt;&lt;span&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span&gt; e &lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;span&gt; n &lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt; 32&lt;/span&gt;&lt;span&gt; -&lt;/span&gt;&lt;span&gt; e&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;(o, r), &lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;(a, i))), t)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;o&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;c&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    return&lt;/span&gt;&lt;span&gt; r&lt;/span&gt;&lt;span&gt;(o &lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt; t &lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;span&gt; ~&lt;/span&gt;&lt;span&gt;o &lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt; a, n, o, e, i, c)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; o&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;o&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;c&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    return&lt;/span&gt;&lt;span&gt; r&lt;/span&gt;&lt;span&gt;(o &lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt; a &lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;span&gt; t &lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt; ~&lt;/span&gt;&lt;span&gt;a, n, o, e, i, c)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;o&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;c&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    return&lt;/span&gt;&lt;span&gt; r&lt;/span&gt;&lt;span&gt;(o &lt;/span&gt;&lt;span&gt;^&lt;/span&gt;&lt;span&gt; t &lt;/span&gt;&lt;span&gt;^&lt;/span&gt;&lt;span&gt; a, n, o, e, i, c)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; s&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;o&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;c&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    return&lt;/span&gt;&lt;span&gt; r&lt;/span&gt;&lt;span&gt;(t &lt;/span&gt;&lt;span&gt;^&lt;/span&gt;&lt;span&gt; (o &lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;span&gt; ~&lt;/span&gt;&lt;span&gt;a), n, o, e, i, c)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; hexMD5&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;r&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    return&lt;/span&gt;&lt;span&gt; function&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt; r &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &quot;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            o &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;; o &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; 4&lt;/span&gt;&lt;span&gt; *&lt;/span&gt;&lt;span&gt; n.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;; o&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;) r &lt;/span&gt;&lt;span&gt;+=&lt;/span&gt;&lt;span&gt; &quot;0123456789abcdef&quot;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;charAt&lt;/span&gt;&lt;span&gt;(n[o &lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;] &lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt; o &lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt; 4&lt;/span&gt;&lt;span&gt; *&lt;/span&gt;&lt;span&gt; 8&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; 4&lt;/span&gt;&lt;span&gt; &amp;amp;&lt;/span&gt;&lt;span&gt; 15&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &quot;0123456789abcdef&quot;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;charAt&lt;/span&gt;&lt;span&gt;(n[o &lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;] &lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt; o &lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt; 4&lt;/span&gt;&lt;span&gt; *&lt;/span&gt;&lt;span&gt; 8&lt;/span&gt;&lt;span&gt; &amp;amp;&lt;/span&gt;&lt;span&gt; 15&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; r&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }(&lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;r&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt; t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 1732584193&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; -&lt;/span&gt;&lt;span&gt;271733879&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; -&lt;/span&gt;&lt;span&gt;1732584194&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 271733878&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            f &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;; f &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; r.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;; f &lt;/span&gt;&lt;span&gt;+=&lt;/span&gt;&lt;span&gt; 16&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            var&lt;/span&gt;&lt;span&gt; h &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; t,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                d &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; e,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                b &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; c,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                g &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; u;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; s&lt;/span&gt;&lt;span&gt;(t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;(t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;(t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;(t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;(t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; o&lt;/span&gt;&lt;span&gt;(t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; o&lt;/span&gt;&lt;span&gt;(t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; o&lt;/span&gt;&lt;span&gt;(t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; o&lt;/span&gt;&lt;span&gt;(t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;(t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;(t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;(t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;(t, e, c, u, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;680876936&lt;/span&gt;&lt;span&gt;), e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;(e, c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;(c, u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;(u, t, e, c, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;389564586&lt;/span&gt;&lt;span&gt;), t, e, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;606105819&lt;/span&gt;&lt;span&gt;), u, t, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 3&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1044525330&lt;/span&gt;&lt;span&gt;), c, u, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 4&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;176418897&lt;/span&gt;&lt;span&gt;), e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;(e, c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;(c, u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;(u, t, e, c, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 5&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1200080426&lt;/span&gt;&lt;span&gt;), t, e, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 6&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1473231341&lt;/span&gt;&lt;span&gt;), u, t, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 7&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;45705983&lt;/span&gt;&lt;span&gt;), c, u, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 8&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1770035416&lt;/span&gt;&lt;span&gt;), e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;(e, c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;(c, u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;(u, t, e, c, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 9&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1958414417&lt;/span&gt;&lt;span&gt;), t, e, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 10&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;42063&lt;/span&gt;&lt;span&gt;), u, t, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 11&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1990404162&lt;/span&gt;&lt;span&gt;), c, u, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 12&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1804603682&lt;/span&gt;&lt;span&gt;), e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;(e, c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;(c, u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;(u, t, e, c, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 13&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;40341101&lt;/span&gt;&lt;span&gt;), t, e, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 14&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1502002290&lt;/span&gt;&lt;span&gt;), u, t, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 15&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1236535329&lt;/span&gt;&lt;span&gt;), c, u, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;165796510&lt;/span&gt;&lt;span&gt;), e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; o&lt;/span&gt;&lt;span&gt;(e, c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; o&lt;/span&gt;&lt;span&gt;(c, u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; o&lt;/span&gt;&lt;span&gt;(u, t, e, c, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 6&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1069501632&lt;/span&gt;&lt;span&gt;), t, e, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 11&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;643717713&lt;/span&gt;&lt;span&gt;), u, t, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;373897302&lt;/span&gt;&lt;span&gt;), c, u, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 5&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;701558691&lt;/span&gt;&lt;span&gt;), e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; o&lt;/span&gt;&lt;span&gt;(e, c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; o&lt;/span&gt;&lt;span&gt;(c, u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; o&lt;/span&gt;&lt;span&gt;(u, t, e, c, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 10&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;38016083&lt;/span&gt;&lt;span&gt;), t, e, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 15&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;660478335&lt;/span&gt;&lt;span&gt;), u, t, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 4&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;405537848&lt;/span&gt;&lt;span&gt;), c, u, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 9&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;568446438&lt;/span&gt;&lt;span&gt;), e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; o&lt;/span&gt;&lt;span&gt;(e, c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; o&lt;/span&gt;&lt;span&gt;(c, u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; o&lt;/span&gt;&lt;span&gt;(u, t, e, c, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 14&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1019803690&lt;/span&gt;&lt;span&gt;), t, e, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 3&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;187363961&lt;/span&gt;&lt;span&gt;), u, t, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 8&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1163531501&lt;/span&gt;&lt;span&gt;), c, u, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 13&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1444681467&lt;/span&gt;&lt;span&gt;), e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; o&lt;/span&gt;&lt;span&gt;(e, c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; o&lt;/span&gt;&lt;span&gt;(c, u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; o&lt;/span&gt;&lt;span&gt;(u, t, e, c, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;51403784&lt;/span&gt;&lt;span&gt;), t, e, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 7&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1735328473&lt;/span&gt;&lt;span&gt;), u, t, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 12&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1926607734&lt;/span&gt;&lt;span&gt;), c, u, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 5&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;378558&lt;/span&gt;&lt;span&gt;), e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;(e, c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;(c, u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;(u, t, e, c, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 8&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;2022574463&lt;/span&gt;&lt;span&gt;), t, e, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 11&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1839030562&lt;/span&gt;&lt;span&gt;), u, t, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 14&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;35309556&lt;/span&gt;&lt;span&gt;), c, u, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1530992060&lt;/span&gt;&lt;span&gt;), e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;(e, c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;(c, u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;(u, t, e, c, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 4&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1272893353&lt;/span&gt;&lt;span&gt;), t, e, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 7&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;155497632&lt;/span&gt;&lt;span&gt;), u, t, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 10&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1094730640&lt;/span&gt;&lt;span&gt;), c, u, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 13&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;681279174&lt;/span&gt;&lt;span&gt;), e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;(e, c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;(c, u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;(u, t, e, c, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;358537222&lt;/span&gt;&lt;span&gt;), t, e, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 3&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;722521979&lt;/span&gt;&lt;span&gt;), u, t, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 6&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;76029189&lt;/span&gt;&lt;span&gt;), c, u, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 9&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;640364487&lt;/span&gt;&lt;span&gt;), e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;(e, c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;(c, u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;(u, t, e, c, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 12&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;421815835&lt;/span&gt;&lt;span&gt;), t, e, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 15&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;530742520&lt;/span&gt;&lt;span&gt;), u, t, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;995338651&lt;/span&gt;&lt;span&gt;), c, u, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;198630844&lt;/span&gt;&lt;span&gt;),e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; s&lt;/span&gt;&lt;span&gt;(e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; s&lt;/span&gt;&lt;span&gt;(e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; s&lt;/span&gt;&lt;span&gt;(e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; s&lt;/span&gt;&lt;span&gt;(e, c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; s&lt;/span&gt;&lt;span&gt;(c, u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; s&lt;/span&gt;&lt;span&gt;(u, t, e, c, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 7&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1126891415&lt;/span&gt;&lt;span&gt;), t, e, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 14&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1416354905&lt;/span&gt;&lt;span&gt;), u, t, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 5&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;57434055&lt;/span&gt;&lt;span&gt;), c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; s&lt;/span&gt;&lt;span&gt;(c, u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; s&lt;/span&gt;&lt;span&gt;(u, t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; s&lt;/span&gt;&lt;span&gt;(t, e, c, u, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 12&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1700485571&lt;/span&gt;&lt;span&gt;), e, c, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 3&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1894986606&lt;/span&gt;&lt;span&gt;), t, e, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 10&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1051523&lt;/span&gt;&lt;span&gt;), u, t, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;2054922799&lt;/span&gt;&lt;span&gt;), c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; s&lt;/span&gt;&lt;span&gt;(c, u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; s&lt;/span&gt;&lt;span&gt;(u, t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; s&lt;/span&gt;&lt;span&gt;(t, e, c, u, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 8&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1873313359&lt;/span&gt;&lt;span&gt;), e, c, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 15&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;30611744&lt;/span&gt;&lt;span&gt;), t, e, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 6&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1560198380&lt;/span&gt;&lt;span&gt;), u, t, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 13&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1309151649&lt;/span&gt;&lt;span&gt;), c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; s&lt;/span&gt;&lt;span&gt;(c, u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; s&lt;/span&gt;&lt;span&gt;(u, t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; s&lt;/span&gt;&lt;span&gt;(t, e, c, u, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 4&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;145523070&lt;/span&gt;&lt;span&gt;), e, c, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 11&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1120210379&lt;/span&gt;&lt;span&gt;), t, e, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;718787259&lt;/span&gt;&lt;span&gt;), u, t, r[f &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 9&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;343485551&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; n&lt;/span&gt;&lt;span&gt;(t, h),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; n&lt;/span&gt;&lt;span&gt;(e, d),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; n&lt;/span&gt;&lt;span&gt;(c, b),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; n&lt;/span&gt;&lt;span&gt;(u, g)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; [t, e, c, u]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }(&lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt; r &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; (n.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; 8&lt;/span&gt;&lt;span&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt; 6&lt;/span&gt;&lt;span&gt;), o &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Array&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt; *&lt;/span&gt;&lt;span&gt; r), t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;; t &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; 16&lt;/span&gt;&lt;span&gt; *&lt;/span&gt;&lt;span&gt; r; t&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;) o[t] &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        for&lt;/span&gt;&lt;span&gt; (t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;; t &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; n.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;; t&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;) o[t &lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;] &lt;/span&gt;&lt;span&gt;|=&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt; &amp;amp;&lt;/span&gt;&lt;span&gt; n.&lt;/span&gt;&lt;span&gt;charCodeAt&lt;/span&gt;&lt;span&gt;(t)) &lt;/span&gt;&lt;span&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span&gt; t &lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt; 4&lt;/span&gt;&lt;span&gt; *&lt;/span&gt;&lt;span&gt; 8&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; o[t &lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;] &lt;/span&gt;&lt;span&gt;|=&lt;/span&gt;&lt;span&gt; 128&lt;/span&gt;&lt;span&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span&gt; t &lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt; 4&lt;/span&gt;&lt;span&gt; *&lt;/span&gt;&lt;span&gt; 8&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            o[&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt; *&lt;/span&gt;&lt;span&gt; r &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;] &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 8&lt;/span&gt;&lt;span&gt; *&lt;/span&gt;&lt;span&gt; n.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            o&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }(t &lt;/span&gt;&lt;span&gt;?&lt;/span&gt;&lt;span&gt; &quot;key=@D#D&quot;&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; r &lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; r)))&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; mdString&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;r&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt; o &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; JSON&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;parse&lt;/span&gt;&lt;span&gt;(r), t &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        unionId: o.unionId,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        openId: o.openId,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        sessionKey: o.sessionKey&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        a &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &quot;&quot;&lt;/span&gt;&lt;span&gt;, e &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;, i &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; Object.&lt;/span&gt;&lt;span&gt;keys&lt;/span&gt;&lt;span&gt;(t); e &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; i.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;; e&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        var&lt;/span&gt;&lt;span&gt; c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; i[e];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        a &lt;/span&gt;&lt;span&gt;+=&lt;/span&gt;&lt;span&gt; &quot;&quot;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;concat&lt;/span&gt;&lt;span&gt;(c, &lt;/span&gt;&lt;span&gt;&quot;=&quot;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;concat&lt;/span&gt;&lt;span&gt;(t[c], &lt;/span&gt;&lt;span&gt;&quot;&amp;amp;&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    return&lt;/span&gt;&lt;span&gt; a &lt;/span&gt;&lt;span&gt;+=&lt;/span&gt;&lt;span&gt; &quot;timestamp=&quot;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;concat&lt;/span&gt;&lt;span&gt;(n),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        hexMD5&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;hexMD5&lt;/span&gt;&lt;span&gt;(Array.&lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt;(a).&lt;/span&gt;&lt;span&gt;sort&lt;/span&gt;&lt;span&gt;().&lt;/span&gt;&lt;span&gt;join&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;)) &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &quot;,c36b51abb26c3357cb00ef4c6e235a45&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;使用方法&lt;a href=&quot;#使用方法&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;比如抓包签到 body&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;body &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &apos;{&quot;unionId&quot;:&quot;xxxx&quot;,&quot;openId&quot;:&quot;xxx&quot;,&quot;socialHubid&quot;:&quot;xx&quot;,&quot;timestamp&quot;:1694946869950,&quot;sign&quot;:&quot;xxx&quot;,&quot;sessionKey&quot;:&quot;xxxx&quot;}&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;时间戳&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;timestamp = 1694946869950;// 可以是数字，可以是文本，从上面获得&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将 &lt;code&gt;body&lt;/code&gt;与&lt;code&gt;timestamp&lt;/code&gt;作为参数传入解密算法，通过&lt;code&gt;console.log()&lt;/code&gt;打印便能对比 &lt;code&gt;sign&lt;/code&gt; 。从下图可以看出，&lt;code&gt;body&lt;/code&gt; 中的 &lt;code&gt;sign&lt;/code&gt; 值和用算法生成的 &lt;code&gt;sign&lt;/code&gt; 是一致的。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;sign &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; mdString&lt;/span&gt;&lt;span&gt;(timestamp,body);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;至此，整个哈根达斯解密大功告成。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/img/hgds/image_10.jpg&quot; alt=&quot;图片说明&quot; title=&quot;title&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;图片说明&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h5&gt;后记&lt;a href=&quot;#后记&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;教学类型文章不可避免会有一些专业性，整个教程内容均由&lt;code&gt;苍井灰灰&lt;/code&gt;大佬口述，本人整理记录，难以避免行文段落中存在上下文衔接不连贯、内容晦涩难懂等问题，还望多多包涵。&lt;/p&gt;
&lt;p&gt;俗话说：授人以鱼不如授人以渔，授之以渔可解一生之需。&lt;/p&gt;
&lt;p&gt;祝大家学成归来。&lt;/p&gt;
</content:encoded><category>category:工具</category><category>tag:Code</category></item><item><title>Hello World</title><link>https://blog.xn--ug8h.eu.org/post/life/hello</link><guid isPermaLink="false">life/hello</guid><description>Hello World and hello to you</description><pubDate>Tue, 14 Nov 2023 04:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;“If you care about me at all, please don’t say anything to anyone. ”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hello~欢迎各位来到我的博客。这里是我的第一篇文章。&lt;/p&gt;
&lt;h2&gt;正文&lt;a href=&quot;#正文&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;2333～这其实是一个很迷的博客。因为，这个博客是用来进行各种各样的、我没有经历的事情而实验的。&lt;/p&gt;
&lt;p&gt;在这里，也许你会被治愈好患病多年的眼疾。因为，你会被里面的内容闪瞎（看到这里，估计你也已是一只在黑暗中追求光名，最终扑火的飞蛾了吧！）&lt;/p&gt;
&lt;p&gt;在这里，也许你多年的聋哑，将会不治而治。因为你看到的，所看到的一切，都会令你的脑洞大开。&lt;/p&gt;
&lt;p&gt;开玩笑的啦！虽说这不是开玩笑的时候。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;致谢&lt;a href=&quot;#致谢&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;本博客的搭建主要来源于&lt;a href=&quot;https://github.com/tLLWtG&quot;&gt;tllwtg&lt;/a&gt;的&lt;a href=&quot;https://github.com/tLLWtG/tllwtg.github.io&quot;&gt;项目&lt;/a&gt;。&lt;/p&gt;
</content:encoded><category>category:随笔</category><category>tag:Life</category></item></channel></rss>