面向小黑盒 Web 端的用户脚本(UserScript):网页收藏列表不显示“插眼”(CY)条目,但主页收藏总数会把它们算进去。本脚本单独拉取插眼收藏,在收藏页把插眼条目补到收藏列表下方,按帖子去重。社区首页(/app/bbs/home)移除右栏热门社区等冗余模块,改为定宽卡片信息流,并支持在右侧预览帖子评论;帖子详情页(/app/bbs/link/*)默认进入全屏沉浸阅读,封面与标题上下分栏、正文连续滚动,原生评论收进侧栏,保留原生回复与点赞,并在评论区补充默认/时间/点赞/作者排序。右侧互动栏可直接点赞、收藏与发布 CY,评论区仍可按 is_cy 过滤插眼评论。顶部导航收敛为首页、社区、收藏、文章四个「SVG + 文本」入口;帖子页纵轴中心左右两侧提供 SVG 上一篇/下一篇箭头,切换走站内路由,不整页刷新。社区页(/app/topic/link/*)提供只在该社区内生效的帖子搜索;宽屏社区首页改为左频道、中信息流、右热度三栏工作台。
https://www.xiaoheihe.cn/*、https://xiaoheihe.cn/*link.id 去重。.link-comment 节点停靠到右栏,排序、回复、点赞、展开楼中楼都由站点处理。is_cy 标记隐藏插眼评论;默认不隐藏,用户点“屏蔽 CY”后才生效。阅读栏的 CY 按钮不参与过滤,只负责发布新的插眼。/app/topic/link/<topic_id>)的搜索只在该社区内请求,结果与全站搜索分开,不离开当前页面。插眼收藏走评论列表接口,路径 /bbs/app/profile/bbs/comment/list,关键参数:
| 参数 | 值 | 说明 |
|---|---|---|
only_cy |
1 |
只要插眼记录 |
filter_type |
0 |
不过滤类型 |
enable_new_style_collect |
1 |
新版收藏结构 |
userid / heybox_id |
Cookie heybox_id(回退 user_heybox_id) |
当前登录用户 |
limit / offset |
20 / 递增 | 分页 |
no_more |
false |
首页固定值 |
其余基础参数(os_type=web、app=heybox、client_type=web、version=999.0.4、web_version=2.5、x_client_type=web、x_app=heybox_website、x_os_type=Windows、device_info=Chrome)与站点网页端保持一致。
响应判定:status === "ok" 时读取 result 数组;no_more === true 或本页为空即停止翻页。单条记录取以下字段:
link.id:帖子 ID,同时用于去重与跳转 /app/bbs/link/<id>。link.title:标题,空值回退“无标题帖子”。link.thumbs[0]:缩略图,可缺省。text:插眼时附带的评论内容。create_at:时间,按秒处理,兼容毫秒值。comment_type:1 记为“回复”,其余记为“评论”。请求使用页面内 fetch,credentials: include 携带登录态。接口对 https://www.xiaoheihe.cn 返回 Access-Control-Allow-Origin 与 Access-Control-Allow-Credentials(实测),因此无需 GM_xmlhttpRequest,脚本保持 @grant none。
信息流评论预览走帖子评论树接口 /bbs/app/link/tree,除同一套基础参数外传 heybox_id(Cookie)、link_id、is_first(首页为 1)、page(从 1 起)、index=1、limit=20、owner_only=0。站点网页端还会带一个空的 h_src 参数,脚本在 link_id 前补齐,缺省时更容易触发风控。响应 status === "ok" 时读 result.comments(按楼层分组的数组,每组 comment[0] 为楼,后续为楼中楼)、result.link.title 与 result.link.comment_num。单条评论取 user.username、user.avatar(兼容拼写 avartar)、text(去标签后截断 400 字)、create_at、support_num(兼容 support_count)、reply_count(兼容 sub_comment_num)、is_cy(1、"1" 或 true 视为插眼)。
沉浸阅读的点赞、收藏与 CY 发布走站点写接口,全部由用户点击触发:POST /bbs/app/profile/award/link 传 link_id 与 award_type(点赞 1、取消 0);POST /bbs/app/link/favour 传 favour_type(收藏 1、取消 2)、link_id、userid 与 folder_id;POST /bbs/app/comment/create 传 is_cy: 1、link_id、reply_id: "-1"、root_id: "-1" 与 text。收藏夹列表走 GET /bbs/app/profile/fav/folders。写请求使用 JSON 请求体,query 携带同一套签名参数与 target=heybox_app;status === "login" 时统一提示「请先登录小黑盒」。
社区内搜索走通用搜索接口 /bbs/app/api/general/search/v1,除同一套基础参数外传 q、search_type=link、topic_id(当前社区 ID)、offset、limit=30、is_pull_down=0;时间筛选非空时追加 time_range。响应 status === "ok" 时读 result.items 与 result.time_range_list;result.items 里的 space 条目只用于占位,offset 按 link 条数推进,空页或没有新增帖子时停止翻页。空结果提示优先取顶层 search_not_result_tips,其次取 result.search_not_result_tips。脚本先带 hkey、_time、nonce 请求,失败后回退不带签名的请求,两条都失败才显示错误。
接口要求 hkey、_time、nonce 三个签名参数。脚本内独立实现,全部为纯函数:
time = floor(Date.now() / 1000)。nonce = md5(time + Math.random()).toUpperCase(),32 位十六进制。/a/b/c/,与 35 字符字母表 AB45STUVWZEFGJ6CH01D237IXYPQRKLMN89 一起映射,生成 20 字符种子。% 100 得到 2 位校验,组合成 hkey。两个容易写错的细节:
xtime 左移结果不能对 255 取模,服务端算法保留高位;截断会算出不同的校验位。MD5 覆盖 UTF-8 字节,md5Hex 与 Node crypto 结果一致。签名只覆盖路径与时间,不覆盖查询参数。
.nav-links,隐藏站点原有的七个文字按钮,改为首页、社区、收藏、文章四个入口,每项为内联 SVG 图标加文本。图标默认在悬停、键盘聚焦与激活时播放轻量动效(房子轻晃、气泡上浮、书签落位、纸张翻角),齿轮设置菜单里的“动态导航图标”可切回静态;系统开启“减少动态效果”时同样保持静态。location.pathname 标记当前入口,社区包含 /app/bbs/home 与帖子详情;收藏页同时承载插眼收藏区块。视口 ≤940px 时只显示图标,保留 aria-label 与悬停提示。html 根元素、#app > main > section、.hb-bbs-home__feed-splitline、.hb-bbs-home__splitline、main.list、.hb-cpt__moment-list-content),这些颜色不随 CSS 变量走,需单独覆盖。登录表单保持浅色,避免第三方登录控件失去可读性。contain 完整露出,背后是同一张图的模糊底色,不再裁切两侧;标题、标签与作者行移到封面下方的独立区块,使用主题底色,不再以玻璃卡压住图片。正文改为连续滚动,段落、图片与富文本块自然衔接,长图和长文按原始高度展开,大图仍可点开遮罩。右侧互动栏离正文 36px,移动端收进舞台右缘并隐藏栏内头像;封面多图可横向切换或点分页条,左右滑动只切封面,滑到末图再左滑进入正文。顶部只保留返回、作者与关注,右侧竖排点赞、收藏、评论、CY 发布、分享,底部显示阅读百分比与进度。↑ / ↓、PageUp / PageDown、j / k 与空格按约 0.82 屏滚动,Home / End 跳首尾,← / → 只在封面切图,C 开关评论,R 或 Esc 退出沉浸阅读。点在输入框、文本域或可编辑区域内时不拦截滚动键,但 Esc 仍先关评论。.link-comment,桌面从右侧滑出 440px,移动端占满宽度;打开时把站点 #page-bbs-link 层抬到舞台之上,同时清空主题背景与指针拦截,避免整页底色盖住阅读舞台;背景加半透明遮罩,焦点移到关闭按钮,阅读区 inert,关闭后焦点回到评论按钮,Tab 在抽屉内循环。排序、屏蔽 CY、回复、点赞与展开楼中楼全部沿用原生逻辑。回复编辑器固定在抽屉底部,不遮住正文。result.link;未收藏时弹出收藏夹列表,已收藏时再次点击直接取消;CY 按钮打开 520px 输入卡,提交后以 is_cy=1 发布并更新评论数;未登录统一提示「请先登录小黑盒」。R、Esc 或齿轮菜单的“沉浸阅读”开关都可退出,关闭后立即恢复站点原生双栏;阅读位置按帖子写入 sessionStorage,返回同一帖时回到原页。calc(100vh - 112px),楼层内边距 14px 16px、正文 14px/1.7。--heybox-up-bg、surface、subtle、raised、border、text、text-2、muted、on-accent 与 --heybox-up-page-w、feed-w、feed-pct、radius-card、gap、card-pad、shadow-1、shadow-2。纸页主题把卡片圆角收到 4px、去掉一级阴影并改用 Georgia 衬线标题;雾青用 18px 圆角与更柔的投影;纯黑用 8px 圆角与深投影。min(960px, 100%),卡片内边距收到 16px;≤900px 时沉浸阅读的互动栏收进舞台右缘,≤760px 时舞台占满宽度、正文 17px,≤520px 隐藏作者名与“继续阅读”,结尾卡只保留作者、统计、标签与翻页。视口高 ≤820px 时结尾页隐藏“继续阅读”,≤520px 时再隐藏统计并收小头像,结尾卡保留 min-height: 100dvh,内容超出时按自然高度展开。heybox_id 时提示未登录,不发起请求。.cpt-right-side.right),热门社区、二维码、App 链接与页脚一并移除;信息流收成 960px 居中阅读栏,话题条也改成同风格卡片。https://xiaoheihe.cn/app/bbs/link/<id>:默认显示沉浸阅读,原生正文与回复编辑器留在 DOM 中不搬动;关闭阅读模式后回到左栏正文、右栏 424px 原生评论区的双栏布局,右栏原有的相关推荐与二维码模块隐藏。.topic-link__main 的筛选行上方插入搜索栏,左侧固定显示当前社区名,输入关键词后只请求该社区的帖子。筛选行位于 .topic-link__panel 时,搜索栏与筛选行插在同一父节点并保持前后相邻。结果面板替换原生信息流,顶部显示社区与关键词,并提供“全站搜索”和“返回社区”;时间筛选来自接口 time_range_list,切换后重置分页;“加载更多”按接口返回的 link 条数递增 offset。Esc 或“返回社区”恢复原生列表,切换到别的社区或离开页面时自动收起。窄屏隐藏社区胶囊并缩小缩略图。.content 改为 1fr | 中栏 | 1fr 三栏栅格:中栏宽度取自 --heybox-up-feed-pct(默认 56vw,上限 1180px,并至少给两侧留 560px),左右两列等分剩余宽度,中栏因此始终落在视口正中;左栏 208px 贴住中栏左缘,≥1500px 时右栏 288px 贴住中栏右缘。1200–1499px 只保留左栏与信息流,<1200px 回到站点单列。左栏是浏览入口与站点话题频道,中栏是原信息流,右栏是当前信息流按“评论数 × 2 + 点赞数”生成的热门排行与快捷入口。桌面隐藏站点顶部 sticky 搜索条,把它为搜索条铺的 146px 固定顶部遮罩压缩到导航 64px 加页面顶部留白 16px 的 80px 区域,搜索入口收进左栏“浏览”,右栏“快捷入口”不再重复全站搜索;左右栏 sticky 吸顶改为 top: 80px、最大高度 calc(100vh - 100px),首屏不再留下搜索条高度造成的空白,滚动时正文也不会从导航下方的留白处露出。左栏已有频道列表,站点原生的横向频道条(.bbs-home__topic-list-wrapper)在 ≥1200px 时隐藏。.bbs-home__topic-item,点击时转发给站点原按钮;热门排行读取已渲染卡片,点击滚动到对应帖子并临时描边,不请求新接口、不伪造榜单。评论预览展开时右栏自动让位给预览侧栏。.scroll-list__button-group 的右偏移绑在内容列上,窄视口会把它推到屏幕外,宽屏又会压到自定义右栏或评论预览下方。首页、频道页与帖子页因此隐藏原生按钮;其余页面把按钮固定到距右边 20px、距底部 24px,保证 800–1159px 下完整可见。router.push),地址与内容由 SPA 更新,不整页刷新;切换后滚动回顶部。键盘 [ 与 ] 分别切上一篇、下一篇,输入框、文本域与可编辑区域内不拦截。sessionStorage;帖子页按当前 ID 定位前后项。当前帖子不在记录中或已到列表末尾时,“下一篇”回退到页面“相关推荐”的第一条;没有可用顺序时用本次会话的浏览记录提供“上一篇”。.link-comment 排成左右两列;开启时只把 .link-comment 固定到抽屉,两种模式都不搬动节点,站点祖先选择器与原生样式继续生效。style.order,不改 DOM 顺序;站点重渲染后自动重建工具栏并恢复上次模式。[data-comment-id] 匹配接口返回的 is_cy 评论,给对应楼层加 data-heybox-up-cy="1" 并由 body.heybox-up-hide-cy 统一隐藏;按钮显示已屏蔽条数,关闭后立即恢复。--heybox-up-shadow-2。展开时页面使用全宽,桌面栅格只在右侧为面板预留与其实宽相同的轨道,不再额外叠加右内边距;中栏按可用空间收缩并保持居中,面板与信息流之间只保留 24px 级间距。首条帖子只自动打开一次:手动收起后不会再次弹出,点右缘的“评论预览”标签才会重新展开。.bbs-new-style-bottom__comment、.content-list__comment)即可切换到该帖,页面不跳转。display: none、页面右缘不留标签,信息流恢复正常宽度,评论数字恢复站点原生行为(进入帖子);偏好写入 localStorage,刷新后保持。重新开启会立刻带出首条帖子的评论。/app/bbs/link/* 时浮层隐藏,视口窄于 1200px 时同样不显示。heybox-up.cy.v1:<userid>,值为 { savedAt, items }。localStorage 不可用时仅本次会话生效。heybox-up.theme.v1,取值为 system、dark、oled、light、paper、mist,仅存本机;旧值 dark、light 继续有效。heybox-up.hideCy.v1,取值 1 或 0,默认 0(不隐藏);仅存本机,帖子页与评论预览共用。heybox-up.commentPreview.v1,取值 1 或 0,默认 1(开启);仅存本机,由齿轮设置菜单里的开关写入。heybox-up.navMotion.v1,取值 1 或 0,默认 1(动态);仅存本机,由齿轮设置菜单里的“动态导航图标”开关写入。heybox-up.feedWidth.v1,取值 40、48、56、64、72(百分比),默认 56;仅存本机,由齿轮设置菜单里的宽度分段按钮写入,只改 CSS 变量 --heybox-up-feed-pct,不重排 DOM。heybox-up.feedOrder.v1 与浏览记录键 heybox-up.postTrail.v1,只写 sessionStorage,关闭标签页即清除;插眼区块只响应收藏页 URL 的 #heybox-up-cy 锚点。localStorage:关键词、时间筛选与已加载结果只保存在当前页面的内存里,刷新或离开页面即清空。验证以语法检查和真实登录态页面上的无头 Edge(CDP)DOM 断言为主,不依赖仓库内的辅助脚本:
node --check scripts/heybox-up.js
签名用真实被服务端接受的样本 (time=1792587363, nonce=2B3C207C9CF9AF2779DEE63C509DA4E8, path=/bbs/app/profile/bbs/comment/list) 复核,得到 hkey=VX2Y254;服务端接受该签名,时间错误时返回 系统时间不正确。
社区内搜索用无头 Edge(CDP)验证:1440×900、900×800 与 390×844(内容宽 390px)下,面板均挂在 .topic-link__main 内筛选行的实际父节点 .topic-link__panel,且紧挨筛选行之前;390px 下社区胶囊实算为 display: none。提交“显卡”后请求带 topic_id=18745、q、search_type=link、limit=30 与 hkey,渲染 10 条结果,原生筛选行与信息流同时隐藏;焦点在站点导航时按 Esc 不关闭面板,焦点回到输入框后按 Esc 关闭并把焦点交还输入框。接口每页再夹 10 条 space 占位时,“加载更多”仍以 offset=10、offset=20 正常追加,结果从 10 条增至 30 条。夜航下搜索栏底色 rgb(23, 29, 36)、结果标题 rgb(220, 229, 239);浅色下分别为 rgb(255, 255, 255) 与 rgb(20, 25, 30)。
桌面工作台用 jsdom 用例验证:社区页启用 heybox-up-desktop,左栏插到 .content 最前、右栏插到最后;两个话题按钮生成两个频道项;热门排行按“评论数 × 2 + 点赞数”排出三帖顺序,1.2万 正确换算为 12000;点排行项滚动到对应卡片,点频道项后高亮且转发给站点原按钮。
实时验证:用同一实现生成当前时间的 URL 请求接口,返回 {"status":"failed","msg":"该用户已注销"}。这是用户级错误,说明签名与时间被接受;签名错误时返回 系统时间不正确。
布局用无头 Edge(CDP,1600×1000、1280×900、800×900)做 DOM 级验证:评论预览展开时,1280 下内容栅格为 288 / 592.8 / 288px,信息流 x=336、宽 592.8,搜索条已隐藏,左栏 x=104、宽 208,评论浮层 x=956.8、宽 288;1600 下栅格为 320 / 848.8 / 320px,信息流 x=368、宽 848.8,搜索条已隐藏,评论浮层 x=1244.8、宽 320。两种视口均无横向溢出,浮层与信息流之间仅余 28px 间距,不再出现“侧栏宽度 + 48px”额外内边距造成的空白区。帖子页正文卡 832×868,评论卡 424,排序栏 407×48,首条评论内边距 14px 16px,正文标题 25px/35.5px。800 下正文与评论纵向堆叠、宽 744,无横向溢出。夜航全页扫描未发现白色大底块;帖子页与社区首页的伪元素底色(卡片底部 4px 色带、楼层分隔线、相关推荐分隔线)与浅色边框扫描结果均为 0。
沉浸阅读用 1440×900、1024×768、800×700、390×844 与 844×390 验证:1440 下整组宽 812(x=314),舞台 732(x=354)、正文 612(x=414,右缘 1026)、互动栏 x=1062,左右留白 314 / 330;1024 下整组 x=106、舞台 x=146、正文右缘 818、互动栏 x=854、间隔 36;800 下舞台占满 800、正文宽 612 居中、互动栏 x=738、间隔 32;390 下正文宽 302、互动栏 x=338、栏内头像隐藏、按钮 42px;320 下正文宽 232;各视口 .hbu-reader-scroll 的 scrollWidth 均等于视口宽。封面 object-fit: contain 完整显示,背后铺同一张图的模糊底色;标题移到封面下方独立区块,1440 与 390 下封面与标题的矩形均无重叠,封面分页条 36×36,左右滑动只切封面,末图再左滑进入正文。正文段落、图片与富文本按自然高度连续衔接,长文与长图不再被一屏截断,也不在页内二次滚动;插入 30 段长文与长图后,文本页高度为 399、700、198,图片页 1514,容器 scrollHeight 8811。进度显示阅读百分比,方向键与空格每次滚动 0.82 屏(390 高下实测 320px),关闭重开按比例恢复(0.55 恢复到 621/1131)。结尾卡按内容自然增高,视口高 ≤820px 时收起“继续阅读”,≤520px 再隐藏统计并收小头像。844×390 横屏下评论抽屉 440×390,回复编辑器完整落在抽屉内;1440 下评论抽屉 440×900,关闭时 visibility: hidden,打开后 x=1000、焦点落在关闭按钮,阅读区 inert,背景 opacity: 1;打开时 #page-bbs-link 实算 z-index: 4010、background-color: rgba(0, 0, 0, 0),抽屉中心命中的是评论楼层、舞台中心命中的是遮罩,回复编辑器固定在 y=823、高 61px 且列表预留 74px 底部内边距;点遮罩后焦点回到评论按钮。互动栏点赞与收藏在 mock 写接口下分别发出 award_type=1 与 favour_type=1、folder_id 正确,再次点击发出取消参数并更新计数;CY 按钮打开 520px 输入卡,提交体含 is_cy:1、reply_id:"-1"、root_id:"-1",成功后评论数 +1;未登录点赞、收藏与 CY 均提示「请先登录小黑盒」。夜航正文 18px/33.48px、rgb(230, 237, 245),纯黑舞台 rgb(9, 9, 9)、正文 rgb(230, 237, 245),纸页舞台 rgb(250, 245, 234)、正文 rgb(51, 43, 33);六套主题中除浅色关注按钮外无近白大底块。全部阅读控件不小于 36px;帖子数据未渲染时出现“正在加载文章…”占位(实测于响应较慢的帖子页)。
社区频道页用 1200×900 夜航主题验证:.topic-link__main::after 的 8px sticky 底条实算为 rgb(23, 29, 36),.topic-link__splitline::after 的 4px 分隔线实算为 rgb(30, 38, 48),与 --heybox-up-surface / --heybox-up-subtle 一致;截图不再出现白色横带。
全站搜索页用 1440×900 夜航主题验证:#page-bbs-list、.list 与 .hb-search-result 实宽同为 1032px,与 .search-wrapper 对齐;右侧 .cpt-right-side.right 为 display: none;页面上下固定条与列表 sticky 条实算为 rgb(15, 20, 25),4px 结果分隔条为透明,横向列表右侧遮罩不再带白色渐变;近白底色扫描仅剩 4×4 加载点。
原生回到顶部按钮用 800×900、1000×900、1100×900 与 1440×900 验证:社区首页、频道页与帖子页的按钮组始终 display: none,1000×900 下不再只露出 1.2px;全站搜索页的按钮组保持 56×56,右偏移统一为 20px、底偏移 24px,1000×900 下完整可见且右侧留白 20px。
搜索建议面板用 1440×900 夜航主题验证:历史搜索胶囊底色 rgb(30, 38, 48)、文字 rgb(220, 229, 239),悬停底色为 rgb(23, 29, 36);搜索发现标题与热榜标签为 rgb(180, 192, 206),热榜条目为 rgb(220, 229, 239),条目悬停底色为 rgb(30, 38, 48)。
排序用合成用例验证:改写点赞数 1/9/4 与相对时间 3天前/5分钟前/1小时前 后,点赞与时间两种模式都按期望重排(order 为 2/0/1,纵坐标随之变化),切回默认清空 order;删除工具栏后 MutationObserver 在下一帧重建,选中模式与顺序保持。
评论预览用同一组视口验证:注入脚本后首页出现 #heybox-up-comment-rail,默认 data-state="open" 且 body 带 heybox-up-rail-open;点收起按钮回到 collapsed,点标签重新展开,Esc 同样收起;打开 /app/bbs/link/<id> 后浮层 data-state="hidden"、display: none。夜航主题下面板底色为 rgb(23, 29, 36)、文字 rgb(220, 229, 239),无浅色残留。主题令牌实测:夜航 #0f1419 / #171d24 / #dce5ef / #8593a3 / #8fb0cf;纸页 #f4efe4 / #fffdf7、圆角 4、无阴影、标题 Georgia;浅色 #fff / #14191e;纯黑 #000 / #08090b、圆角 8。接口受限时面板显示“评论需要验证,请稍后重试,或打开帖子查看。”并附“打开帖子”链接,点提示可重试;换用新会话后首条帖子恢复 16 条评论。
文章编辑器验证(1440×900,夜航 / 纸页 / 雾青):html 背景分别为 #0f1419 / #f4efe4 / #eef3f5;#page-creator-editor 与右侧预览内除开关滑块外无 rgb(255, 255, 255) 大底块,正文与预览正文的对比度分别为 12 / 11.7 / 12;发布与关注按钮不再保留站点写死的深色渐变。
文章编辑器细节用 1440×900 夜航主题验证:.creator-editor__form-wrapper::before 的 4px 分隔带由 rgb(250, 251, 252) 改为 rgb(15, 20, 25);.cpt-editor__publish::after、.hb-cpt__editor-title::after 与 .editor-menu__item-splitline 的 1px 浅线由 rgb(243, 244, 245) 改为 rgb(45, 56, 69);工具栏图标由 rgb(140, 145, 150) / 0.4 透明度改为 rgb(180, 192, 206) / 0.8 透明度;更多组件菜单文字由 rgb(100, 105, 110) 改为 rgb(180, 192, 206);扫描编辑器根节点未再发现近白背景或近白描边。
首页默认预览验证(1600×1000,夜航):注入后首页浮层直接 data-state="open",body 带 heybox-up-hide-cy heybox-up-rail-open,无需点击即显示首条帖子的标题与 6 条楼层;点第二张卡片的评论数字后浮层标题切换为该帖,地址仍是 /app/bbs/home。齿轮设置菜单里的开关点击后 heybox-up.commentPreview.v1=0、浮层 data-state="hidden"、display: none、body 类移除,此时点评论数字走站点原生跳转;再点一次开关恢复 open 并重新带出首条帖子的评论,刷新后开关状态与偏好一致。收起按钮回到 collapsed 并移除 body 类,点右缘“评论预览”标签可重新展开;视口窄于 1200px 时浮层不显示。
CY 屏蔽用合成 DOM 与假接口在无头 Edge 中验证。帖子页:三条评论中 1001 与 1003 的 is_cy 分别为 1 和 "1",注入脚本后两节点均带 data-heybox-up-cy="1";点“屏蔽 CY”后 body.heybox-up-hide-cy 生效,两条 CY 楼层 display: none,普通楼层仍为 block,按钮显示“屏蔽 CY (2)”,偏好写入 heybox-up.hideCy.v1=1;再点一次恢复显示并写回 0。评论预览:两条楼层组中一条根评论为 CY、另一组含一条 CY 楼中楼,开启后列表只剩普通楼层,楼中楼引用中的 CY 也被过滤,说明行显示“已屏蔽 1 条 CY”。
bbs_info.favour_num 计算,脚本只能解释差异,不能修正。link/tree 接口的风控策略:未登录或触发验证码时返回 show_captcha 等状态,面板显示失败原因,需要打开帖子查看。.bbs-new-style-bottom__comment 与 .content-list__comment 类名,站点改版后需同步选择器。#page-bbs-community .bbs-home__content-list 容器与其中首个 a[href*='/app/bbs/link/'] 链接;容器或链接结构变化时不会自动带出评论,需点评论数字手动切换。关闭开关后脚本不拦截评论数字,恢复站点原生跳转。fetch 的常规行为。style-src 内联,收藏区块的样式需要改为构造样式表。#app > main、section、.layout-normal 与 #page-bbs-community main.list 结构;站点改版换容器后需要同步选择器。.hb-bbs-image-text)与文本帖(.hb-bbs-post),视频帖、纯投票帖仍走站点原布局。正文分块依赖 .image-text__content、.post__content 的块级结构;站点改版换容器后需要同步选择器,否则只会显示封面与结尾。.link-comment 并接管焦点顺序;关闭抽屉后恢复原双栏,DOM 不搬动。站点若把评论拆成多个浮动层,抽屉只接管首次找到的 .link-comment。100dvh 不可用的旧浏览器退回 100vh。sessionStorage,关闭标签页即失效;页面结构变化导致页数减少时,恢复位置会夹到最后一页。.link-comment 内,站点清空该节点时会被移除;MutationObserver 在下一帧重建并恢复选中模式。link/tree 返回的 is_cy 字段与楼层的 data-comment-id;站点改版去掉字段或属性后,开关仍可点,但不会命中评论。* { padding: 0; margin: 0; font: ... } 会覆盖 Shadow DOM 的 :host 普通声明,排序栏的 host 样式因此全部加 !important;新增 Shadow 组件时需沿用同样写法。::before / ::after 画卡片底部色带与 1px 分隔线,颜色写死为浅灰;底部色带在所有主题下隐藏,其余分隔线在深色主题逐个覆盖。站点改版新增同类伪元素时需同步补充,否则会再次出现白条。com-game-card、com-album-card、com-award-table-card、com-chatroom-card、com-league-card、com-match-card、com-mod-card、com-sku-card、com-wiki-card)的底色、描边、文字、药丸底与按钮在站点样式表里写死为浅色,深色主题按这 9 类容器逐组覆盖;站点新增卡片类型时同样会出现未覆盖的浅色块。.nav .nav-links 与 .nav-link 类名:脚本隐藏原生按钮并插入自己的入口,站点改版换容器后需要同步选择器。隐藏的原生按钮仍留在 DOM 中,站点自己的路由与统计不受影响。#app.__vue_app__.config.globalProperties.$router);取不到 router 时退回站点 <a> 点击,会退化为整页跳转,功能仍可用但会刷新。/app/topic/link/<topic_id> 路由与 .topic-link__main、.topic-link__filter-row 结构;筛选行存在时优先插在它的实际父节点 .topic-link__panel 内,筛选行缺失时退回 .topic-link__main。站点改版换容器后搜索栏可能不会挂载或位置改变。.topic-aside__topic-indicator,读不到再退回页头标题与 document.title;右栏尚未渲染时占位文案会短暂使用页头名称。link 条数推进 offset,并对单页内已显示的帖子 ID 去重;返回 0 条 link 时停止翻页。若后续整页都是重复 ID,列表不会增长,但需用户再次点“加载更多”,脚本不会自动循环请求。filter_tag 分类筛选;刷新后回到社区原生信息流。#page-bbs-community .content、main.list、.bbs-home__topic-item 与 .bbs-home__content-item 结构;站点改版换容器后左右栏不会挂载。频道点击是转发站点原按钮,站点若改成非按钮容器需要同步选择器。#page-bbs-list、.content > .list 与 .cpt-right-side.right 结构,站点改版换容器后需同步选择器。result.link 的真实状态与计数,收藏支持收藏夹列表与再次点击取消,未登录统一提示;不再依赖隐藏的原生按钮。is_cy=1 的评论,成功后更新评论数并提示;Esc、遮罩与取消按钮均可关闭。#page-bbs-link、.content 与 .list 透明并停止拦截指针,主题背景不再盖住阅读舞台;收起后可再次打开,inert、焦点与抽屉状态正常恢复。contain 完整显示,背后铺同一张图的模糊底色;左右滑动只切封面,末图再左滑进入正文。Tab 循环,Esc 在回复框里也能先关抽屉。helper 目录,验证改为语法检查加真实页面断言。.layout-normal 到舞台之上,遮罩位于舞台与抽屉之间,点遮罩可关闭;评论未加载时给出提示,不再把阅读区卡在 inert。inert,关闭后焦点回到评论按钮,回复编辑器固定在抽屉底部。滚轮、↑ / ↓、j / k、空格、Home / End、C 与 R 均可操作,阅读位置按帖子记忆。.topic-link__panel 后,旧代码仍向 .topic-link__main 插入,insertBefore 因目标不是直接子节点而抛错。现在按筛选行的实际父节点挂载并校验相邻位置;页头不再提供社区名时改读右栏社区卡,恢复具体社区名占位。space 占位条目,旧逻辑用原始条数推进 offset 并判尾页,首屏就显示“已到最后一页”且跳过后一页;现按 link 条数推进,单页重复 ID 去重,返回 0 条 link 时停止。role="status" 与 aria-live="polite" 播报;关闭面板时焦点回到搜索框,“加载更多”加载中或隐藏时也不再把焦点留在按钮上;Esc 只在焦点位于面板或页面空白处时生效,避免误关站点的图片查看器或对话框。/app/search/list)桌面隐藏右侧热搜、二维码、App 链接与备案栏,结果列表占满内容区;夜航主题补齐页面与列表上下固定色条、结果间 4px 分隔条与横向结果列表右侧箭头遮罩,消除顶部、底部与列表中的浅色横带。/app/topic/link/*)夜航主题下残留的浅色分割线:站点 8px sticky 底条与 4px 帖子分隔线原来放在 :is() 内与伪元素组合,选择器无效,主题规则未生效;改为独立伪元素选择器,并分别使用当前主题的 surface / subtle 色。NAV_ICONS.cy,会显示成“undefined 插眼收藏”。插眼补全仍在收藏页内,并保留 #heybox-up-cy 锚点直达。#page-creator-editor)补齐主题覆盖:外层列表、标题栏、正文区、底部工具栏、社区与话题、权限选择、发布栏、右侧预览和帮助面板统一改用主题令牌,深色主题下正文、链接与预览正文恢复可读对比。html 背景与 data-mask 边缘同步跟随主题,消除页面缝隙处的浅色细线。.search__pull-list 留下约 26px 浮层并截获首张帖子卡片点击的问题;仅在建议数据为空时收起浮层,正常搜索发现、热榜与建议列表仍按原样显示。[ / ] 与站内路由切换行为。.link-comment__comment-item::before 同时用于楼层分隔线和悬停高亮,深色规则误把悬停层涂成了不透明边框色。.link-comment__comment-item + .link-comment__comment-item:not(:hover)::before),悬停层恢复站点原有的半透明色,评论文字保持可读。localStorage 无值时不再把 null 当作 0,默认宽度回到 56%。[cube_表情名] 文本,旧解析只接受数字编号,导致所有具名表情都被当成普通文本。data-emoji 节点;未知表情保留原文,不再吞掉内容。background-repeat 回卷正坐标,预览层改为无重复背景后必须使用行列为 十位 − 1 / 个位 − 1 的负坐标,表情不再透明。no-repeat 下落到图片边界外而显示空白的问题。heybox-up-dark-flat、-flat-subtle、-edge、-ink 类,再用主题令牌覆盖,站点新增白色块时无需逐条补选择器。.content 用 1fr | 中栏 | 1fr 三栏栅格,左右两列等分,中栏默认占屏幕 56%,可在主题菜单里选 40% / 48% / 56% / 64% / 72%,偏好写入 heybox-up.feedWidth.v1;中栏上限 1180px,并保证两侧至少留 560px,避免侧栏压到正文。#page-creator-content-management 与 -detail)补齐深色:页头、标签栏、条目悬停底色、分隔线、数据指标卡(.creator__data-indicator)、图表区、草稿页与预览框都改用主题令牌。#page-topic-link)补齐深色:整页底色、上下两条固定色条、面板/页头/筛选行、底部渐隐条、分屏线,以及右栏的社区指标与小程序卡片。data-emoji 的 cube 表情与 [cube_NN] 文本标记都渲染成 17px 精灵图,位置按站点 CSS 的 (7-N%10, 19-floor(N/10)) 换算,不再被当标签剥掉后变成空白。link/<id>。com-* 卡片族的深色适配:9 类卡片容器与 .is-editor-mode、占位卡、::after 描边、奖项表行边框、主次文字、药丸与表头底色、深色实心按钮、图片占位底统一改用主题令牌。.comment-item__writer-like span 药丸底、.children-item__comment-creator 蓝色作者名与 .scroll-list__no-more-desc::before 浅色分隔线一并覆盖。topic_id 内请求帖子,支持时间筛选、加载更多、全站搜索入口与返回社区。localStorage。heybox-up.navMotion.v1。#heybox-up-cy 锚点并滚动到“插眼收藏”区块;从其他页面进入时用 sessionStorage 标记,等区块挂载后再定位。[ 与 ] 快捷键;切换走站内路由,不整页刷新,并滚动回顶部。heybox-up.commentPreview.v1,刷新后保持。.hb-bbs-image-text、.hb-bbs-post、.hb-bbs__video 的 ::after),卡片改用边框与间距分隔。.section-title__content,补齐排序栏被站点全局通配规则覆盖的问题。link/tree 返回的 is_cy 标记楼层并隐藏;按钮显示已屏蔽条数,站点重渲染后由 MutationObserver 重新标记。heybox-up.hideCy.v1 偏好。/bbs/app/link/tree,按 20 条翻页,支持收起按钮与 Esc,进入帖子页或窄屏时隐藏。section 与 main.list 的浅色伪元素、个人主页动态分隔条。html 根元素同步改为深色,消除页面边缘与滚动区域的浅色露底。.link-comment 停靠右栏,排序、回复、点赞与展开楼中楼全部复用站点逻辑。data-heybox-up-dark 布尔标记,夜航与纯黑共享全部深色覆盖,避免新增预设漏掉深色样式。localStorage。localStorage。docs/assets/heybox-up.svg,脚本 @icon 使用内联 data URI。#6f8db3,与整体冷色图标一致。createCard 供收藏页区块继续使用。@description 补全功能、权限与影响披露(以登录态读取本站插眼、本地自算签名、仅写本机缓存、需登录)。@homepageURL、@supportURL 与内联 SVG @icon。MIT License
按平台协议「脚本描述须准确反映功能、权限及可能的影响」逐条说明:
@grant none,无特权 API,无 GM_xmlhttpRequest,无跨域提权。heybox_id Cookie,并以该登录态请求小黑盒自身接口 /bbs/app/profile/bbs/comment/list(本账号的插眼记录)。信息流评论预览、抽屉分页与 CY 标记会按需请求站点评论树接口 /bbs/app/link/tree。点赞、收藏、收藏夹列表与 CY 发布仅在用户点击对应按钮时调用站点写接口或收藏夹接口。hkey、_time、nonce。脚本在本地自行计算,不下载、不执行任何外部代码;规则见「三、接口签名」。localStorage(键 heybox-up.cy.v1:<userid>),主题与功能开关写入 heybox-up.theme.v1、heybox-up.commentPreview.v1、heybox-up.navMotion.v1;连读顺序只写入当前标签页的 sessionStorage。评论内容与排序由站点自己管理,脚本不保存。不向任何第三方服务器发送数据,无统计、无埋点、无追踪。@antifeature:无返佣链接、无广告、无付费、无挖矿、无会员限制、无用户追踪,故未声明。