普通视图

在 Windows 本地安装使用 OpenClaw(原 clawdbot)教程

2026年2月1日 15:06

简介

OpenClaw 是一款基于 AI 的本地化助手工具,前身为 clawdbot。它可以帮助用户在本地环境中快速部署和使用大语言模型,支持多种国内外主流 AI 模型接入。

2026-02-02T05:35:14.png

安装步骤

1. 安装 Node.js 22.x

首先需要安装 Node.js 运行环境。访问 Node.js 官网下载 22.x 版本的安装包,按照向导完成安装。

Node.js 安装界面

2. 安装 OpenClaw

打开命令行工具,执行以下命令进行全局安装:

npm install -g openclaw@latest

OpenClaw 全局安装过程

3. 配置 OpenClaw

安装完成后需要进行初始化配置。

注意:以下操作需要在管理员权限的终端中运行

执行配置命令:

openclaw onboard --install-daemon

初始化配置界面

3.1 选择启动模块

在配置过程中,选择"快速开始"模块,这样可以快速完成基础配置。

选择快速开始模块

3.2 选择 AI 模型

这里选择通义千问(Qwen)模型,当然也可以根据需要选择其他国内外的大模型。

选择通义千问模型

3.3 登录验证

选择通义千问的登录验证方式。

选择登录验证方式

系统会自动打开浏览器进行登录验证,完成授权后即可继续。

浏览器登录验证成功

3.4 选择默认模型

在可用的模型列表中选择一个作为默认使用的模型。

选择默认使用模型

3.5 跳过高级配置

对于初次使用,可以暂时跳过 channel 的配置。

跳过 channel 配置

同样,skills 和 hooks 也可以暂时不配置,后续有需要再添加。

跳过 skills 和 hooks 配置

3.6 安装守护进程

选择 reinstall 来安装或重新安装守护进程。

安装守护进程

4. 启动和使用

配置完成后,OpenClaw 会自动启动。

OpenClaw 启动成功

系统会自动在浏览器中打开 OpenClaw 的 Web 界面。

OpenClaw Web 界面

5. 验证安装

在聊天界面发送一条消息,如果收到 AI 的回复,就说明安装配置成功了。

测试对话验证安装成功

总结

至此,OpenClaw 已经在 Windows 系统上成功部署。整个过程主要包括安装 Node.js 环境、全局安装 OpenClaw、配置模型和认证信息、安装守护进程等步骤。安装完成后就可以在本地使用各种 AI 大模型功能了。由于很消耗token,所以我还没有过多使用它的技能。

  •  

UnlockMusic 本地构建、服务器部署与浏览器扩展制作教程

2026年1月29日 01:35

本地构建

前置环境配置

核心依赖

  • Node.js: 运行环境请务必锁定为 v16.x 版本。该项目暂不支持 v17 及更高版本,强行使用会导致编译失败。
  • npm: 推荐直接使用 Node.js v16 自带的包管理工具(npm v8.x),以规避潜在的版本冲突。
警告: 本项目基于 Vue CLI 4 与 Webpack 4 开发,与 Node.js v17+ 存在底层不兼容。若版本不匹配,编译流程将无法正常完成。

WASM 组件(可选)

  • 操作系统:Linux
  • 环境支持:Python 3

在线预览

地址:unlock-music
预览

详细操作步骤

1. 获取源代码

首先把代码拉取到本地:

git clone https://git.unlock-music.dev/um/web.git

或者在项目仓库下载。

2. 确认 Node 版本

在终端输入命令检查当前版本:

node --version

2026-01-28T16:38:33.png

如果环境不符合 v16.x 要求,请按以下方式切换:

通过 nvm 管理(推荐)

# 安装 Node.js v16
nvm install 16
# 切换到 v16 环境
nvm use 16

(以上命令在 Windows/Linux/macOS 上均适用,nvm 的具体安装请参照对应平台的指南。)

手动安装:若未安装 nvm,请前往 Node.js 历史版本库 获取安装包。

3. 清理旧依赖(建议执行)

如果你之前用其他 Node 版本运行过该项目,为稳妥起见,建议先清理旧的依赖文件:

# Windows PowerShell 环境
Remove-Item -Recurse -Force node_modules
Remove-Item -Force package-lock.json

# Linux/macOS 环境
rm -rf node_modules package-lock.json

4. 安装项目依赖

执行安装命令:

npm install
:请使用 npm install 而非 npm ci,因为在首次构建或切换 Node 版本后,通常需要重新生成 lock 文件。

2026-01-28T16:37:33.png

5. 开始构建

5.1 开发模式(用于调试)
如果你想边修改代码边预览效果,运行:

npm run serve

启动后,在浏览器中访问 http://localhost:8080 即可实时查看。
2026-01-28T16:36:39.png

5.2 生产环境构建(用于部署)
如果你需要将应用部署到服务器,运行:

npm run build

构建完成后,所有生成的文件将位于 dist 目录中,将其上传至服务器即可运行。
2026-01-28T16:41:56.png

6. 制作浏览器插件(可选)

如果你想将其打包为浏览器扩展程序,运行:

npm run make-extension

2026-01-29T06:19:25.png

构建成功后会在 dist 目录生成三个扩展文件:popup.html、popup.js 和 manifest.json
2026-01-29T06:20:56.png


常见报错及解决方法

报错 1: error:0308010C:digital envelope routines::unsupported

  • 原因:典型的 OpenSSL 兼容性问题,通常由 Node.js 版本过高引起。
  • 解决:将 Node.js 降级至 v16.x 即可。

报错 2: parser.state.module.addPresentationalDependency is not a function

  • 原因:全局安装了 Webpack 5,与项目内的 Webpack 4 产生冲突。
  • 解决

    # 1. 移除全局冲突的 webpack
    npm uninstall -g webpack
    # 2. 彻底清理并重装项目依赖
    rm -rf node_modules package-lock.json
    npm install

报错 3: npm 环境警告

  • 如果看到类似 npm warn cli npm v11.x.x does not support Node.js v16.x.x 的提示,通常可以忽略,这仅是版本跨度提示,一般不影响最终构建结果。

目录结构说明

构建完成后,dist 目录结构大致如下:

dist/
├── index.html          # 应用主入口页面
├── loader.js           # 资源预加载脚本
├── css/                # 样式文件目录
├── js/                 # 核心逻辑及 Web Worker 脚本
├── img/                # 图片等静态资源
└── service-worker.js   # 离线应用支持脚本

2026-01-28T16:42:49.png


部署方案选择

方案一:Nginx 静态托管

dist 目录下的所有文件上传至你的 Nginx、Apache 服务器或任意静态托管服务/CDN。
2026-01-28T17:34:41.png

基础 Nginx 配置参考

server {
    listen 80;
    server_name your-domain.com;
    root /path/to/your/dist;
    index index.html;
    
    location / {
        try_files $uri $uri/ /index.html;
    }
}

方案二:Docker 容器化部署

使用项目提供的 Dockerfile 快速构建镜像并运行:

docker build -t unlock-music-web .
docker run -d -p 80:80 unlock-music-web

方案三:安装浏览器扩展

按照以下步骤,将构建好的扩展加载到浏览器中,即可在任意网页上便捷使用。

Chrome / Edge 浏览器安装步骤:

  1. 打开浏览器扩展管理页面
  2. 开启开发者模式

    • 在页面右上角找到并打开开发者模式开关
      2026-01-29T06:38:20.png
  3. 加载扩展

    • 点击“加载已解压的扩展程序”按钮
    • 在弹出的文件选择窗口中,定位并选择项目的 dist 目录
    • 点击“选择文件夹”完成加载
      2026-01-29T06:40:27.png
      2026-01-29T06:39:35.png
  4. 确认安装成功

    • 扩展列表中会出现“音乐解锁”扩展卡片
    • 确保扩展处于启用状态
      2026-01-29T06:41:27.png

Firefox 浏览器安装步骤:

  1. 打开调试页面

    • 地址栏输入 about:debugging#/runtime/this-firefox
  2. 临时加载附加组件

    • 点击“临时载入附加组件”按钮
    • 选择 dist 目录下的 manifest.json 文件
    • 点击“打开”完成加载

使用扩展:

打开后和网页版的一样

2026-01-29T06:42:11.png

注意:通过开发者模式加载的扩展在浏览器重启后可能需要重新加载。如需长期使用,建议通过官方扩展商店安装正式版本。

方案四:本地离线运行

直接下载并解压已构建好的产物包,在浏览器中打开 index.html 文件即可运行(注:此方式通常仅适用于 legacy 版本)。


安全与使用须知

隐私保护

  1. 纯本地运算:所有解密操作均在您的浏览器内部完成,程序不会将任何音频文件上传至服务器。
  2. 网络请求:仅在需要在线匹配专辑封面或同步元数据时,才会发起极少量的网络请求。
  3. 环境建议:为保障数据传输安全,建议在 HTTPS 协议下访问。同时,HTTPS 环境也能启用 Web Worker 以获得更好的并行处理性能。

效能建议

  • 处理大量文件:如果您需要处理数以万计的音乐文件,建议使用 CLI 命令行版本,效率更高。
  • 浏览器兼容性:推荐使用最新版本的 Chrome、Edge 或 Firefox 浏览器,以获得最佳的性能和兼容性。
  •  

Unlock Music音乐免费解锁详细使用教程

2026年1月28日 22:56

项目简介

Unlock Music 是一个开源的音乐文件解锁工具,可以在浏览器中直接解锁各大音乐平台的加密音乐文件。该项目基于 MIT 协议开源,主要用于学习和技术研究目的。

主要特性

支持的加密格式

Unlock Music 支持解锁以下主流音乐平台的加密文件:

🎵 QQ 音乐系列

  • .qmc0 / .qmc2 / .qmc3 - QQ 音乐旧版加密格式
  • .qmcflac / .qmcogg - QQ 音乐无损格式
  • .tkm - QQ 音乐特殊格式
  • .tm0 / .tm2 / .tm3 / .tm6 - QQ 音乐 Tm 格式
  • .mflac / .mgg / .mflac0 / .mgg1 / .mggl - QQ 音乐新格式
  • .bkcmp3 / .bkcflac - Moo 音乐格式
  • .ofl_en - QQ 音乐海外版 JOOX Music

🎵 其他平台

  • .ncm - 网易云音乐
  • .xm - 虾米音乐
  • .kwm - 酷我音乐
  • .kgm / .vpr - 酷狗音乐
  • .x2m / .x3m - 喜马拉雅(Android)
  • .mg3d - 咪咕音乐

核心功能

纯浏览器端解锁 - 所有处理在本地完成,无需上传文件
拖放操作 - 支持直接拖拽文件到页面
批量处理 - 一次性解锁多个文件
多线程加速 - 利用 Web Worker 提升处理速度
元信息编辑 - 支持写入和编辑歌曲标题、艺术家、专辑等信息
专辑封面 - 自动获取或手动添加专辑封面
PWA 支持 - 可作为渐进式 Web 应用离线使用
多种命名方式 - 支持多种文件命名格式(艺术家-歌曲名、歌曲名-艺术家等)

🚀 快速开始

方法一:在线使用(推荐)

  1. 访问在线版本:unlock-music 或官方站点
  2. 无需安装,直接使用

方法二:下载本地使用

步骤 1:下载预构建版本

从以下渠道获取最新版本:

⚠️ 重要提示:本地使用请下载 legacy 版本(modern 版本只能通过 HTTP(S) 协议访问)

步骤 2:解压并运行

  1. 下载后解压 ZIP 文件
  2. 找到 index.html 文件
  3. 双击打开即可使用(或通过本地 Web 服务器运行)
📌 注意:请勿直接运行源代码,必须先构建

📚 详细使用教程

基础操作

1. 上传文件

有两种方式上传加密文件:

方式 A:拖拽上传

  • 直接将加密的音乐文件拖拽到页面中央的上传区域
  • 支持一次拖拽多个文件

方式 B:点击选择

  • 点击上传区域的"点击选择"按钮
  • 在弹出的文件选择器中选择文件

2. 等待解锁

  • 文件上传后会自动开始解锁
  • 页面底部会显示进度条:已完成数 / 总数
  • 解锁成功会显示通知提示

3. 查看结果

解锁完成后,在页面下方的表格中可以看到:

列名说明
封面专辑封面图片
歌曲歌曲标题
歌手艺术家名称
专辑专辑名称
操作播放、下载、编辑、删除按钮

4. 下载文件

单个下载:点击表格中对应歌曲的 📥 下载按钮

批量下载:点击页面顶部的"下载全部"按钮

高级功能

🎨 编辑元信息

如果自动识别的信息不准确,可以手动编辑:

  1. 点击歌曲行的 ✏️ 编辑按钮
  2. 在弹出的对话框中可以修改:

    • 歌曲标题
    • 艺术家
    • 专辑名称
    • 专辑艺术家
    • 风格/类型
    • 专辑封面(支持上传自定义图片)
  3. 点击"确定"保存修改

📁 文件命名设置

在页面顶部可以选择下载文件的命名格式:

  • 歌手-歌曲名(默认):周杰伦 - 稻香.mp3
  • 歌曲名稻香.mp3
  • 歌曲名-歌手稻香 - 周杰伦.mp3
  • 同源文件名:保持原始文件名

💾 立即保存模式

对于大批量文件解锁:

  1. 勾选"立即保存"选项
  2. 解锁后的文件会立即下载,不在浏览器中保留
  3. 可以防止处理大量文件时内存不足

⚙️ 解密设定

某些格式需要额外配置:

  1. 点击"解密设定"按钮
  2. 根据需要填写相关参数(如 JOOX UUID)
  3. 保存设置后再进行解锁

🎵 播放功能

点击歌曲行的 ▶️ 播放按钮可以直接在浏览器中试听解锁后的音乐。

🗑️ 管理文件

  • 删除单个:点击歌曲行的 🗑️ 删除按钮
  • 清除全部:点击页面顶部的"清除全部"按钮

🔧 自行构建

详细构建与部署教程请查看:
[post cid="1570" /]

故障排除

常见问题

Q: 解锁失败怎么办?

A:

  • 确认文件格式是否在支持列表中
  • 检查文件是否损坏
  • 某些格式(如 JOOX)需要在"解密设定"中配置参数
  • 查看浏览器控制台是否有错误信息

Q: 为什么没有专辑封面?

A:

  • 自动获取封面需要联网
  • 可以手动编辑添加自定义封面图片
  • 部分歌曲可能没有可用的封面信息

Q: 批量处理速度慢?

A:

  • 在 HTTPS 环境下使用可启用多线程加速
  • 使用"立即保存"模式避免内存占用
  • 大批量建议使用 CLI 版本

Q: 下载的文件在哪里?

A: 文件会下载到浏览器默认下载目录,可在浏览器设置中查看和修改。

  •  

Google AI Pro (Gemini 3) 学生优惠免费领取详细教程

2026年1月28日 00:32

简介

Gemini 3 (Google AI Pro) 是谷歌推出的最强 AI 模型订阅计划。由于该服务目前对地区和身份有严格限制,许多用户无法直接开启。本教程将手把手教你如何通过环境伪装与特定工具,成功激活学生优惠福利。

2026-01-27T15:57:18.png

准备工作

  • 谷歌账号:建议使用常用老号
  • 纯净网络环境:美国住宅 IP + 指纹浏览器(防止被谷歌识别为大陆用户)
  • 辅助工具:常规科学上网工具
  • 外币卡:一张海外 VISA/Mastercard 信用卡(用于验证,不会扣费)

认证步骤

第一步:搭建稳定的网络环境

1. 下载指纹浏览器

常见的指纹浏览器有 ADSMoreLoginRoxyBrowser 等,我这里用 RoxyBrowser 作为演示

2. 新建窗口

创建窗口并保存即可
2026-01-27T14:16:42.png
2026-01-27T14:17:18.png

3. 购买住宅代理 IP

2026-01-27T14:19:22.png
2026-01-27T14:20:38.png

4. 配置代理 IP

2026-01-27T14:24:00.png
2026-01-27T14:24:22.png

5. 开启指纹浏览器

打开之前请先开启本地另一个代理(最好开 TUN 模式),确保右上角 IP 为国外。
2026-01-27T14:31:14.png

点击打开

2026-01-27T14:31:56.png

第二步:进入学生认证地址,检查是否有资格

如果你看到的是此账号无法订阅,则参考文末解决方案
2026-01-27T14:51:12.png

第三步:前往 Batch Verifier 进行解密

  • 复制这个验证链接,注意不要点进去
  • 解密工具地址:https://batch.1key.me/
  • 将链接粘贴在 input 框内
  • 查看 Result 框内成功的信息
    2026-01-27T14:58:56.png
    2026-01-27T15:02:34.png
    2026-01-27T15:03:45.png

第四步:绑卡领取优惠

第三步成功后,刷新一下验证资格页面,会提示畅享学生优惠
2026-01-27T15:08:55.png

添加卡作为付款方式
2026-01-27T15:09:51.png

使用 VISA 卡,填写信息,然后保存
2026-01-27T15:10:43.png

第五步:领取成功并验证

成功领取 Google AI Pro 全部福利
2026-01-27T15:56:36.png
2026-01-27T15:56:48.png

2026-01-27T15:13:33.png

可以用普通代理查看并使用 Gemini 3
2026-01-27T15:14:27.png

常见问题解决

1. 遇到此账号没有资格的情况:This account isn't eligible for the Google AI Pro plan

2. 优惠不可用:This offer is not available

2026-01-27T15:31:33.png

  • 添加一个 VISA 卡,我提供一个卡号。可能需要修改月/年(不小于操作当日)、持卡人姓名(随便填),地址可以一模一样
    2026-01-27T15:41:51.png
  • 保存之后即使提示失败或者需要验证之类的都不用管,地址会被改成美国就够了
  •  

CommentAI - Typecho博客AI智能评论回复插件

2026年1月25日 20:25

简介

CommentAI 是一个 Typecho 博客的 AI 智能评论回复插件。

核心功能

  • 自动生成评论回复
  • 三种工作模式可选(自动回复、人工审核、仅建议)
  • 支持通义千问、OpenAI、DeepSeek、Kimi 等模型设置
  • 支持上下文感知回复
  • 支持敏感词过滤和频率限制
  • 支持回复延迟
  • 支持触发条件设置
  • 支持AI标识显示

安装

环境要求

  • Typecho 1.2.0 - 1.3.0
  • PHP 7.0+(需要 curl、json、mbstring 扩展)
  • MySQL 5.7+ 或 SQLite 3.0+
  • AI 服务 API Key

安装步骤

  1. 上传 CommentAI 文件夹到 /usr/plugins/ 目录
  2. 后台「控制台」→「插件」→ 启用「CommentAI」
  3. 插件自动创建数据库表
  4. 创建失败则手动执行**install.sql文件

配置

基础配置

插件开关

  • 启用/禁用插件

回复模式

  • 全自动:AI 生成后直接发布
  • 人工审核:生成后需人工审核
  • 仅建议:仅作参考,不发布

管理员 UID

  • AI 回复使用的用户身份,默认为 1

2026-01-25T12:03:19.png

AI 平台配置

支持平台

  • 阿里云百炼:国内访问快,价格实惠
  • OpenAI:质量高,需国际网络
  • DeepSeek:性价比高
  • Kimi(月之暗面):国产大模型
  • 自定义:支持 OpenAI 兼容接口

API 配置

  • API Key:必填,在对应平台获取
  • API 地址:可选,留空使用默认
  • 模型名称:如 qwen-plus、gpt-4o-mini、deepseek-chat、moonshot-v1-8k

2026-01-25T12:04:56.png

Prompt 配置

系统提示词

定义 AI 的角色和回复风格:

你是一位友好、专业的博主。根据读者评论生成恰当的回复。

要求:
1. 语气自然、亲切
2. 针对评论内容给出有价值的回应
3. 对提问给出明确答案
4. 回复长度 50-150 字
5. 使用中文回复

上下文信息

  • 包含文章标题
  • 包含文章摘要(增加 Token 消耗)
  • 包含父级评论

2026-01-25T12:06:08.png

高级配置

温度参数

  • 0.0-0.3:确定性强
  • 0.4-0.7:平衡(推荐)
  • 0.8-1.0:创造性强

最大 Token 数

  • 建议 200-500

敏感词过滤

  • 每行一个敏感词

频率限制

  • 每小时最大调用次数,0 为不限制

回复延迟

  • 延迟多少秒回复,0 为立即回复(推荐)
  • 建议 30-120 秒

2026-01-25T12:06:53.png

显示设置

AI 标识

  • 显示:在回复末尾添加标识(推荐,可自定义)
  • 不显示:看起来像人工回复

触发条件

  • 仅对已审核的评论回复(推荐)
  • 忽略垃圾评论(推荐)
  • 忽略引用和 Trackback(推荐)
  • 仅对文章的第一条评论回复
  • 自动排除管理员评论

2026-01-25T12:07:33.png


使用

工作流程

  1. 读者发表评论
  2. 插件检查触发条件
  3. 延迟指定时间(如果配置了)
  4. 调用 AI 生成回复
  5. 根据模式处理

管理面板

访问:后台 → AI评论回复

功能

  • 统计卡片:显示各状态数量
  • 状态筛选:查看不同状态的回复
  • 队列列表:查看详细信息
  • 操作按钮:发布、拒绝、重新生成、查看原评论

工具栏

  • 刷新:重新加载数据
  • 清理旧记录:删除 30 天前的记录
  • 插件设置:跳转到配置页面
  • 测试连接:测试 AI 服务

2026-01-25T12:08:49.png


最佳实践

提升回复质量

  1. 优化系统提示词

    • 明确角色定位
    • 详细描述风格
    • 设定长度范围
  2. 合理配置上下文

    • 技术博客:启用标题和摘要
    • 生活博客:仅启用标题
  3. 调整温度参数

    • 技术问答:0.3-0.5
    • 创意内容:0.7-0.9

控制成本

  1. 设置频率限制
  2. 优化 Token 消耗
  3. 选择合适模型
  4. 使用人工审核模式

安全建议

  1. 保护 API Key
  2. 配置敏感词
  3. 保持透明

故障排查

插件激活失败

  • 检查数据库权限
  • 确认数据库类型

AI 回复未生成

  • 检查插件是否启用
  • 检查触发条件设置
  • 检查频率限制
  • 确认不是管理员评论

API 调用失败

  • 验证 API Key
  • 测试网络连接
  • 检查 API 地址
  • 确认模型名称
  • 检查账户余额

查看日志

日志位置:/usr/plugins/CommentAI/runtime.log

tail -f /path/to/typecho/usr/plugins/CommentAI/runtime.log

2026-01-25T12:09:57.png


卸载

  1. 后台禁用插件
  2. 删除插件文件夹
  3. (可选)删除数据库表:
DROP TABLE IF EXISTS `typecho_comment_ai_queue`;

下载地址

Github:
[hide]
https://github.com/BXCQ/CommentAI
[/hide]

  •  

PC掌玩:在手机上畅玩 Steam 游戏,开启移动游戏新体验

2026年1月23日 21:53

应用简介

PC掌玩 是 realme(OPPO 旗下子品牌)近期推出的一款创新应用。它支持绑定 Steam 账号,能够快速同步游戏库与云存档,实现游戏的快捷启动与便捷管理。

安装与体验过程

1. 启动与界面

打开应用后,界面简洁直观。

2026-01-23T13:27:41.png

2. Steam 账号绑定

点击绑定 Steam 账号。为了更快捷地完成授权,建议手机端预先安装好 Steam App。

2026-01-23T13:28:12.png

3. 游戏库同步

绑定成功后,你的全部 Steam 游戏将会完整呈现。

2026-01-23T13:29:07.png

4. 运行兼容性分级

应用会智能检测并标注游戏的运行状态,将其分为:体验流畅可运行 以及 暂不支持,方便用户筛选。

2026-01-23T13:32:57.png

2026-01-23T13:33:38.png

2026-01-23T13:33:57.png

5. 个人数据与账号价值

在此可以查看详细的个人 Steam 统计:包括库存总量、累计总时长、成就获取数,以及账号的预估价值。

2026-01-23T13:36:48.png

6. 操作模式设置

针对不同游戏,您可以灵活切换触控模式外接手柄模式,并根据个人习惯微调映射。

2026-01-23T13:37:25.png

热门游戏实测

  • CS2 (Counter-Strike 2):目前提示尚不支持。
    2026-01-23T13:38:45.png
  • 古墓丽影:已支持运行,需要下载对应的资源文件。
    2026-01-23T13:39:38.png
  • 饥荒 (Don't Starve):实测运行非常流畅,触控体验良好。
    2026-01-23T13:40:17.png

    2026-01-23T13:40:32.png

    2026-01-23T13:40:52.png

总结与评价

总体来看,“PC掌玩”的初体验令人满意。对于轻量级独立游戏,它提供了极佳的便携化方案;若配合外接手柄,体验更佳。但对于大型 3A 大作,目前的表现受限于移动端性能,仍有提升空间。

下载地址

[hide]
网盘链接https://pan.quark.cn/s/8e00580e4e7d?pwd=h2zB
提取码:h2zB
[/hide]

  •  

WeFlow 分析与导出微信聊天记录,生成可视化年度报告

2026年1月22日 17:19

简介

WeFlow 是一款本地微信聊天记录查看、分析与导出工具,支持隐私保护、离线浏览、灵活导出和深度分析功能,可生成个性化年度报告。。

核心亮点

  • 隐私至上:所有数据均在本地处理,不上传云端,确保隐私安全。
  • 离线浏览:支持解密并离线查看完整的微信聊天记录。
  • 灵活导出:可将聊天记录导出为 HTML 格式,方便分享与存档。
  • 深度分析:从海量消息中提取有趣数据,生成年度回顾或双人关系报告。

详细使用教程

第一步:获取工具

首先需要下载 WeFlow 1.3.0 版本:

2026-01-22T06:57:18.png

第二步:安装软件

运行安装包,按照提示完成安装。

2026-01-22T06:57:55.png

第三步:选择安装路径

建议选择剩余空间较大的磁盘。

2026-01-22T07:02:08.png

第四步:启动 WeFlow

安装完成后,点击完成并运行软件。
2026-01-22T07:02:48.png

第五步:设置数据库目录

先自动检测,若未成功,则手动选择微信数据的存储目录。

2026-01-22T07:05:29.png
手动选择微信存储位置:
2026-01-22T07:05:06.png

第六步:缓存目录配置

缓存目录通常默认留空即可。

2026-01-22T07:08:48.png

第七步:获取解密密钥

输入你的微信 wxid(注意:这里填写的是 ID,不是微信昵称)。获取秘钥前请确保已退出电脑端微信。

2026-01-22T07:09:46.png
2026-01-22T07:09:57.png

第八步:获取图片密钥

若获取失败,请尝试重新登录微信并打开朋友圈后再次重试。

2026-01-22T07:13:51.png

第九步:进入主界面

完成配置后即可进入主页面,开启聊天记录探索之旅。

2026-01-22T07:19:15.png

个性化设置

更换主题颜色

支持多种配色方案,适配你的视觉偏好。
2026-01-22T07:22:37.png

下载语音识别模型

下载模型后可实现本地语音转文字,方便检索语音消息。
2026-01-22T07:24:43.png

功能演示

1. 浏览聊天记录

完美还原聊天场景,支持查看原图、表情包及多媒体文件。
2026-01-22T07:27:58.png

2. 深度数据分析

多维度统计私聊与群聊数据,一键生成关键词云与活跃度画像。
2026-01-22T07:32:10.png
2026-01-22T07:31:36.png

3. 年度报告生成

从海量消息中提取关键指标,生成充满回忆色彩的个性化年度回顾。
2026-01-22T07:33:02.png

4. 灵活数据导出

支持自定义时间范围、导出格式及多媒体文件项。
2026-01-22T07:35:59.png

总结说明

  • 本地实时查看:秒级同步,丝滑体验。
  • 统计分析:科学量化互动频率。
  • 年度报告:可视化呈现关系深度。
  • 多格式导出:HTML 等排版精美,易于存档。
  • 开源透明:安全可靠,社区驱动。

项目地址

WeFlow 是一个开源项目,你可以在 GitHub 上查看源代码和详细文档:
🔗 GitHub: hicccc77/WeFlow

写在最后

腾讯向 GitHub 发函要求下架微信聊天记录导出项目😅的影响下,诸多同类项目(如 WeChat CleanEchoTrace)已相继停更或下架。此类好用的工具且用且珍惜,建议大家及时下载。

2026-01-22T08:53:48.png


  •  

UI UX Pro Max 在Cursor和Qoder中的配置与实测

2026年1月21日 23:08

简介

UI UX Pro Max 是一款专为 AI 编辑器设计的智能技能插件,能够帮助开发者在多个平台和框架上快速构建专业级的 UI/UX 界面。它通过 AI 驱动的设计建议,大幅提升界面开发的效率和质量。

2026-01-21T14:08:18.png

安装与配置

前置要求

在开始安装之前,请确保你的本地环境已安装 Python 3.x 版本:
2026-01-21T14:14:04.png

全局安装 uipro-cli

2026-01-21T14:29:53.png

打开终端,执行以下命令进行全局安装:

npm install -g uipro-cli

安装完成后,你将看到类似下图的成功提示:

2026-01-21T14:31:08.png

项目初始化配置

在你的前端项目根目录中打开终端,根据使用的 AI 编辑器执行相应的初始化命令:

Qoder 用户:

uipro init --ai qoder

Cursor 用户:

uipro init --ai cursor

初始化成功后,项目目录下会自动生成相应的配置文件:

2026-01-21T14:32:24.png

使用方法

不同的 AI 编辑器使用方式略有差异:

Qoder:

  • 直接在对话框中描述你的需求,AI 会自动调用 UI UX Pro Max 技能
  • 例如:“优化这个登录页面的布局”

Cursor:

  • 输入 / 唤起命令面板
  • 在命令列表中选择 ui-ux-pro-max,然后描述你的设计需求
  • 例如:“/ui-ux-pro-max 优化这个登录页面的布局”

2026-01-21T14:38:19.png

实测效果对比

为了直观展示 UI UX Pro Max 的优化效果,我找了一个上学期做的AI聊天&图文生成应用的Vue前端页面进行了前后对比测试。

优化前的界面

原始界面样式较为基础:
2026-01-21T14:47:14.png
2026-01-21T14:47:26.png
2026-01-21T14:47:37.png
2026-01-21T14:47:49.png

优化后的界面

使用 UI UX Pro Max 优化后的效果:
2026-01-21T14:48:17.png
2026-01-21T14:48:30.png
2026-01-21T14:48:37.png
2026-01-21T14:48:44.png

可以看到,优化后的界面风格与官网展示的专业模板基本一致:
2026-01-21T14:50:23.png
2026-01-21T14:50:44.png

总结与建议

通过实际测试,使用 UI UX Pro Max 后的界面相比普通 AI 生成的代码,在以下方面有明显提升:

  • 整体协调性:色彩搭配、间距布局更加专业和谐
  • 细节打磨:阴影、圆角、过渡动画等细节处理更加精致
  • 设计规范:更符合现代 UI/UX 设计的最佳实践

使用建议:

  1. 对于新项目,建议从零开始使用 UI UX Pro Max,效果会更加显著
  2. 对于现有项目的改造,可能需要多次迭代才能达到最佳效果
  3. 可以访问官网查看更多设计模板和使用案例
  4. 结合具体的设计系统(如 Material Design、Ant Design)使用效果更佳

UI UX Pro Max 是一个强大的设计辅助工具,能够帮助开发者在不具备专业设计能力的情况下,也能创建出高质量的用户界面。

  •  

CategoryBatchManager - Typecho后台文章分类批量管理插件

2026年1月19日 21:34

插件简介

CategoryBatchManager 是一款 Typecho 后台文章分类批量管理插件,主要功能:

  • 文章管理列表 中提供批量操作:

    • “移动到分类…”:将选中文章的分类替换为所选分类;
    • “添加分类…”:在原有分类基础上追加新分类;
    • “移除分类…”:从文章已有分类中移除某些分类。
  • 在文章列表每一行的 “分类”列 尾部增加一个小的 “分类” 链接:

    • 点击可快速为单篇文章调整分类。

整体操作基于 AJAX 完成,避免整页刷新,提升后台管理效率。

环境要求

  • Typecho:版本 1.2.1
  • PHP:版本 7.0.0 及以上(兼容 PHP 8.0)

插件在激活时会自动检查当前环境版本,如果版本过低,会在后台插件页给出明确错误提示,防止在不兼容环境中运行。

安装步骤

  1. 将插件代码放入 Typecho 的插件目录:

    • 路径结构如下:

      usr/
        plugins/
          CategoryBatchManager/
            Plugin.php
            Action.php
  2. 登录 Typecho 后台 → 控制台 → 插件,找到:

    • 插件名称:CategoryBatchManager(文章分类批量管理)
  3. 点击 “启动” 插件:

    • 如果 PHP / Typecho 版本不满足要求,会直接提示:

      • CategoryBatchManager 需要 PHP 7.0 或更高版本
      • CategoryBatchManager 需要 Typecho 1.2.1
    • 符合要求则启动成功。

功能使用说明

1. 批量分类操作

  1. 打开后台:控制台 → 文章 → 所有文章
  2. 在列表顶部/底部的 “选中项” 下拉菜单中,你会看到新增的 3 个选项:

    • “移动到分类…”
    • “添加分类…”
    • “移除分类…”
  3. 使用步骤:

    1. 勾选需要操作的多篇文章(左侧复选框)。
    2. 点击其中一个批量分类操作(例如“移动到分类…”)。
    3. 页面会弹出一个分类选择弹窗,特点:

      • 列出所有分类,按照层级缩进展示,支持子分类;
      • 顶部带有 搜索框,输入可筛选分类;
      • 支持多选分类(按住 Ctrl/多次勾选)。
    4. 选择好目标分类后点击 “确定”

      • 插件会通过 AJAX 请求 /action/category-batch
      • 后台更新 table.relationshipscid-mid 的分类关系;
      • 前端会直接更新列表中对应文章的“分类”列,无需刷新整页。
  4. 三种操作的具体逻辑:

    • 移动到分类(move)

      • 对选中文章:先删除该文章所有“分类”关联(仅限 metas.type = 'category' 的关系),再写入你新选择的分类。
      • 适用于“文章从 A 版块整体迁移到 B 版块”。
        例如:将此三篇文章从实践教程移动到性能测试
        2026-01-19T13:14:37.png
        2026-01-19T13:15:46.png
        2026-01-19T13:16:30.png
    • 添加分类(add)

      • 在当前已有分类基础上追加你新选择的分类;
      • 已存在的关系不会重复添加。
      • 适用于“批量为一批文章增加一个额外分类”。
        例如:为飞牛nas分类下的三篇文章添加环境配置分类
        2026-01-19T13:19:13.png
        2026-01-19T13:19:44.png
        2026-01-19T13:20:09.png
    • 移除分类(remove)

      • 仅删除你选中的那些分类与文章的关系;
      • 未勾选的其它分类不受影响。
      • 适用于“批量清理某个分类下的文章归属”。
        例如:移除上面加的环境配置分类
        2026-01-19T13:20:57.png
        2026-01-19T13:21:22.png
        2026-01-19T13:21:40.png

2. 单篇文章快速分类修改

文章列表的“分类”列 中,每一行分类的后面会有一个小的 灰色“分类” 链接(字体较小):

  1. 点击这一行的小“分类”链接:

    • 插件会自动读取当前这一篇文章所属的分类(解析该单元格内原有的分类链接 URL 中的 category=mid 参数)。
    • 弹出与批量操作相同的分类选择弹窗。
    • 弹窗内会 预先勾选该文章当前的分类
  2. 在弹窗中重新勾选你想要的分类,然后点击 “确定”

    • 对该篇文章执行 “移动到分类” 操作,即覆盖原分类关系(可单选可多选)。
    • 列表中的这一行“分类”列会立即更新。

这个功能特别适合对少数文章进行微调,而不必进入 write-post.php 编辑页面。
2026-01-19T13:25:47.png
2026-01-19T13:27:36.png
2026-01-19T13:27:52.png

3. 批量分类刷新计数

分类管理页面(manage-categories.php) 的顶部左侧会自动出现一个 "刷新分类计数" 按钮:

  • 位置:分类管理页面顶部左侧,紧挨着现有的操作按钮
  • 样式:蓝色按钮 .btn btn-s,与 Typecho 后台风格一致
  • 功能:

    • 遍历数据库中所有分类(type='category')
    • 重新统计每个分类下已发布文章的数量
    • 更新 table.metas 表中对应的 count 字段
      2026-01-20T07:22:42.png

权限与安全

  • 所有批量操作都基于 Typecho 的后台权限体系:

    • 仅当用户已登录并且具备 编辑及以上权限$user->pass('editor', true))时,才允许调用批量分类接口。
  • 后端接口路径:

    • POST /action/category-batch
    • 参数:

      • do=batch
      • op=move|add|remove
      • cid[]:文章 ID 列表
      • mid[]:分类 ID 列表
  • 插件只会操作 metas.type = 'category' 的关系,不会影响标签等其它 metas

常见问题

  • 看不到新增的批量菜单项?

    • 确认已启动 CategoryBatchManager 插件;
    • 确认当前页面是 manage-posts.php(文章管理列表),插件只在这个页面注入 JS/HTML;
    • 清理浏览器缓存后再试。
  • 分类弹窗里没有任何分类?

    • 检查后台是否已经创建了分类;
    • 插件通过 \Widget\Metas\Category\Rows 获取分类数据,与编辑文章页面的分类列表是同一来源。
  • 操作后分类没变?

    • 看浏览器控制台是否有 AJAX 请求报错;
    • 检查当前登录用户是否拥有 editor 以上权限。

下载地址

[hide]
Github:https://github.com/BXCQ/CategoryBatchManager
迅雷云盘:https://pan.xunlei.com/s/VOjPLgIL7aT8KHwit5tGQu9SA1?pwd=umje#
[/hide]

  •  

彻底清除与飞牛OS共存的宝塔面板教程

2026年1月17日 17:27

为什么必须彻底清理?

宝塔面板不仅安装服务,还会:

  • 锁定关键文件(.user.inichattr +i
  • 启用 AppArmor/SELinux 安全策略
  • 修改 systemd 服务和内核参数
  • 即使“卸载”,仍会残留进程和配置

彻底清除步骤

第一步:运行宝塔官方卸载脚本

wget http://download.bt.cn/install/bt-uninstall.sh
sudo bash bt-uninstall.sh

→ 选择 【2】卸载宝塔及运行环境
2026-01-17T09:01:32.png

第二步:清除顽固进程

# 强制终止残留进程
sudo pkill -f "site_total"
sudo pkill -f "php-fpm"
# 验证是否清除
ps aux | grep -E 'site_total|php-fpm' | grep -v grep"

2026-01-17T09:03:33.png

第三步:解除文件锁定并删除 /www

[hide]

# 移除 immutable 属性(关键!)
sudo find /www -name ".user.ini" -exec chattr -i {} \; 2>/dev/null

# 删除主目录
sudo rm -rf /www

# 验证
ls /www 2>/dev/null && echo "未删干净" || echo "/www 已删除"

[/hide]
2026-01-17T09:07:38.png

第四步:禁用 AppArmor(防止 Docker 启动失败)

# 临时清理策略
sudo aa-teardown

# 永久禁用(编辑 GRUB)
sudo nano /etc/default/grub

将:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

改为:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash apparmor=0 security=none"

保存后执行:

sudo update-grub
sudo reboot

2026-01-17T09:10:46.png

第五步:重置 Docker 环境(可选但推荐)

sudo systemctl stop docker
sudo rm -rf /vol1/docker
sudo mkdir -p /vol1/docker/volumes
sudo chown root:docker /vol1/docker
sudo chmod 775 /vol1/docker
sudo systemctl start docker

重要提醒

  • 如需建站,请使用飞牛「应用中心」中的官方应用宝塔
  • 保持系统纯净,才能确保长期稳定运行
  •  

解决飞牛nas更新后提示“数据库读写错误”无法挂载硬盘

2026年1月17日 16:48

问题及原因

升级到飞牛OS 1.1.11 后,在 Web 界面挂载硬盘时提示 “数据库读写错误”

2026-01-17T08:28:41.png

飞牛OS 1.1.11 版本 默认启用了 AppArmor 安全模块,但未正确配置对 /vol1 目录(用户数据盘)的访问权限。
这导致:

  • trim_license 服务无法写入 PostgreSQL 数据库
  • Docker 无法创建 volume 元数据(metadata.db
  • 硬盘挂载流程因数据库操作失败而中断

解决方案:禁用 AppArmor 内核安全模块

此操作仅在飞牛OS环境下安全,不建议在通用 Linux 服务器上使用。

步骤 1:通过 SSH 登录飞牛OS

ssh admin@你的飞牛IP

2026-02-02T10:08:59.png

步骤 2:编辑 GRUB 启动参数

使用root权限时需要输入密码(密码输入时不会显示)

sudo nano /etc/default/grub

2026-02-02T10:13:44.png

找到以下行:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

修改为
[hide]

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash apparmor=0 security=none"

[/hide]

Ctrl+O → 回车保存,Ctrl+X 退出。

2026-01-17T08:31:05.png

步骤 3:更新引导配置并重启

sudo update-grub
sudo reboot

步骤 4:验证修复结果

系统重启后,登录 Web 界面:

  • 尝试重新挂载硬盘
  • 应不再出现“数据库读写失败”错误
    2026-01-17T08:39:36.png

可选验证命令(SSH 中执行):

systemctl is-active trim_license postgresql@15-main

2026-01-17T08:33:40.png


补充说明

  • 禁用 apparmor=0 不会影响飞牛OS核心功能,反而能解决兼容性问题
  • 若未来官方修复此问题,可通过恢复 GRUB 参数重新启用 AppArmor
  •  

飞牛NAS更新后无法登录(502/系统内部错误)解决方案

2026年1月17日 00:27

前言

在25年11月,我将飞牛os从0.9.35更新到1.x.x后,发现登不进去了。然后我一直怀疑是飞牛frpc服务未重启,就让家里人手动重启了几次,但都不行。最后也是在寒假第一天晚上修复了,不是frp的问题。


问题现象

  • 浏览器访问 Web 界面时卡在登录页
    2026-01-16T15:17:01.png
  • 控制台报错:

    GET http://192.168.1.9:5666/license/v1/device/baseInfo 502 (Bad Gateway)
  • SSH 登录后发现 trim_license.service 反复崩溃
    2026-01-16T14:10:25.png

解决步骤

第一步:确认核心服务状态

# 检查飞牛相关服务
systemctl list-units --type=service | grep trim

# 检查 Nginx(应为 running)
systemctl status nginx

# 检查 PostgreSQL 是否安装
systemctl list-unit-files | grep postgresql
预期输出:存在 postgresql.service 且为 enabled,但 trim_licenseinactive 或反复重启。

2026-01-16T14:37:36.png

第二步:检查 PostgreSQL 集群状态

# 查看 PostgreSQL 集群列表
sudo pg_lsclusters

示例输出:

Ver Cluster Port Status Owner    Data directory              Log file
15  main    5432 down   postgres /var/lib/postgresql/15/main ...

若状态为 down,说明数据库未运行。

2026-01-16T14:45:29.png

第三步:排查 PostgreSQL 启动失败原因

尝试启动集群:

sudo pg_ctlcluster 15 main start

若失败,查看详细日志:

sudo journalctl -xeu postgresql@15-main.service --no-pager | tail -n 30

关键错误示例

could not bind IPv4 address "127.0.0.1": Address already in use
FATAL: could not create any TCP/IP sockets

表明 5432 端口已被占用

2026-01-16T15:08:53.png

第四步:释放被占用的 5432 端口

1. 查找占用端口的进程

sudo ss -tulnp | grep :5432

示例输出:

tcp LISTEN ... 127.0.0.1:5432 ... users:(("postgres",pid=1358,fd=8))

2. 终止残留进程

sudo kill -9 1358  # 替换为实际 PID

3. 清理残留 PID 文件

sudo rm -f /var/lib/postgresql/15/main/postmaster.pid
sudo rm -f /run/postgresql/*.pid

2026-01-16T15:02:41.png


第五步:启动 PostgreSQL 并验证

# 启动正规集群
sudo pg_ctlcluster 15 main start

# 验证 socket 文件生成
ls /var/run/postgresql/

正常输出应包含:

.s.PGSQL.5432  15-main.pid

第六步:启动 License 服务

# 启动授权服务
sudo systemctl start trim_license

# 验证状态
systemctl status trim_license
预期状态:Active: active (running)

2026-01-16T15:14:27.png

第七步:设置开机自启(防止重启后复现)

# 启用 PostgreSQL 集群自启
sudo systemctl enable postgresql@15-main

# 确保 license 服务自启(通常已启用)
sudo systemctl enable trim_license

验证与总结

  1. 输入账号密码,登录成功
    2026-01-16T15:18:02.png
适用场景:飞牛OS系统更新后,Web 管理界面无法登录,提示 502 Bad Gateway 或“系统内部错误”,且浏览器开发者工具中可见 /license/v1/device/baseInfo 请求失败。
根本原因trim_license 服务依赖 PostgreSQL 数据库,但更新后 PostgreSQL 未正常运行或端口被残留进程占用,导致授权服务启动失败。

附:完整修复命令汇总(可一键复制执行)

[hide]

# 1. 查看并终止占用 5432 的进程
sudo ss -tulnp | grep :5432
sudo kill -9 1358  # 替换为实际 PID

# 2. 清理残留文件
sudo rm -f /var/lib/postgresql/15/main/postmaster.pid
sudo rm -f /run/postgresql/*.pid

# 3. 启动 PostgreSQL 集群
sudo pg_ctlcluster 15 main start

# 4. 验证 socket
ls /var/run/postgresql/

# 5. 启动 license 服务
sudo systemctl start trim_license

# 6. 设置开机自启
sudo systemctl enable postgresql@15-main
sudo systemctl enable trim_license

# 7. 检查状态
systemctl status trim_license

[/hide]

  •  

解决LoadRunner录制时无网络连接及 SSL、415等回放错误

2026年1月15日 02:12

LoadRunner 在录制脚本时经常会遇到网络连接失败、回放报错等问题,这些问题往往与本地代理配置、防火墙设置或浏览器缓存有关。本文从实际场景出发,提供完整的排查与解决方案。

前言

期末作业需要用LoadRunner对上学期开发的项目做性能测试。我早早的做完了作业并完成了答辩,后面陆续帮助舍友和同学解决了录制等问题,把遇到的问题和解决方案都给总结了一下,发了三篇简单的教程。

在解决了五六位同学的问题后,发现对每个人的问题和方法都不太一样。所以下面这些解决办法,建议可以每个都尝试一下,大概率可以得到解决。


一、录制阶段:无法连接网络问题

问题表现

使用 LoadRunner 12.55 录制时,启动后会提示 "无 Internet 连接"
2026-01-14T09:33:11.png

排查思路

LoadRunner 录制通过拦截浏览器的 HTTP(S) 流量实现,因此本地防火墙、代理软件都可能干扰流量捕获。应首先排除系统层面的干扰,再根据是否使用代理进行配置。


解决方案一:关闭本地防火墙

适用场景: 所有情况下优先检查
防火墙(如 Microsoft Defender、火绒等)可能会阻止 LoadRunner 的网络监听行为。

  • 打开 Windows 安全中心 -> 防火墙和网络保护
  • 临时关闭所有网络配置文件的防火墙。
    2026-01-14T17:29:38.png

解决方案二:配置 HTTP 代理(根据本地环境选择)

场景 A:本地未安装任何代理软件

操作步骤:

  1. 进入 Recording Options -> HTTP Properties -> Advanced
  2. 在代理设置中选择使用LoadRunner代理服务器。
    2026-01-14T13:08:23.png

场景 B:本地安装了代理软件(如 Clash、Clash Verge)

操作步骤:

  1. 配置端口映射
    进入 Recording Options -> Network -> Port Mapping,添加目标服务器:

    • 目标服务器地址:被测网站的域名(如 petad.xuan.cyou
    • 目标端口2000(或被测网站实际端口,如 80
    • 筛选级别:选择 代码生成
      2026-01-14T13:13:21.png
      2026-01-14T13:14:20.png
      2026-01-14T16:48:13.png
  2. 配置代理服务器
    进入 Runtime Settings -> Internet Protocol -> Proxy -> Use Custom Proxy

    • 代理地址127.0.0.1
    • 代理端口

      • Clash:7890
      • Clash Verge:7897
        2026-01-14T16:55:18.png

解决方案三:清除浏览器缓存

适用场景: 被测网站在录制浏览器中存在登录态或缓存数据
浏览器缓存可能导致 LoadRunner 无法正确拦截首次请求。

  • 在录制浏览器中按 Ctrl + Shift + Delete,清除所有浏览数据。
    2026-01-14T17:07:22.png

成功标志

录制开始后,浏览器访问网站时会提示 "您的连接不是私密连接"(SSL 证书警告),点击 "继续访问" 即可正常录制。
2026-01-14T17:11:32.png


二、回放阶段:常见错误及解决方案

错误 1:录制后无代码生成

问题描述: 录制过程正常,但停止后 Action 文件为空。
解决方案: 这通常是端口映射或捕获级别问题,详细排查方法请参考:
[post cid="1402" /]


错误 2:SSL Protocol Error

完整报错信息:
SSL protocol error when attempting to connect with host "127.0.0.1"
2026-01-14T17:00:28.png

原因分析:
回放时使用套接字(Socket)模式与 SSL 握手不兼容。

解决方法:
进入 Runtime Settings -> Internet Protocol -> Preferences,勾选 "Use WinInet replay instead of Sockets"(使用 WinINet 回放而非套接字)。
2026-01-14T17:01:52.png


错误 3:HTTP 415 (Unsupported Media Type)

完整报错信息:
对于"https://petad.xuan.cyou/api/product/update",HTTP 状态代码=415 (Unsupported Media Type)
2026-01-14T17:24:45.png

原因分析:
服务端要求请求头包含 Content-Type: application/json,但 LoadRunner 录制时未自动添加。

解决方法:
在对应的 web_submit_dataweb_custom_request 函数之前手动添加请求头:

web_add_header("Content-Type", "application/json");

2026-01-14T17:27:28.png


三、总结与建议

这软件真是一坨💩

  •  

解决 LoadRunner 录制后无脚本代码生成的几种方案

2026年1月12日 23:04

在使用 LoadRunner 进行脚本录制时,经常会遇到“显示录制成功但脚本内容为空”的问题。这通常是由于网络劫持、浏览器兼容性或录制设置不当导致的。以下是针对该问题的详细排查与解决方案。

本教程的LoadRunnr的版本为12.55

一、 问题复现

  1. 录制过程正常:录制显示有事件计数。
  2. 生成结果为空:停止录制后,Action 文件中没有生成任何 Web 函数代码。

二、 解决方案(按建议尝试顺序排列)

1. 切换网络环境

部分宽带运营商(如校园网或某些拨号宽带)可能存在复杂的代理或过滤机制。建议将网络连接从有线宽带改为移动热点(WiFi)尝试重新录制。

2. 修改端口映射捕获级别

这是最常见的解决方法。LoadRunner 默认的捕获级别可能无法识别某些协议流量。

  • 进入 Recording Options(录制选项)。
  • 导航至 Network -> Port Mapping -> Capture Level
  • 将捕获级别修改为:Socket level data and WinINet level data(套接字级别数据和 WinINet 级别数据)。

3. 使用 LoadRunner 内置浏览器

针对教务系统等基于老旧架构的网站,外部浏览器可能存在注入脚本失败的情况。建议切换为 LR 自带的绿色版浏览器。

  • 使用内置火狐浏览器 (Firefox)
  • 使用内置谷歌浏览器 (Chrome)

4. 调整系统与浏览器兼容性设置

如果必须使用 Edge 或 IE 录制,请检查以下设置:

  • Internet 属性:进入“高级”选项卡,确保勾选了 启用第三方浏览器扩展
  • Edge 浏览器设置:在 Edge 设置中,将“允许在 Internet Explorer 模式下重新加载网站 (IE 模式)”设为 不允许(避免流量被重定向到不可控的 IE 实例)。

5. 修改 HTTP 字符集与代理设置

在某些情况下,中文字符集导致录制解析失败。

  • Recording Options 中,进入 HTTP Properties -> Advanced
  • 确认字符集设置正确。同时检查 Proxy 设置,确保没有错误的代理干扰流量捕获。

6. 使用360浏览器

360 浏览器自带多种内核切换功能。在录制应用中选择 360 浏览器的可执行文件,并手动切换到 IE 兼容模式。这对那些只支持旧版 IE 的老网站非常有效,且其录制流量更容易被 LoadRunner 捕获。

  •  

LoadRunner 性能测试操作全流程:从脚本录制到结果分析

2026年1月12日 21:09
本教程使用的版本:12.55

一、 脚本录制 (VUGen)

1. 初始化与新建脚本

首先打开 LoadRunner,选择 Virtual User Generator (VUGen)。在首页点击“新建解决方案”或直接创建新脚本。

创建新脚本时,通常选择 Web - HTTP/HTML 协议。

2. 配置录制环境

点击录制按钮,在配置窗口中,应用程序(Application)选择对应的浏览器,并在 URL 地址栏输入被测网站的地址。

3. 执行业务录制

点击开始录制后,在浏览器中按照预定的业务流程进行操作。

4. 插入事务

为了精确衡量关键业务(如登录)的性能,需要在操作前后插入事务 (Transaction)

  • 开始事务:以登录功能为例,在点击登录前点击“插入事务”并命名为 login
  • 结束事务:成功登录后,点击“结束事务”并确认 login 事务结束。

5. 结束录制与生成代码

完成操作后停止录制,系统会自动生成脚本代码和录制报告。后续的性能优化和参数化工作将在生成的代码基础上进行。

6. 录制回放校验

在正式压测前,点击“回放 (Replay)”确保脚本在单用户环境下能正常跑通。

回放成功意味着脚本逻辑基本正确。

二、 场景创建 (Controller)

1. 创建压测场景

在 VUGen 工具栏中点击 工具 -> 创建场景,将脚本导入 Controller

设置场景名称并点击确定,即可完成初始化。

三、 场景设计与负载配置

本文以并发测试中的一个场景举例

根据压测目标(如 TS-2-1.1 用例)配置具体的负载参数。

1. 设置启动虚拟用户 (Ramp-up)

配置启动的 Vuser 总数以及启动频率(如每隔一定时间增加固定用户),模拟压力平稳上升的过程。

2. 设置持续时间 (Duration)

设置系统在峰值压力下的持续运行时间,以便观察系统的稳定性和资源消耗情况。

3. 设置停止虚拟用户 (Ramp-down)

配置测试结束时用户的退出方式,建议采用分批退出的方式。

四、 场景运行

切换到“运行”选项卡,点击开始执行场景。

测试完成后,Controller 将汇总所有实时监控数据。

五、 结果分析 (Analysis)

1. 启动分析引擎

点击 结果 -> 分析结果,系统将启动 Analysis 组件对收集到的原始数据进行整理。

2. 查看性能报告

在分析报告中,重点关注摘要报告(Summary Report)中的事务响应时间、吞吐量(Throughput)和每秒点击率(Hits per Second)等核心指标。

  •  

宝塔面板部署 Springboot+Vue+Sqlite 前后端项目教程

2026年1月12日 19:02

前言

本文记录一个宠物商店后台管理系统项目在宝塔面板上的部署流程,前端使用 Vue,后端为 Spring Boot。下文按“先部署后端,再部署前端”的顺序来说明。
这篇教程是半年前部署一个零工平台前后端项目时写的,写了一半停了,最近又部署了一个顺便把它完善一下。

项目概述

  • 前端:vue 项目
  • 后端:Spring Boot 3.3.5 + Java 17 + SQLite 数据库
  • 域名https://petad.xuan.cyou
  • 后端端口:8083

前端项目部署前的设置

配置说明:API 接口路径与环境设置

一般项目支持两种常见的接口路径配置方式,请根据后端接口的实际路径选择对应的方案。

场景一:接口已统一包含 /api 前缀(本项目选择)

若后端所有接口已统一添加 /api 前缀(例如:/api/product/list),则前端环境变量配置如下:

# .env.development
VITE_APP_BASE_API=http://localhost:8083

# .env.production
VITE_APP_BASE_API=https://petad.xuan.cyou

axios 实例中直接使用该变量作为 baseURL

// src/api/request.js 片段
const service = axios.create({
    baseURL: import.meta.env.VITE_APP_BASE_API || 'http://localhost:8083',
    timeout: 10000
})

各接口定义中需添加 /api 前缀:

// 示例接口:获取商品列表
export function getProductList(params) {
    return request({
        url: '/api/product/list', // 添加/api前缀
        method: 'get',
        params
    })
}

场景二:接口未统一添加 /api 前缀

若后端接口未统一添加 /api 前缀,则可将前缀直接配置在环境变量中:

# .env.development
VITE_APP_BASE_API=http://localhost:8083/api

# .env.production
VITE_APP_BASE_API=https://petad.xuan.cyou/api

axios 配置中直接使用完整基础路径:

// src/api/request.js 片段
const service = axios.create({
    baseURL: import.meta.env.VITE_APP_BASE_API || 'http://localhost:8083/api',
    timeout: 10000
})

此时,接口定义中不再需要 /api 前缀:

// 示例接口:获取商品列表
export function getProductList(params) {
    return request({
        url: '/product/list', // 无需/api前缀
        method: 'get',
        params
    })
}

通用配置:开发环境代理

无论选择上述哪种场景,在开发环境下均需在 vite.config.js 中配置代理,以便正确转发请求至后端服务:

// vite.config.js 片段
server: {
    proxy: {
      '/api': {
        target: 'http://localhost:8083', // 后端服务地址
        changeOrigin: true
      },
      '/images': {
        target: 'http://localhost:8083',
        changeOrigin: true
      }
    }
}

补充说明:路由模式与刷新 404 问题

如果项目使用 Vue Router 的 history 模式,部署后刷新非首页路由可能出现 404 错误。此时需在 Web 服务器(如 Nginx)中配置伪静态规则,将请求重定向至 index.html

以 Nginx 为例,可添加如下配置:

location / {
  try_files $uri $uri/ /index.html;
}

云服务器准备

1.选购

  • 我选用的是阿里云的云服务器,如果只是临时部署这个项目作为演示,选择最低配的就可以。
  • 镜像直接选择宝塔的应用镜像就行
  • 如果有别的需求,尽量选择DebianCentos StreamUbuntu
  • 如果选择的是上面三个,你需要手动配置宝塔面板并开放访问端口

2.查看面板登录信息

宝塔配置

1. 登录并进入面板

2. 创建一个静态网站

我用的是 SQLite,这里无需新创建数据库。
2026-01-12T09:01:14.png

申请免费SSL证书,启用https
2026-01-12T10:47:03.png

3. 上传项目前端代码

将前端打包后的 dist 目录上传到这里
2026-01-12T09:21:36.png
修改网站运行目录为 dist
2026-01-12T09:22:55.png

4. 上传项目数据库

在网站目录 /www/wwwroot/petad.xuan.cyou 下上传项目数据库
2026-01-12T09:03:33.png
2026-01-12T09:04:44.png
2026-01-12T09:05:08.png

选择完文件后,点击 管理,可以看到数据库里的表就可以了。
2026-01-12T09:06:26.png

5. 上传后端 SpringBoot 打包后的 jar

2026-01-12T09:07:23.png

如果你不知道如何把 SpringBoot 项目打包,可以参考这篇文章
[post cid="553" /]

6. 配置后端

添加 jar 包和 JDK(与开发环境一致)
2026-01-12T09:10:23.png

开放端口 8083
2026-01-12T09:11:07.png

7. 配置反向代理

这里的 8083 即为后端的运行端口
2026-01-13T07:28:00.png
注意配置文件写法是否正确,否则不会生效
2026-01-12T09:20:42.png
图片代理
2026-01-12T10:31:03.png

下面为代理的完整代码:

#PROXY-START/
location /api
{
    proxy_pass http://127.0.0.1:8083;
    proxy_set_header Host 127.0.0.1;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_http_version 1.1;
    # proxy_hide_header Upgrade;

    add_header X-Cache $upstream_cache_status;

    #Set Nginx Cache
    
    
    set $static_fileMUGM8Xk5 0;
    if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
    {
        set $static_fileMUGM8Xk5 1;
        expires 1m;
        }
    if ( $static_fileMUGM8Xk5 = 0 )
    {
    add_header Cache-Control no-cache;
    }
}
 # 图片资源代理
    location /images {
        proxy_pass http://localhost:8083/images;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        # 静态资源缓存
        expires 30d;    
    }
#PROXY-END/

最后

对部署的域名进行访问测试
2026-01-12T10:44:27.png
2026-01-12T10:44:48.png
部署成功。

  •  

EchoTrace 微信聊天年度报告生成教程

2026年1月3日 16:55

今天分享一个免费开源的微信年度报告总结工具——EchoTrace,以及详细的使用教程。

什么是 EchoTrace?

EchoTrace 是一个完全本地运行的微信聊天记录分析工具,具有以下特点:

  • 完全本地运行:所有数据都在你的电脑上处理,不上传任何数据到云端,确保隐私安全
  • 解密并离线查看:可以安全地浏览完整的微信聊天记录
  • 导出为 HTML:将聊天记录导出为 HTML 格式,方便与朋友分享
  • 生成个性化报告:从数万条消息中提取有趣的数据,生成独一无二的年度回顾报告和双人报告

使用前准备

在开始之前,请确保:

  1. 你的微信已升级到 PC 微信 4.0.x 以上版本
  2. 已下载两个工具:

    • wx_key.exe:用于提取微信数据库密钥
    • echotrace.exe:EchoTrace 主程序

详细使用步骤

步骤 1:下载工具

首先需要下载两个工具:wx_key.exeechotrace.exe

2026-01-03T08:11:18.png

步骤 2:提取数据库密钥

双击打开 wx_key.exe 工具。

2026-01-03T08:14:21.png

打开后,点击「开始提取秘钥」按钮。

2026-01-03T08:22:54.png

步骤 3:复制数据库密钥

提取成功后,复制获取到的数据库密钥(请妥善保管,后续配置需要使用)。

2026-01-03T08:25:12.png

步骤 4:打开 EchoTrace

双击打开 echotrace.exe 主程序。

2026-01-03T08:27:29.png

步骤 5:进入设置界面

点击左下角的「设置」按钮,进入配置界面。

2026-01-03T08:28:45.png

步骤 6:填入数据库密钥

在设置界面中,将步骤 3 中复制的数据库密钥粘贴到「数据库密钥」字段。

2026-01-03T08:29:47.png

步骤 7:选择数据库根目录

填写数据库根目录,建议使用「手动选择」方式。

2026-01-03T08:33:03.png

重要提示:选择目录时,只需选择到 xwechat_files 目录即可,不需要选择更深层的子目录。

2026-01-03T08:34:23.png

步骤 8:填写微信 WXID

填写你的微信 WXID(注意:这里填写的是 WXID,不是微信昵称)。

2026-01-03T08:36:00.png

步骤 9:测试并保存配置

填写完上述信息后,点击「测试」按钮验证配置是否正确。如果测试成功,即可保存配置。

注意:如果出现「无法连接数据库」的报错,这是正常现象,点击「前往数据库管理」继续下一步操作。

2026-01-03T08:38:50.png

步骤 10:批量解密数据库

在数据库管理界面中,点击「批量解密」按钮,对微信数据库进行解密处理。

2026-01-03T08:40:55.png

步骤 11:查看聊天记录

解密完成后,返回聊天记录界面,即可看到完整的聊天内容。

2026-01-03T08:53:01.png

步骤 12:生成年度报告

现在你可以查看生成的年度报告和双人报告了!这些报告会从你的聊天记录中提取有趣的数据,生成个性化的分析报告。

2026-01-03T10:12:22.png

示例截图

2026-01-03T13:44:39.png

[collapse status="false" title="展开查看更多"]
2026-01-03T13:45:06.png
2026-01-03T13:45:17.png

2026-01-03T13:45:48.png
2026-01-03T13:45:56.png
2026-01-03T13:46:05.png
2026-01-03T13:46:11.png
2026-01-03T13:46:20.png

[/collapse]

功能说明

  • 年度报告:展示你全年的聊天数据统计,包括消息数量、活跃时间、常用词汇等
  • 双人报告:分析你与特定好友的聊天记录,生成专属的双人互动报告
  • 导出功能:可以将聊天记录导出为 HTML 格式,方便保存和分享

注意事项

  1. 确保微信版本为 4.0.x以上,否则可能无法正常提取密钥
  2. 所有操作均在本地完成,不会上传任何数据到服务器
  3. 请妥善保管数据库密钥,避免泄露
  4. 首次使用需要解密数据库,可能需要一些时间,请耐心等待

项目地址

EchoTrace 是一个开源项目,你可以在 GitHub 上查看源代码和更多文档:


  •  

Umami3.0版本升级教程:从 v2 平滑迁移

2025年11月8日 16:58

前言

这是一份关于如何将已部署的 Umami2.0 统计系统更新到 3.0 版本的详细教程。如果你是按照我之前的 [post cid="381" /]部署的,那么这篇教程将帮助你平滑升级到最新版本。

更新前的准备

1. 备份数据库

在进行任何更新操作之前,强烈建议先备份数据库数据,以防万一出现问题可以快速回滚。

# 进入到 Umami 目录
cd /www/wwwroot/visitors.ybyq.wang/umami

# 备份数据库数据
docker-compose exec db pg_dump -U umami umami > umami_backup_$(date +%Y%m%d_%H%M%S).sql

备份文件会保存在当前目录下,文件名包含时间戳,方便识别。

2. 记录当前版本

查看当前运行的 Umami 版本,以便后续确认更新是否成功:

docker-compose exec umami cat /app/package.json | grep version

更新步骤

1. 进入项目目录

cd /www/wwwroot/visitors.ybyq.wang/umami

2. 停止当前运行的容器

docker-compose down

这个命令会停止并删除容器,但不会删除数据卷,你的统计数据是安全的。

3. 拉取最新代码

我已经同步了官方最新版本到 Gitee仓库,现在直接拉取更新:

git pull origin master

如果提示有本地修改冲突,可以先备份 docker-compose.yml 文件:

cp docker-compose.yml docker-compose.yml.backup

然后强制拉取:

git fetch --all
git reset --hard origin/master

之后再恢复你的配置文件:

cp docker-compose.yml.backup docker-compose.yml

4. 检查配置文件

Umami3.0 可能会有一些配置变化,检查 docker-compose.yml 文件是否需要更新。

主要关注以下配置:

[collapse status="false" title="展开查看 docker-compose.yml 配置示例"]

version: '3'
services:
  umami:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/docker.umami.is/umami-software/umami:postgresql-latest
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgresql://umami:你的密码@db:5432/umami
      DATABASE_TYPE: postgresql
      APP_SECRET: 5201314yyds
    depends_on:
      db:
        condition: service_healthy
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
      interval: 5s
      timeout: 5s
      retries: 5

  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: umami
      POSTGRES_PASSWORD: 你的密码
    volumes:
      - umami-db-data:/var/lib/postgresql/data
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      retries: 5

volumes:
  umami-db-data:

[/collapse]

确保你的数据库密码等配置信息保持一致。

5. 拉取最新镜像

docker-compose pull

这个命令会从 镜像站拉取最新的 Umami 镜像。
2025-11-08T08:31:09.png

6. 重新启动服务

docker-compose up -d

容器会自动完成数据库迁移和服务启动。

7. 查看容器状态

docker-compose ps

确保所有容器都处于 Up 状态。

8. 查看日志

如果容器启动失败,可以查看日志排查问题:

# 查看 Umami 容器日志
docker-compose logs -f umami

# 查看数据库容器日志
docker-compose logs -f db

Ctrl + C 退出日志查看。

验证更新

1. 检查版本号

访问你的 Umami 网站,登录后台,在设置页面可以看到当前版本号。

或者使用命令查看:

docker-compose exec umami cat /app/package.json | grep version

Umami 3.0 新特性

Umami3.0 带来了许多改进:

  • 全新的 UI 设计:更现代化的界面,更好的用户体验
    2025-11-08T08:54:33.png
  • 性能优化:查询速度更快,页面加载更流畅
  • 新增功能

    • 改进的事件追踪
    • 更强大的过滤器
    • 自定义报告功能
    • API 增强
  • 安全性提升:修复了已知的安全漏洞

详细更新日志可以查看 Umami 官方发布说明

常见问题

1. 更新后无法启动

症状:执行 docker-compose up -d 后容器自动停止

解决方法

# 查看详细日志
docker-compose logs umami

# 如果是数据库连接问题,检查 DATABASE_URL 配置
# 如果是数据库迁移失败,可以尝试手动执行迁移
docker-compose exec umami npm run db-migrate

2. 数据丢失

症状:更新后统计数据消失

解决方法

# 检查数据卷是否存在
docker volume ls | grep umami

# 如果数据卷存在,检查数据库连接
docker-compose exec db psql -U umami -d umami -c "SELECT COUNT(*) FROM website;"

# 如果需要恢复备份
docker-compose exec -T db psql -U umami -d umami < umami_backup_你的备份文件.sql

3. 端口冲突

症状:提示 3000 端口已被占用

解决方法
修改 docker-compose.yml 中的端口映射:

ports:
  - "3001:3000"  # 将宿主机端口改为 3001

然后更新宝塔反向代理配置,将目标地址改为 http://127.0.0.1:3001

4. 镜像拉取失败

症状docker-compose pull 时下载很慢或失败

解决方法

  • 首先确认镜像标签是否正确。Umami 官方不提供 latest,常用为按数据库区分的标签:

    • Postgres:ghcr.io/umami-software/umami:postgresql-latest
    • MySQL:ghcr.io/umami-software/umami:mysql-latest
    • 常见拼写错误:postgresgl-latest(少了 q)会导致 manifest unknown
  • 可配置 Docker 镜像加速,或固定到明确版本:

    image: ghcr.io/umami-software/umami:postgresql-v3.0.0  # 指定具体版本

5. Docker 网络错误(iptables/DOCKER 链)

症状failed to create network ... Error response from daemon: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: ... iptables: No chain/target/match by that name.

解决方法(依次尝试)

# 1) 重建 Docker 的 iptables 链并清理网络
docker-compose down
sudo systemctl restart docker
docker network prune -f
docker-compose up -d

# 2) 若仍失败,切到 iptables-legacy(按发行版选择其中一组命令)
# Debian/Ubuntu
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
# CentOS/Alibaba Linux
# sudo alternatives --set iptables /usr/sbin/iptables-legacy
# sudo alternatives --set ip6tables /usr/sbin/ip6tables-legacy
sudo systemctl restart docker
docker-compose up -d

# 3) 仍不行,确保内核模块已加载
sudo modprobe ip_tables iptable_nat
sudo systemctl restart docker
docker-compose up -d

回滚操作

如果更新后出现严重问题,可以回滚到之前的版本:

1. 停止容器

docker-compose down

2. 恢复代码

# 查看之前的提交记录
git log --oneline

# 回退到之前的版本(替换 commit_id)
git reset --hard <之前的commit_id>

3. 恢复数据库(如果需要)

# 启动数据库容器
docker-compose up -d db

# 等待数据库启动
sleep 10

# 恢复备份
docker-compose exec -T db psql -U umami -d umami < umami_backup_你的备份文件.sql

4. 重新启动服务

docker-compose up -d

总结

Umami3.0 带来了许多改进和新特性,更新过程相对简单。只要做好备份,按照步骤操作,一般不会遇到大问题。如果遇到问题,可以参考常见问题部分,或在评论区留言交流。

参考链接

  •  

记录网站第一次被DDOS攻击和鳞状云夕阳

2025年11月2日 00:35

今天下午照例待在图书馆。午饭吃得少,五点就饿了,便喊朋友一起去吃饭。刚走出图书馆,就遇到漂亮的鳞状云和夕阳,顺手拍了几张。

Motion Photo

Motion Photo

[collapse status="false" title="展开查看更多照片和麻辣香锅晚饭"]
Motion Photo

Motion Photo

[/collapse]

回归主线话题

回到座位后看了眼阿里云发来的短信,登录控制台查找,发现出现了黑洞与清洗记录:

点进去一看

问了群友才知道“黑洞”这回事。

这才意识到是遭遇了 DDOS 攻击,而且还是直接打到源站 IP。

然后提交了客服工单,回复大概是:不买防护套餐就只能等待黑洞自动解封。

又去看了下阿里 DDOS 高防产品,最低档套餐一个月一万多。嗯,还是慢慢等吧……

这次攻击强度不小,对方显然知道了我的源站 IP;要是从博客站点发起,估计影响不会这么大。

我大致猜到攻击者是如何拿到我的源站 IP 的了。

这次算是见识了 DDOS 的威力。好在未造成实质损失,顶多少了几个访客。

至于 25 Gbps 是什么概念,我问了下 DeepSeek:
为了更有体感,来看一下 25 Gbps 的流量能做什么:

对比项承载能力假设/说明
高清视频直播约 12,500 个并发流每个直播 2 Mbps
4K 超清视频约 5,200 个并发用户每个视频流 5 Mbps
大型网页加载每秒 50 万+ 次页面请求每页 50 KB
文件下载每秒约 3.125 GB约等于每秒下载一部高清电影

核心概念:25 Gbps 的带宽足以轻松支撑一个大型视频网站或数百万日活 App 的正常访问。攻击者用如此巨大的流量只攻击一个 IP,目的就是确保“一击必杀”,彻底压垮目标。

  •  
❌