Kali Linux无线安全评估:WPA/WPA2-PSK密码强度测试实战指南
1. 项目概述从“破解”到“安全评估”的认知转变看到“kali linux破解wifi密码”这个标题很多朋友的第一反应可能是“终于能蹭网了”。作为一名在网络安全领域摸爬滚打多年的从业者我必须在一开始就明确一个核心观点我们今天讨论的所有技术、工具和方法其唯一且合法的应用场景是对您个人拥有完全所有权和控制权的无线网络进行安全评估与渗透测试。这包括您自家的Wi-Fi、您公司授权您测试的内部网络或者在完全隔离的实验室环境中搭建的靶场。任何未经授权的网络访问尝试不仅是非法的更是对他人隐私和财产权的侵犯与我们探讨安全技术的初衷背道而驰。那么为什么我们还要研究这个主题因为理解攻击者的手法是构筑有效防御最直接的方式。通过亲手复现一次针对WPA/WPA2-PSK目前最常见的家用Wi-Fi加密方式的“破解”过程你将深刻理解一个弱密码有多么危险一个复杂的密码又为何如此重要。这就像锁匠研究锁具结构不是为了偷窃而是为了制造更安全的锁。Kali Linux作为一个集成了数百种安全工具的“瑞士军刀”式操作系统为我们提供了这样一个完美的学习和研究平台。它内置的aircrack-ng套件、hashcat等工具在安全研究员手中是评估工具在恶意攻击者手中则是武器。我们的目标是让你成为前者——一个懂得如何“攻”从而更善于“防”的安全实践者。接下来我将以一个安全评估者的视角带你完整走一遍在可控环境下使用Kali Linux评估WPA/WPA2-PSK无线网络密码强度的标准流程。整个过程涉及无线网卡选型、监听模式切换、握手包捕获、密码字典构建与离线破解等多个核心环节。我会详细解释每个步骤背后的原理、可能遇到的坑以及我积累的一些实操技巧。请务必确保你的所有操作都在法律允许的范围内进行。2. 核心原理与前置条件解析在动手之前我们必须搞清楚我们要“破解”的是什么以及需要哪些“装备”。这绝非简单的点击运行某个软件而是一套有严格依赖的技术流程。2.1 WPA/WPA2-PSK的认证机制与“破解”的本质家用路由器最常见的加密方式是WPA-PSK或WPA2-PSK“PSK”意为预共享密钥即我们设置的Wi-Fi密码。其认证过程可以简化为一个“四次握手”协议。当一个新设备客户端尝试连接Wi-Fi时它会与路由器接入点AP进行四次报文交互最终协商出一个用于加密后续通信数据的密钥。这个握手过程的核心在于双方需要共同证明自己拥有正确的预共享密钥Wi-Fi密码但又不直接在网络中传输这个密码本身。它们通过一系列基于密码的数学计算来达成共识。我们“破解”的关键就在于捕获这四次握手过程中产生的报文。这些报文中包含了用于验证密码的“握手包”Handshake。“破解”的实质是离线字典攻击或暴力破解。我们捕获到握手包后将其从网络中剥离出来在本地计算机上用一份可能密码的列表即“字典”去模拟握手过程进行计算。如果某个候选密码计算出的结果与握手包中的验证信息匹配那么这个密码就是正确的。因此成功率取决于两个因素1. 密码是否存在于我们的字典中2. 我们计算机的运算速度。2.2 必需的硬件支持监听模式的无线网卡这是整个项目的第一个也是最重要的门槛。你的笔记本电脑自带的绝大多数无线网卡出于设计和驱动限制无法切换到“监听模式”。监听模式是让网卡接收所有经过其无线电范围内的无线数据包而不仅仅是发给自己的包这是捕获握手包的前提。如何选择网卡你需要一块支持监听模式且与Kali Linux本质上是Linux兼容的USB无线网卡。芯片组是关键。经过多年实践以下几款是社区公认的“神卡”兼容性和稳定性最好Alfa AWUS036ACH采用Realtek RTL8812AU芯片支持2.4GHz和5GHz双频性能强劲是我的主力卡。Panda PAU09同样基于RTL8812AU性价比高。TP-Link TL-WN722N (v1)注意必须是v1版本采用Atheros AR9271芯片v2/v3版本已更换芯片不支持。这款是经典入门卡仅支持2.4GHz。注意购买前务必在论坛或商品评价中确认芯片型号和Linux/Kali支持情况。避免购买使用RTL8188系列等常见但不支持监听模式芯片的网卡。2.3 软件环境Kali Linux的部署Kali Linux是我们的操作平台。你有几种选择实体机安装在一台旧电脑或专用设备上直接安装。性能最佳兼容性问题最少。虚拟机安装如VMware Workstation或VirtualBox最方便的学习方式。但关键点在于USB无线网卡需要正确从宿主机你的Windows/Mac穿透到Kali虚拟机中。在VMware中你需要安装VMware Tools然后在虚拟机运行时将USB设备“连接”到虚拟机。Live USB启动将Kali制作成U盘启动盘从U盘启动电脑。这种方式不改变主机系统但性能介于前两者之间。对于新手我推荐虚拟机方案。它便于快照、还原适合反复练习。确保你的电脑CPU支持虚拟化技术Intel VT-x或AMD-V并在BIOS中已开启。3. 实操流程从监听网络到离线破解假设你现在已经准备好了支持监听模式的网卡并在虚拟机中运行着Kali Linux且网卡已成功连接到虚拟机。我们开始一步步操作。3.1 环境准备与网卡识别首先打开终端我们需要确认系统识别了你的外置网卡。# 查看所有网络接口 ifconfig # 或者使用更现代的 ip 命令 ip a你会看到类似eth0有线网卡、lo本地环回和wlan0或wlx...无线网卡的接口。通常内置网卡是wlan0外置USB网卡会被识别为wlan1。记下你的外置网卡接口名下文我们以wlan1为例。接下来在开始捕获之前我们需要杀死可能干扰无线网卡工作的系统进程。# 停止网络管理器服务 sudo systemctl stop NetworkManager sudo systemctl stop wpa_supplicant # 或者使用aircrack-ng套件提供的脚本一次性清理 sudo airmon-ng check kill执行airmon-ng check kill后它会列出并终止可能造成冲突的进程这是非常关键的一步能避免后续操作中出现“设备忙”等错误。3.2 开启监听模式与探测周边网络现在将无线网卡切换到监听模式。# 为 wlan1 接口开启监听模式新接口通常命名为 wlan1mon sudo airmon-ng start wlan1执行成功后使用ip a会看到一个新的监控接口如wlan1mon。接下来使用这个监控接口来探测周围的无线网络。# 使用 airodump-ng 扫描周边Wi-Fi sudo airodump-ng wlan1mon这个命令会打开一个动态刷新的界面分为上下两部分。上半部分显示所有探测到的接入点AP关键信息包括BSSIDAP的MAC地址是它的唯一标识。PWR信号强度数值越大越接近0信号越好。信号太弱会导致捕获困难。CH信道号。ENC加密方式如 WPA2, WEP。ESSIDWi-Fi的名称SSID。下半部分显示当前正在与这些AP连接的客户端设备及其MAC地址。你需要在这里选择一个属于你自己的、用于测试的AP。记下它的BSSID、信道CH和加密方式。我们假设目标AP的BSSID是AA:BB:CC:DD:EE:FF工作在信道6加密方式为WPA2。3.3 定向捕获握手包这是最需要耐心的一步。我们需要针对目标AP进行定向数据包捕获并等待一个有客户端连接或重连的时刻以抓取四次握手包。打开一个新的终端窗口执行以下命令# -c 指定信道--bssid 指定目标AP-w 指定输出文件前缀文件将保存在当前目录 sudo airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w capture wlan1mon这个终端窗口会持续显示与目标AP相关的流量。你会看到“STATION”栏下如果有客户端连接会显示其MAC地址。此时在右上角可能会看到“WPA handshake: AA:BB:CC:DD:EE:FF”的提示这表示成功捕获了一次握手但被动等待可能很久。我们可以主动“刺激”一下。再打开一个终端使用aireplay-ng发起一个取消认证攻击迫使已连接的客户端断开并重新连接从而产生新的握手包。# -0 表示取消认证攻击2 表示发送2个攻击包-a 指定AP的BSSID-c 指定客户端的MAC地址从airodump界面获取 sudo aireplay-ng -0 2 -a AA:BB:CC:DD:EE:FF -c 11:22:33:44:55:66 wlan1mon执行后迅速切回运行airodump-ng的终端观察是否出现“WPA handshake”的提示。成功后可以按CtrlC停止捕获。你会得到几个文件如capture-01.cap这个.cap文件就是我们需要的包含握手包的数据文件。实操心得信号强度PWR至关重要。最好在-50dBm以内。如果目标太远可以尝试调整天线或靠近AP。另外如果始终没有客户端连接你可以用自己的手机或另一台电脑去手动连接/断开目标Wi-Fi以制造握手机会。3.4 构建与选择密码字典握手包到手后破解就从“网络层面”转移到了“计算层面”。你需要一个密码字典——一个包含大量可能密码的文本文件每行一个密码。字典的质量直接决定了成功率。弱密码字典包含12345678,password,qwerty,admin, 电话号码简单数字序列等。对付安全意识极差的用户可能有效。基于规则的字典使用工具如crunch或hashcat的规则可以生成符合特定模式如“单词数字符号”的密码组合。例如你知道目标可能用“公司名年份”作为密码。大型综合字典如rockyou.txtKali自带路径/usr/share/wordlists/rockyou.txt.gz需解压包含数百万个真实泄露的密码是很好的起点。对于学习测试我建议先用一个小的自定义字典。创建一个文件mydict.txtmyhomewifi MyHomeWiFi123 iloveyou2023 password123 12345678903.5 使用aircrack-ng进行字典破解万事俱备开始最后的离线破解。# -w 指定字典文件-b 指定目标AP的BSSID最后是捕获的.cap文件 sudo aircrack-ng -w /path/to/mydict.txt -b AA:BB:CC:DD:EE:FF capture-01.capaircrack-ng会读取握手包和字典开始逐个尝试。如果密码在字典中它会成功破解并显示“KEY FOUND!”后面跟着明文密码。如果字典跑完都没找到则会显示破解失败。关于速度破解速度取决于你的CPU性能。aircrack-ng主要利用CPU运算。对于复杂的密码或大型字典这个过程可能极其漫长数天甚至数年。3.6 进阶利用hashcat与GPU加速对于更严肃的安全评估或面对大型字典和复杂密码aircrack-ng的CPU破解可能太慢。这时就需要祭出神器hashcat。它支持利用GPU显卡进行破解速度可以比CPU快上百倍。首先我们需要从.cap文件中提取出握手包的哈希值转换成hashcat能识别的格式。# 使用 aircrack-ng 附带的工具转换 aircrack-ng capture-01.cap -J capture_hash这会生成一个capture_hash.hccapx文件。然后使用hashcat进行破解。# -m 2500 指定攻击模式为 WPA/WPA2 # -a 0 指定字典攻击模式 hashcat -m 2500 -a 0 capture_hash.hccapx /path/to/big_wordlist.txt如果你的系统有强大的NVIDIA或AMD显卡并安装了正确的驱动和CUDA/OpenCL支持hashcat将自动调用GPU你会看到惊人的破解速度单位千哈希/秒。4. 深度优化与疑难排查掌握了基本流程后我们来深入一些能提升效率和成功率的技巧以及如何解决常见问题。4.1 密码字典的工程化策略盲目使用超大字典效率低下。一个优秀的评估者会采用更智能的策略针对性字典生成如果了解目标例如测试自家网络可以结合已知信息。使用crunch工具生成特定模式的密码。# 生成所有8位数字密码 crunch 8 8 0123456789 -o num8.txt # 生成以“company”开头后跟2位数字的密码 crunch 9 9 -t company%% -o custom.txt字典组合与规则hashcat的强大之处在于其规则引擎。你可以对基础字典中的每个单词应用一系列变换规则如首字母大写、添加后缀数字、leet语替换等。# 使用 hashcat 的内置规则集 OneRuleToRuleThemAll 进行扩展攻击 hashcat -m 2500 -a 0 capture_hash.hccapx rockyou.txt -r /usr/share/hashcat/rules/OneRuleToRuleThemAll.rule字典去重与排序合并多个字典后使用sort和uniq命令去除重复行并可以按密码长度、常见度排序让高概率密码优先尝试。4.2 常见问题与解决方案实录在实操中你几乎一定会遇到下面这些问题问题现象可能原因解决方案airmon-ng start wlan1失败提示 “Device or resource busy”系统网络服务或其他进程占用了网卡运行sudo airmon-ng check kill。如果还不行手动sudo ifconfig wlan1 down后再试。airodump-ng看不到任何AP或客户端网卡不支持监听模式驱动问题区域代码限制确认网卡型号和芯片支持。检查驱动是否正确安装lsusb, dmesg始终抓不到握手包 (WPA handshake)没有客户端活跃连接信号太差攻击包未生效确保有客户端在线airodump下半部有显示。尝试aireplay-ng取消认证攻击。靠近AP改善信号。aircrack-ng提示 “No valid WPA handshakes found”.cap文件中未包含完整的四次握手重新捕获。确保出现“WPA handshake”提示后再停止airodump。可以用aircrack-ng capture-01.cap单独检查文件。破解速度极慢使用CPU破解复杂密码/大字典考虑使用hashcat并启用GPU加速。或者优化字典减少无谓尝试。虚拟机无法识别USB网卡虚拟机USB控制器或穿透设置问题确保虚拟机已安装扩展包。在VMware中点击 “虚拟机” - “可移动设备” - 选择你的网卡 - “连接”。4.3 从攻击视角看防御如何让你的Wi-Fi更安全经历了整个“攻击”流程你现在应该非常清楚Wi-Fi安全的命门在哪里。以下是给你的也是给你评估的客户的切实建议使用强密码这是最根本的。绝对不要使用字典单词、常见短语、纯数字序列。建议使用不少于12位的随机组合包含大小写字母、数字和特殊符号。例如Y7m#qP!2eF9v就比MyHomeWiFi2024安全无数个数量级。启用WPA3如果路由器和所有设备支持优先使用WPA3-SAE加密。它采用了更安全的“同步认证”机制能有效抵御我们刚才演示的离线字典攻击。隐藏SSID网络名称这并不能防止探测专业工具如airodump-ng依然能发现但能减少被普通设备扫描到的机会增加攻击者定位目标的难度。启用MAC地址过滤只允许已知设备的MAC地址接入。注意MAC地址可以被监听和伪造所以这只是一层额外的、较弱的安全措施不能替代强密码。关闭WPS功能Wi-Fi Protected Setup (WPS) 的PIN码认证方式存在设计缺陷可以在数小时内被暴力破解成为整个WPA2防线的突破口。务必在路由器设置中将其禁用。定期更新固件确保无线路由器的固件保持最新以修复已知的安全漏洞。5. 法律边界与伦理思考技术本身并无善恶全在于使用者之心。我反复强调所有这些技能必须在严格合法的范围内使用仅针对自有资产你只能测试你拥有书面授权进行测试的网络和设备。获取明确授权在任何非自有网络如公司网络、朋友家上进行测试前必须获得所有者清晰、明确的书面授权。未经授权的访问即使没有恶意意图也可能违反《计算机信息系统安全保护条例》等相关法律法规。用于学习与防御将这项技术视为理解无线网络安全漏洞、评估自身网络防御水平的途径而不是获取非法访问权限的工具。通过这个完整的项目实践你收获的不仅仅是一串命令而是一套关于无线网络安全攻防的立体认知。你知道攻击如何发生就能更精准地部署防御。这才是Kali Linux以及渗透测试技术赋予我们的真正价值——不是破坏而是通过理解破坏来更好地建设与守护。在安全的世界里知攻方知守这永远是一条黄金法则。最后一个小建议建立一个属于自己的隔离实验环境比如用旧路由器搭建这是你安全、合法磨练技术的最佳沙盒。

相关新闻

基于图莫斯的CAN UDS升级上位机-LabVIEW版本(十六):从刷写到诊断的功能扩展

基于图莫斯的CAN UDS升级上位机-LabVIEW版本(十六):从刷写到诊断的功能扩展

1. 引言在前面的系列文章中,我们完成了基于图莫斯CAN工具的LabVIEW UDS升级上位机开发,实现了ECU固件刷写的完整流程。然而,UDS协议的能力远不止于刷写——它涵盖了六大功能单元、共26种诊断服务,是汽车电子领域最全面的诊断通信协…

2026/10/14 18:44:54 阅读更多 →
VASP计算报错全解析:从错误分类到实战解决方案

VASP计算报错全解析:从错误分类到实战解决方案

1. 项目概述:VASP计算中的“错误”是常态做第一性原理计算,尤其是用VASP,没遇到过报错几乎是不可能的。这就像开车上路,不遇到几个红灯或者堵车,那才叫稀奇。很多刚入门的朋友,看到终端里蹦出一堆红色的“E…

2026/10/14 19:16:06 阅读更多 →
集成运算放大器实战:从放大、比较到阻抗匹配的电路设计与避坑指南

集成运算放大器实战:从放大、比较到阻抗匹配的电路设计与避坑指南

1. 项目概述:从“理想”到“现实”的运放之旅如果你玩过电子设计,尤其是参加过一些竞赛,那“集成运算放大器”这个名字绝对如雷贯耳。它就像一个电路世界里的“万能公式”,从信号放大、加减运算,到电压跟随、比较判断&…

2026/10/6 12:44:03 阅读更多 →

最新新闻

artcraft 项目实战:从创意到成品的流程编排与参数体系设计

artcraft 项目实战:从创意到成品的流程编排与参数体系设计

1. 从“artcraft”这个名字说起:它到底想解决什么问题第一次看到“artcraft”这个项目标题,我的直觉是:这大概率是一个把“艺术创作”和“手工实现”捏合在一起的工具型项目。拆开来看,“art”指向视觉表达、创意生成、审美输出&a…

2026/10/15 8:26:36 阅读更多 →
Spring Boot开发实战:从入门到高效微服务构建

Spring Boot开发实战:从入门到高效微服务构建

1. 为什么选择Spring Boot第一次接触Spring Boot是在2016年参与一个企业级微服务项目时。当时团队还在使用传统的Spring MVC框架,光是搭建一个基础项目就需要配置几十个XML文件,每次启动项目都要花费近10分钟。直到技术负责人引入了Spring Boot&#xff…

2026/10/15 8:26:36 阅读更多 →
diagram-design:从画图到设计系统,图表规范与协作实践指南

diagram-design:从画图到设计系统,图表规范与协作实践指南

1. 从一张草图到一套系统:diagram-design 到底在解决什么问题第一次听到“diagram-design”这个词,很多人会下意识觉得它只是“画图”的另一种说法。但真正在项目里被图表折磨过的人知道,画图只是冰山一角,水面下藏着的是一整套关…

2026/10/15 8:26:36 阅读更多 →
前端浏览器类型与IE版本判断:从UA解析到特性检测的完整方案

前端浏览器类型与IE版本判断:从UA解析到特性检测的完整方案

1. 浏览器判断这件事,远比想象中要复杂浏览器类型判断,尤其是区分IE浏览器,看起来像是个老掉牙的话题。很多前端同行的第一反应是:这年头谁还管IE?但实际情况是,只要你还在一线做企业级项目、后台管理系统、…

2026/10/15 8:26:36 阅读更多 →
C语言实现九九乘法表:循环与格式化输出详解

C语言实现九九乘法表:循环与格式化输出详解

1. 项目概述:C语言实现九九乘法表九九乘法表是编程初学者最经典的练手项目之一。这个看似简单的需求,实际上涵盖了循环控制、格式化输出、算法逻辑等多个基础编程概念。用C语言实现乘法表,不仅能巩固基础语法,更能培养对程序结构的…

2026/10/15 8:26:36 阅读更多 →
从画图到设计:用文本化DSL把架构图变成可维护的工程资产

从画图到设计:用文本化DSL把架构图变成可维护的工程资产

平时我见得最多的“图”,不是最终文档里那张漂亮的架构图,而是评审会上被临时画在白板上的方框加箭头。主讲人一边画一边改,台下的人一边看一边猜。等会议结束,没人记得箭头谁指向谁,只记得“好像讲了一个方案”。后来…

2026/10/15 8:25:33 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →