机器码重置背后的授权绑定机制:从硬件指纹到License管理
1. 为什么机器码会突然“变脸”1.1 那次求助的完整经过前两天技术交流群里有人抛出一个问题标题就一句话“一键重置机器码问题解决了”。乍看像某个工具的广告但点进去才知道是群友在求助某款行业软件绑定了机器码授权因为服务器内存故障换了一块主板软件突然提示“本机机器码与授权不匹配”整个业务系统直接启动不了。群友的第一反应是找软件客服客服回复也很干脆“需要重置机器码提供授权编号和公司全称等待审核。”听起来很简单但实际操作起来里面全是细节机器码到底在哪里查怎么把新机器码发给对方如果重置完还是不行又该怎么排查我用这个案例想说的是机器码这件事几乎所有做过B端软件采购、授权管理或者写过带License系统的开发者都会遇到。它不是游戏里的防沉迷码也不是所谓注册保护机制它是软件授权体系里很常见的“硬件指纹绑定”逻辑。先声明一下立场这篇文章只讲合法的授权管理场景。如果你是想研究怎么绕过别人的授权保护那可以不用往下看了别给自己惹麻烦也没必要。1.2 换硬件只是导火索这位群友遇到的问题表面上是“换主板导致授权失效”实际上背后是一个授权绑定机制的正常反应。软件开发商为了防止一个授权在多台设备上同时使用会在软件启动时采集当前设备的硬件信息生成一串机器码然后和服务器上记录的授权机器码做比对。一致就放行不一致就报错。这串比对的机器码不是软件开发商凭空想出来的随机串它是当前计算机硬件特征的一个摘要值。也就是说只要硬件变了一点机器码就可能变。问题在于不同硬件的采集稳定性不一样主板UUID和BIOS信息相对稳定只要主板不换一般不会变。硬盘序列号在单块硬盘上是稳定的但你要是做了磁盘克隆或者换盘就可能剧烈变化。网卡MAC地址在虚拟机上特别容易被改每次重建虚拟机网络配置都可能不一样。CPU ID最不稳定很多平台上都读不到或者多颗CPU的排列顺序不同也会导致结果不同。这就解释了一个现象有时候你只是把一块数据盘从机器A拔下来插到机器B机器码没变但有的时候你只是更新了BIOS版本机器码也变了。它不是“换硬件才变”而是“任何被采集的硬件元数据发生变化最终摘要都可能变”。这个“可能”非常折磨人因为机器码的生成规则是各软件自己定的你没法通过观察猜测到底是哪一项触发了变化。于是就有了群友那种情况明明只是换个主板却被软件判定为“换了整台电脑”。1.3 重置机器码到底动了谁的“奶酪”先说结论合规的机器码重置动的不是软件的奶酪而是授权生命周期里的一个正常操作。任何做正式商业授权的软件都一定会考虑用户的正当天赋权利买了授权机器硬件坏了换新硬件后不能让人家重新买一套吧。所以现在稍微成体系的软件商都会提供“解绑”“重置机器码”或者“授权迁移”的入口。区别只是入口藏得深不深流程繁琐不繁琐。我见过几种典型做法用户在后台提交工单人工审核后由厂商后台解绑用户重新激活。用户在软件界面里主动发起“解绑”每年限制次数比如两次够覆盖常见的硬件故障。授权文件提前写明硬件更换条款例如允许一次免费重置之后付费服务。授权文件和机器码一起放在加密狗里重置时厂商给你发新的授权数据文件。所以当你听说“重置机器码”的时候先确认一个问题你手里的授权是不是合法购买的如果是这就是一个售后流程如果不是那就不是重置的问题而是侵权问题性质完全不同。2. 机器码是怎么生成的2.1 机器码不是“一个”码而是一组硬件指纹的摘要很多非技术人员以为机器码就是一个类似“7B2A-4D1F-9C00-11A5”的固定编号其实它的本质是“硬件指纹摘要”。你可以把计算机想象成一个人主板UUID、硬盘序列号、MAC地址这些信息相当于人的身份证号、指纹、虹膜。软件把这些特征收集起来经过一段拼接和哈希运算最后转成一段自定义格式的字符串。这段字符串有什么用对软件来说它是判断“是不是同一台机器”的凭据。对运维人员来说它是排查授权问题的线索。对开发者来说它是授权系统的核心数据。这里有个边界要注意机器码本身不是秘密也不该被当成秘密。你看到的大部分机器码都能从系统里查出来。软件商保护授权靠的是后台的绑定关系而不是靠“机器码保密”。2.2 常见采集项与读取命令不同软件采集的硬件特征项不同但主流的Windows商业软件一般会采集以下几项采集项Windows读取命令稳定性表现典型用途主板UUIDwmic csproduct get uuid高跟随主板最常用的绑定额硬盘序列号wmic diskdrive get serialnumber中换盘必变防止磁盘迁移CPU IDwmic cpu get processorid低部分机器读不到辅助识别网卡MAC地址getmac /v中可被修改辅助识别系统安装序列号reg query 注册表相关项低重装系统会变很少单独使用我自己写授权检测脚本时最常用的是主板UUID加第一块物理磁盘序列号再用MD5做摘要。这两个组合的稳定性在大量实践中是最好的重装系统不变、换网卡不变、加内存不变但换主板或换系统盘一定会变正好符合“大硬件变更才需要重置授权”的预期。2.3 从硬件信息到机器码的算法套路机器码生成的通用流程并不复杂大致是四步采集硬件信息。把采集到的字符串按固定顺序拼接中间用分隔符隔开防止“AB”和“AB”混淆。对拼接后的字符串做哈希运算常见是MD5或SHA1。把哈希结果截断、分组、加连接符变成人友好的格式。这里给出一个简单的PowerShell示例可以作为“查看机器码”的内部辅助工具$uuid (Get-WmiObject Win32_ComputerSystemProduct).UUID.Trim() $disk (Get-WmiObject Win32_DiskDrive | Where-Object {$_.Index -eq 0}).SerialNumber.Trim() $raw $uuid|$disk $md5 [System.Security.Cryptography.MD5]::Create() $bytes [System.Text.Encoding]::UTF8.GetBytes($raw) $hash [System.BitConverter]::ToString($md5.ComputeHash($bytes)).Replace(-, ) $code $hash.Substring(0, 20) $code -replace (.{4})(.{4})(.{4})(.{4})(.{4}), $1-$2-$3-$4-$5这个脚本只是用来看机器码的不涉及任何绕授权逻辑。它输出的20位分组字符串就是这套规则下的机器码。为什么选MD5而不是更“高级”的算法因为机器码的目的不是加密而是生成一个稳定、简短的标识。MD5速度快、实现简单、输出长度合适在商业授权场景足够用。安全性靠后台绑定关系保证不靠算法本身。3. 软件商为什么保留“重置机器码”功能3.1 授权绑定的双刃剑绑定机器码能让软件商有效防止一个授权被无限复制但对合法用户来说也是负担。最典型的矛盾场景就是服务器整机迁移。机房要做旧服务器下线你数据都迁走了软件授权还在旧机器上不重置就等同于软件报废。所以成熟的授权体系一定包含“重置”这个状态。它不是一个隐藏后门而是授权生命周期管理的必要环节和账号注销、密码找回是一个性质的机制。评估一套授权系统是否专业重点就看三点绑定是否合理绑定项是不是太多、太敏感比如连PowerShell版本都绑进去会导致刷新系统补丁都变机器码。解绑是否可控用户能不能自助重置需要等多久有没有次数限制。重置链路是否可审计谁在什么时候重置了哪台机器的授权后台有没有完整记录。3.2 厂商后台的一键重置流程回到群友的问题软件客服说“需要重置机器码”具体在厂商端是怎么操作的大致分四步用户提交授权编号和公司信息。客服后台查询授权订单确认购买人身份。后台将授权状态改成“待激活”并把原机器码绑定记录置为失效。用户客户端重新获取机器码提交激活软件完成绑定。这个过程里用户端看到的是“一键重置”因为客服直接帮你做完了。但本质上是后台删除了旧的绑定关系建立了新的绑定关系。你手里那台机器的机器码本身并没有“被重置”被重置的是软件商服务器上“授权和机器码的配对关系”。理解这一点非常关键。很多人在本地到处找所谓的“重置工具”翻注册表、改授权文件折腾半天发现软件依旧不认账原因就是找错了方向。除非你的软件授权是完全离线的纯本地授权文件否则本地再怎么清理都绕不过服务器端的绑定校验。3.3 开发者怎么给自家软件加重置接口如果你自己是一名软件开发者正在做按机器码绑定的授权系统我建议从一开始就把“重置”设计成标准能力。一个比较省心的设计方案长这样数据库表结构预留授权绑定表CREATE TABLE license_bind ( id INTEGER PRIMARY KEY AUTOINCREMENT, license_key TEXT NOT NULL, machine_code TEXT NOT NULL, bind_time DATETIME, unbind_time DATETIME );当用户要求重置时开发一个接口后端做三件事校验调用者身份、把旧记录unbind_time填上、返回新的激活码。前端客户端拿到激活码后重新采集机器码并上报后台生成新的绑定记录。还要做几个限制解绑次数、冷却时间、操作日志。没有限制的重置接口等于把授权系统从“设备绑定”变成“随便漂移”授权保护就形同虚设了。我见过一个内部系统就是这么翻车的某同事闲着没事每周把授权在电脑A和电脑B之间来回搬最后被厂商后台风控判定为滥用直接锁了账号。4. 实战一次数据中心的机器码重置记录4.1 备份旧授权与采集当前硬件信息讲完了原理说一下实际处理过程。某天公司一台跑生产库的Windows Server报授权失效错误信息是“Device code changed”我当时的处理步骤是这样的。第一步千万不要急着删任何东西。先把旧授权信息保留下来。很多软件会把授权文件放在固定目录比如C:\ProgramData\公司名\授权.dat或者写在注册表HKLM\SOFTWARE\公司名下面。先把这些文件复制一份存到网盘方便后面核对授权有效期。第二步采集当前机器码。优先去软件的“关于”或“授权管理”页面里复制因为那是软件自己算出来的和我手动算的格式可能不一样。如果软件界面已经打不开再用系统命令采集硬件信息。Windows Server上建议用下面的组合命令Get-WmiObject Win32_ComputerSystemProduct | Select-Object -ExpandProperty UUID Get-WmiObject Win32_DiskDrive | Where-Object {$_.Index -eq 0} | Select-Object -ExpandProperty SerialNumber Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.IPEnabled -eq $true} | Select-Object -ExpandProperty MACAddress把输出结果记录下来尤其主板UUID要原样复制它最可能被厂商后台用到。第三步准备一份说明文档写明授权编号、公司全称、软件名称、旧机器码、新机器码、硬件变更原因比如“主板故障更换”、变更日期。这样客服拿到工单不需要追问你三轮一次就能开始审核。4.2 提交重置申请的正确姿势很多人在客服窗口只发一句“我要重置机器码”然后傻等。我总结出一个相对高效的流程先去官网找“授权管理”自助入口。很多软件现在都支持用户中心自助解绑根本不用等人工。如果没有自助入口再提交工单。工单里把授权编号、公司名、新机器码一次性写清楚。保留工单编号。后续所有跟进都基于这个编号避免重复审核。提交后耐心等。人工审核一般不会太快快的话半天慢的可能三到五个工作日。中间不要反复催促也不要重复提交多个工单反而会把队列打乱。审核通过后软件商会发一个确认邮件内容一般是“授权已重置请在72小时内完成激活”。这意味着时间窗口有限别收到邮件了还放着不管。4.3 重置后恢复授权的三个检查点激活完成后别急着宣布“问题解决了”我习惯按三个检查点过一遍第一软件能正常启动授权状态显示为“已激活”。第二机器码采集脚本再跑一次确认和提交给厂商的机器码一致排除采集时乱码的情况。第三重启一次操作系统再打开软件确认授权不会因为重启而丢。第三个检查点特别重要。有些软件激活状态只存在内存缓存里重启后才真正从授权文件重新校验。如果你顺手清了一次临时目录授权文件可能被清理掉又变回未激活状态。我当时处理的那台机器重置后第一次启动是正常的但重启系统再打开软件提示“授权文件被篡改”最后定位到是第三方安全加固软件拦截了授权文件的读写。这种问题就不是机器码的问题了属于激活后二次校验失败需要把软件目录和授权文件路径加入白名单。5. 常见问题与避坑清单5.1 重置后机器码为什么还是老样子有朋友会遇到一种情况厂商后台已经重置了但本机算出来的机器码和提交之前一模一样软件依然提示失效。这时候要区分“后台绑定未生效”和“本地机器码没变”两种可能性。先看本地。软件重新采集机器码时如果采集规则没变、硬件信息没变那机器码当然还是同一个。你提交给厂商一个机器码重置后大概率还是这个机器码这不代表操作失败而是意味着后台应该把授权重新绑定到这个相同机器码上然后再放行。如果厂商明确说“已重置”软件还报错那就检查一下授权文件的写入时间确认是不是激活时没有权限写入。最好以管理员身份重新打开软件完成激活别图省事双击普通用户快捷方式。5.2 虚拟机环境里的机器码为什么频繁变化虚拟机的机器码浮动是个大坑。很多人为了节省成本把授权绑定的软件放在虚拟机里跑结果每次VMware或Hyper-V创建新虚拟机虚拟网卡的MAC地址都会重新生成。如果软件的机器码规则里包含MAC地址授权就会频繁失效。解决思路有两个方向在虚拟化平台里固定虚拟网卡的MAC地址让虚拟机每次启动都用同一个MAC。在做虚拟机模板时先完成软件激活再生成快照之后所有克隆都基于这个快照。不过这里也得提醒如果你把同一台虚拟机的多个克隆同时开机它们会共享同一个机器码这通常被视为同一授权在多台设备上使用属于违规场景。厂商后台一般会检测到这种冲突轻则警告重则封禁授权得不偿失。5.3 重装系统后机器码变了的几种情况重装系统导致机器码变化的概率不高但不代表不会发生。常见原因有三个系统重装时驱动顺序变化导致处理器信息采集顺序不一样。重装前做过BIOS升级BIOS中的UUID信息被更新。重装时重新分区或更换了系统盘硬盘序列号变了。所以重装系统前建议先做一次授权解绑或重置操作尤其那种软件界面自带“解绑”按钮的一定要先点掉。等到重装完再发现授权失效很多厂商客服会让你提供购买时的订单信息审核流程会拖很久。5.4 几件不该做的事最后列几个我在实操中碰过的坑还有三条明确不该碰的边界不该直接删除注册表里和授权相关的键值。删掉后软件可能压根识别不出授权文件还得重新走激活流程费时费力。不该把公司内部授权绑定信息发到公开论坛。机器码和授权编号一起出现等于告诉别人你这个授权可以用来做什么。不该在没有授权的情况下尝试通过调整系统时间、清理试用标记等办法让软件重新进入试用期。这是典型的违反授权协议行为厂商有权追究。不该频繁重置授权。很多后台系统会自动记录IP、设备指纹、申请次数短时间多次重置会被标记为异常账户后续所有正常售后申请都会变慢。我个人的习惯是把每一台机器的机器码、授权编号、激活日期、硬件变更记录都放在一张表格里改成电子台账。机器码后面加一列“变更原因”每次都记录为什么发生变更。这样不管是自己排查还是提交工单两分钟就能拿出完整材料客服处理起来也快。结尾那次群友的“一键重置机器码”问题最终两小时就解决了。软件客服人在后台直接解绑群友重新激活业务恢复运行。看完整个过程我最大的体会是机器码重置这件事关键不在于“重置”这两个字有多神秘而在于你手里的授权是否合法、你走的流程是否正当。设备是你的授权也是正规买的那重置机器码就是再正常不过的售后服务如果授权本身来路不明那任何所谓“重置”都不该碰。建议所有管着软件资产的朋友把“机器码”当成资产管理的一部分。平时把机器码台账做好把授权文件备份好真到换硬件、换主板、迁虚拟机的时候你会发现“问题解决了”这句话其实是因为提前把该做的都做完了。

相关新闻

多网段互通实验:静态路由配置与回程路由排错全攻略

多网段互通实验:静态路由配置与回程路由排错全攻略

多网段互通实验,这个题目在网工学习路线里出现频率相当高。一提起静态路由配置实验,很多新手第一反应就是“两边配个静态路由就能通”,但真上手一测,要么单向通,要么中间某个网段压根出不去。这个实验之所以值得单独拿…

2026/10/11 12:45:34 阅读更多 →
政务采购安全资质Agent推荐:信创与安全合规

政务采购安全资质Agent推荐:信创与安全合规

政务信息化采购的门槛,正从"功能能不能用"转向"资质能不能过"。Agent 类产品要进入政务场景,必须先回答三个问题:资质齐不齐、信创适配全不全、数据出不出域。一、政务采购的三道硬门槛 1.1 资质门槛:从单一等…

2026/10/11 12:45:34 阅读更多 →
外贸企业建站避坑全指南:为什么你的网站上线半年没询盘

外贸企业建站避坑全指南:为什么你的网站上线半年没询盘

去年,石家庄一家做丝网出口的企业老板找到我诉苦:花了两万多找建站公司做了个英文网站,上线半年,谷歌搜不到、询盘没几个。这不是个例。做了十几年外贸推广,我见过太多企业在建站这件事上栽跟头。2026年,外…

2026/10/11 12:44:33 阅读更多 →

最新新闻

Java 实现超大附件上传:分片、断点续传与合并校验实战

Java 实现超大附件上传:分片、断点续传与合并校验实战

很多做文件上传功能的同学,第一次接到“超大附件”需求时都以为只是加个参数、调大内存就能搞定。结果一跑真实文件,几百 MB 可能还能撑住,到了几个 GB 甚至十几个 GB,要么请求超时,要么服务端内存直接打满&#xff0c…

2026/10/11 13:35:01 阅读更多 →
私有化交付自动化巡检引擎:编写覆盖 50 项软硬件指标的零依赖前置验收脚本

私有化交付自动化巡检引擎:编写覆盖 50 项软硬件指标的零依赖前置验收脚本

在私有化项目交付的“翻车排行榜”上,排在第一名的永远不是“业务系统有 Bug”,而是“客户提供的底层服务器环境存在极其隐蔽的致命硬伤”:实施工程师辛辛苦苦在客户内网机房忙活了整整一天,终于把全部容器和微服务拉齐&#xff0…

2026/10/11 13:35:01 阅读更多 →
微服务核心降级矩阵实战:当上游依赖与第三方支付瘫痪时如何保住核心交易

微服务核心降级矩阵实战:当上游依赖与第三方支付瘫痪时如何保住核心交易

在大促高并发或突发网络割接等极端场景下,分布式微服务系统最危险的状态不是“所有机器全死”,而是“某一个非核心的下游依赖半死不活”:比如商品详情页调用的“个性化推荐服务”突然发生 GC 停顿,响应耗时从 10ms 拉长到 3 秒&am…

2026/10/11 13:35:01 阅读更多 →
红外电力设备目标检测数据集实战:从VOC转YOLO到切图推理全流程

红外电力设备目标检测数据集实战:从VOC转YOLO到切图推理全流程

简介:这份红外电力设备目标检测数据集面向电力AI检测、智能电网运维及计算机视觉方向的研究者与开发者,提供可直接用于YOLO系列模型训练的真实热成像标注数据。资源包共2000个文件,以1474个txt标注文件、524张jpg热成像图片为主,另…

2026/10/11 13:35:01 阅读更多 →
Java超大文件分片上传实战:解决OOM与连接超时

Java超大文件分片上传实战:解决OOM与连接超时

在 Java 后端开发里,“JAVA http 请求”本身不算难事,难点是当请求体变成几个 GB 的超大附件时,问题会全部冒出来。我之前负责一个数据文件交换平台,用户经常上传 3GB、6GB 的现场采集包,最初同事按普通 Multipart 方式…

2026/10/11 13:35:01 阅读更多 →
SS728M05身份证验证终端Windows接口包对接指南:从DLL调用到稳定部署

SS728M05身份证验证终端Windows接口包对接指南:从DLL调用到稳定部署

简介:面向Windows平台的神思SS728M05身份证验证SDK开发包,专供需要集成二代身份证读取、解码与真伪校验的开发者使用。接口封装了神思硬件设备的底层通信协议,适用于银行开户、网络实名认证、酒店登记等实名制场景,开发者无需深入…

2026/10/11 13:34:01 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →