Files
bili-auto-comment/README.md
T

107 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# B站评论助手(BiliKeywordComment)
Chrome/Edge 浏览器插件(Manifest V3):按**搜索关键词**找 B站视频,自动**评论**或**私信评论区用户**,也可**下载当前页视频**。直接复用你浏览器里的 B站登录态,**不需要手动填 Cookie**。
- 官网 / 下载:https://dl.88531.cn/bili.html
- 夸克网盘:https://pan.quark.cn/s/95e3ee9d8e0f
- 授权中心:https://auth.88531.cn · AI 模型 KEY:https://ai.88531.cn/
## 功能
### 搜索与筛选
- 🔍 关键词搜索,六种排序(**最热门**/综合/最多播放/最多弹幕/最多收藏/最新发布)
- 📁 分区筛选:20 个(科技/知识/游戏/影视/音乐…)
- 🌍 地区筛选:34 省市 + 36 热门城市(B站接口不支持省份参数,走「关键词拼接 + 标题/标签二次过滤」)
- ▶ 播放量门槛、最多 N 条,处理过的视频自动跳过
### 发送内容三选一
| 选项 | 行为 |
|---|---|
| **只发评论**(默认) | 只在视频下发公开评论 |
| **只发私信,不发评论** | 不发公开评论,只私信评论区里发过评论的人 |
| **评论 + 私信** | 先评论,再私信评论区用户 |
### 评论
- 💬 三种内容来源:固定模板(零配置可用)/ 自定义(一行一条随机取)/ **AI 按视频真实内容生成**(先抓标签、简介、弹幕、热评,不瞎编)
- 🤖 AI 走 OpenAI 兼容接口,失败自动降级模板并提示
- 📝 最短 3 字(重复字检测按长度自适应,短评论不误杀)
- 🧑 **模拟真人**(默认):自动打开视频页 → 滚到评论区 → 逐字输入 → 点发布;也可选 API 直发
### 私信(高风险,默认关闭)
- 🎯 对象**仅限本视频评论区里发过评论的人**(不含 UP 主、不含没评论的路人)
- 🔐 wbi 签名 + csrf,MD5 自带实现(先 UTF-8 编码,避免中文被截断算错签名)
- ♾ **同一用户终身只发一条**(B站 21047 限制),已发过的自动跳过
- ⏱ 间隔 2~4 分钟随机(比评论更严),触发频率风控码立即停整个任务
- 内容三级回落:自定义 → 复用评论内容 → 模板;日志标明来源
### 下载
- ⬇ 下载当前页视频,登录后最高 1080P,多 P 支持 `?p=N`
- ✅ 输出真正的 mp4(Blob 带 MIME + 文件头魔数校验,CDN 回网页/错误页直接报错,不会存成 txt)
### 授权与运维
- 🔑 1 天免费试用(倒计时精确到秒),卡密激活绑定本机永久可用;**下载视频不受授权限制**
- 📊 安装统计上报(仅机器码 + 版本,不碰B站账号),后台可看安装数与版本分布
- 📢 公告推送到面板顶部,有新版本时提示并跳官网
- 🔁 可中断:随时 ⏹ 停止,停止标记跨页面刷新保留,发送前二次检查
- 🖥 过程可见:页面右上角浮层逐步显示,侧边栏有计时、成功列表和执行日志
- 🔁 双通道网络:页面 fetch 优先,被 CORS/CSP 拦截时自动走后台代理兜底
## 安装
1. 解压 zip(或直接用解压后的目录)
2. 打开 `chrome://extensions` → 打开右上角「开发者模式」
3. 「加载已解压的扩展程序」→ 选 `BiliKeywordComment` 目录
4. 打开 B站并登录,点工具栏图标打开侧边栏
更新版本:下载新版解压 → 在 `chrome://extensions` 点该扩展「重新加载」,配置与记录都保留。
## 使用
1. 登录 B站网页版(登录态直接复用,插件不存 Cookie)
2. 点工具栏图标打开右侧边栏(所有设置自动保存)
3. 填搜索关键词 → 选排序/分区/地区 → 选评论方式 → 选发送内容
4. 点 **▶ 开始执行** → 右上角浮层显示每一步,侧边栏有计时、成功列表和执行日志;⏹ 停止随时可中断
AI 模式需填 LLM 配置(已预填 `https://ai.88531.cn/v1` + `mimo-v2.6-flash`,到 https://ai.88531.cn/ 领 KEY);不填自动走固定模板。
## 风控提醒
- 评论默认「最多 3 条、间隔 1~2 分钟随机」,私信「每视频最多 2 人、间隔 2~4 分钟随机」,请勿调得过于激进
- 评论/私信不含外链、广告;触发验证码(12045)或今日上限(12008)会自动停止
- 私信触发 21020/21046(频率过高)会立即停止整个任务
- 建议每天评论 ≤ 10 条、私信 ≤ 10 条,宁可少发
- **使用本插件产生的一切行为由使用者自行负责**
## 文件结构
| 文件 | 作用 |
|------|------|
| `manifest.json` | MV3 清单(侧边栏 + 内容脚本 + host 权限 + DNR) |
| `background.js` | Service worker:LLM 代理、API 兜底、评论历史、运行编排、授权、安装上报 |
| `content.js` / `content.css` | 页面内执行:搜索 → 生成 → 发布/私信 + 进度浮层 + 视频下载取址 |
| `sidepanel.html` / `sidepanel.js` | 侧边栏 UI(含视频下载落盘) |
| `icons/` | 16/32/48/128 图标 |
## 关键技术点(踩坑记录)
- 评论框在 `<bili-comments>` 的**嵌套 shadow DOM**,且**懒加载**——必须阶梯滚动找组件,普通 `querySelectorAll` 够不到
- 评论框可能贴底/浮动,容器内找不到要**全页深扫**并 `scrollIntoView`
- 视频 CDN 要求 Referer,而 `chrome.downloads` 不能自定义 Referer(Unsafe header)→ 用 `declarativeNetRequest` 动态规则注入(**不加 resourceTypes 过滤**,否则不匹配下载请求)
- **下载得到 txt 的根因**:`new Blob(chunks)` 没传 type → MIME 为空 → Chrome 嗅探内容 → HTML 错误页被存成 `.txt`。必须 `new Blob(chunks, {type})`,并校验文件头魔数
- 私信 wbi 签名:mixin_key 按 64 位索引重排取前 32 位,`w_rid = md5(sorted_query + mixin_key)`;官方测试向量 `wts=1702204169` + mixin `ea1db124af3c7062474693fa704f4ff8` → `8f6f2b5b3d485fe1886cec6a0be8c5d4`
- MD5 的 `charCodeAt(i)&0xFF` 会把中文截断成单字节 → 签名含中文就全错,必须先 UTF-8 编码
- 本机(含代理)访问 `api.bilibili.com` / `api.vc.bilibili.com` **全部返回风控 HTML 页**,无法在服务器侧实测发送,只能在用户浏览器里跑
## CHANGELOG
见 [CHANGELOG.md](CHANGELOG.md)
## 源码
- GitHub:https://github.com/personal82555/bili-auto-comment
- Gitee:https://gitee.com/jinghui111/bili-auto-comment
## 免责声明
本插件仅供学习交流,请遵守 B站社区规范与当地法律法规。使用本插件产生的一切行为由使用者自行承担。