蓝牙BLE SSP安全配对:从ECDH原理到实战攻防与调试
1. 项目概述为什么BLE安全配对是“简单”的在物联网和智能设备遍地开花的今天蓝牙低功耗BLE技术几乎无处不在。从你手腕上的智能手环到家里的智能门锁再到办公室的无线鼠标背后都有BLE的身影。但一个经常被开发者甚至是一些产品经理忽略的问题是这些设备之间建立连接时到底安不安全数据会不会被隔壁老王轻易截获这就引出了我们今天要深入探讨的核心——蓝牙BLE的SSP即简单安全配对。我第一次接触SSP是在做一个智能门锁项目时客户提了一个硬性要求配对过程必须防窃听、防中间人攻击。当时我第一反应是蓝牙配对不就是输入个“0000”或者“1234”吗这能有多安全但深入研究BLE 4.2及以后版本的规范后我才发现这个“简单”二字其实大有深意。它并不是指功能简陋而是指通过一套标准化的流程将复杂的安全密钥协商过程变得对终端用户而言“简单易用”。用户可能只需要在手机上点一下“确认”或者对比一下两个设备上显示的6位数字背后却完成了一次基于椭圆曲线密码学ECC的强力密钥交换。简单来说SSP是蓝牙核心规范从4.2版本开始引入并强化的安全配对框架旨在解决传统蓝牙PIN码配对方式存在的安全缺陷如被动窃听、中间人攻击等。它定义了设备间如何建立安全连接、生成用于加密通信的长期密钥LTK的完整协议。对于嵌入式开发、物联网安全测试以及应用开发人员而言透彻理解SSP不仅是实现功能的前提更是保障产品安全底线的必修课。如果你正在开发涉及敏感数据如门禁控制、健康数据、支付信息传输的BLE设备那么这篇文章将带你从协议原理到实战调试彻底搞懂SSP避开那些我当年踩过的坑。2. SSP的核心机制与配对方法解析SSP之所以能提升安全性核心在于它引入了“关联模型”的概念并根据设备的人机交互能力提供了多种配对方法。理解这些方法是分析一切安全问题的起点。2.1 关联模型安全与用户体验的权衡蓝牙SIG特别兴趣小组定义了四种关联模型本质上是四种用户交互方式用于在配对期间进行身份验证。选择哪种模型取决于配对双方设备的输入输出能力。1. 数值比较这是最常见于现代设备如手机与耳机、手机与手环的模型。两台设备各自独立计算出一个6位数字并显示给用户。用户的任务很简单比较两个设备上显示的数字是否一致。如果一致就在双方设备上确认。这个过程利用了“人”作为验证环节防止了中间人攻击。因为攻击者无法同时控制两个设备的显示并让用户看到相同的、可接受的数字。2. 一键确认适用于只有输出能力或无显示能力的设备如只有一个按钮的蓝牙音箱。发起配对的设备如手机会显示一个提示如“与XX音箱配对”用户只需在音箱上按一下确认键即可。这种方法安全性基于用户物理上接触了被配对设备这一事实假设攻击者无法同时做到这一点。3. 密码输入这是传统PIN码方式的进化版但通常用于一方有输入能力如键盘另一方有输出能力如显示的场景。例如将蓝牙键盘连接到平板电脑平板上会显示一个6位数字用户需要在键盘上输入这串数字。这同样构成了一个带外验证。4. 带外通信利用蓝牙以外的通信渠道如NFC来交换配对信息。例如用手机碰一下支持NFC的蓝牙音箱配对信息通过NFC安全交换然后蓝牙连接自动建立。这是最安全便捷的方式之一因为OOB通道通常被认为是抗干扰和防窃听的。注意许多低成本的BLE模块如某些ESP32开发板常用的模块在默认固件中可能只支持“一键确认”或甚至更老的安全模式。在产品选型时务必确认其支持的关联模型和蓝牙核心规范版本至少4.2否则可能无法实现你期望的安全等级。2.2 配对阶段分解Phase 1, 2, 3SSP的配对过程清晰地分为三个阶段理解每个阶段的任务对于调试和安全分析至关重要。Phase 1配对特性交换这是配对对话的开始。双方设备通过交换“配对请求”和“配对响应”数据包来协商后续的安全参数。关键协商内容包括IO能力声明自己支持上述哪种关联模型显示、输入、无。OOB数据可用性是否支持带外配对。认证要求是否需要MITM中间人保护。密钥大小协商后续加密使用的密钥长度7-16字节。这个阶段是明文通信不涉及加密。但这里的选择直接决定了后续使用哪种关联模型和密钥生成方法。我遇到过一种典型的调试问题手机有显示和自研设备只有一个按钮配对失败日志显示“认证失败”。排查后发现自研设备在IO能力声明时错误地标记了自己“有显示”导致手机期望进行“数值比较”而我们的设备无法显示数字后续流程自然崩溃。Phase 2短期密钥STK或长期密钥LTK生成这是安全的核心。根据Phase 1的协商结果双方会采用以下三种方法之一来生成一个共享的密钥LE Legacy Pairing仅用于向后兼容。使用一个临时密钥TK通过SAFER算法生成STK。TK的来源取决于关联模型如“一键确认”的TK就是全0。这种方式安全性较弱。LE Secure Connections这是BLE 4.2引入的强力安全升级。采用基于椭圆曲线P-256的ECDH椭圆曲线迪菲-赫尔曼密钥交换协议。双方各自生成公私钥对交换公钥然后利用自己的私钥和对方的公钥计算出一个共享密钥DHKey。这个过程能有效抵御被动窃听。后续的LTK将从这个DHKey派生出来。OOB如果可用直接使用通过OOB通道如NFC交换的安全信息来生成密钥。Phase 3传输特定密钥分发在安全连接建立后此阶段用于分发用于后续加密通信的各种密钥最主要的就是长期密钥LTK。从设备将LTK发送给主设备存储以后重连时主设备可以直接使用这个LTK来快速恢复加密连接而无需再次经历完整的配对流程这就是“绑定”过程。3. 实战从协议抓包分析SSP全过程理论说得再多不如一次实际的抓包分析来得透彻。这里我以一次使用“数值比较”模型的LE Secure Connections配对为例结合常用的蓝牙嗅探工具如Nordic的nRF Sniffer或Ellisys的蓝牙分析仪带你走一遍关键的数据交互。假设场景是手机Central连接一个智能手表Peripheral。3.1 抓包环境搭建与关键点首先你需要一个支持蓝牙5.0及以上的嗅探器因为要解析Secure Connections的协议。将嗅探器频道设置为与被测设备通信的频道BLE广播通常在37, 38, 39频道连接后会跳频。开始抓包并触发手机与手表的配对。3.2 关键数据包逐帧解析在抓取到的数据流中找到配对过程通常发生在连接建立后的第一个连接间隔内。我们关注几个关键帧Pairing Request和Pairing Response作用Phase 1的协商。关键字段IO Capability: 会显示双方的能力比如手机是DisplayYesNo手表是DisplayYesNo这决定了使用“数值比较”模型。OOB Data Flag: 通常为0x00无OOB。AuthReq: 其中的MITM位会被置1要求中间人保护SC位被置1指示使用安全连接。Max Encryption Key Size: 比如0x1016字节。Public Key交换作用Phase 2 of Secure Connections。这是最核心的安全步骤。内容你会看到两个非常大的数据包每个64字节分别是手机发送的PKa手机的公钥和手表发送的PKb手表的公钥。这两个公钥在空气中是明文传输的。安全原理即使攻击者截获了PKa和PKb在没有任一方私钥的情况下也无法计算出共享的DHKey。这就是ECDH的精妙之处。Pairing Confirm和Pairing Random作用在交换公钥后双方需要确认对方确实拥有对应的私钥并且没有发生中间人攻击。这个过程会生成用于“数值比较”的那个6位数。流程手机生成一个随机数Na手表生成Nb。手机用Na、对方的公钥PKb等信息计算出一个确认值Ca发送Pairing Confirm (Ca)。手表做同样计算发送Cb。然后双方交换随机数Na和Nb通过Pairing Random包。收到对方的随机数后各自验证对方之前发送的确认值C是否正确。如果正确说明通信对方是合法的密钥持有者。验证通过后双方利用Na、Nb和DHKey等参数各自计算并显示那个6位的“数值比较”代码。Encryption Information和Master Identification作用Phase 3的密钥分发。Encryption Information从设备手表发送给主设备手机的数据包里面包含了生成的长期密钥LTK。从此帧开始后续通信可能已经使用该LTK或其派生的会话密钥进行加密。Master Identification主设备发送的包包含一个随机数EDIV和一个Rand值用于在重连时标识和快速派生会话密钥。实操心得抓包时最常卡住的地方就是Pairing Confirm/Random交换失败。除了IO能力不匹配还有一个常见原因是随机数生成器RNG的质量。在一些低成本的MCU上如果上电后熵源不足生成的随机数Na/Nb随机性不够可能导致确认值计算对不上。解决方案是确保系统有可靠的硬件RNG或者在首次使用前用ADC采样噪声等方式积累足够的熵。4. 安全测试与常见攻击面分析理解了SSP如何工作我们才能有的放矢地进行安全测试。SSP的设计大大提升了安全性但并非无懈可击其安全强度高度依赖于实现和关联模型的选择。4.1 针对不同关联模型的潜在攻击一键确认攻击面这是最弱的模型之一因为它依赖于用户的“一次物理确认”。攻击者可以尝试在用户不知情的情况下触发配对请求例如通过近距离广播伪造包。如果设备自动接受任何配对请求或用户习惯性按“确认”就会配对到攻击者的设备。测试方法使用工具如GATTacker、btlejuice模拟一个与目标设备同名的伪设备向手机发起配对请求观察手机行为和用户反应。数值比较攻击面理论上可抵御中间人攻击但前提是用户认真比较了数字。攻击者可以进行“数字注入攻击”即同时与双方设备建立连接并试图让两边显示相同的数字概率极低但非零。更实际的威胁是用户忽略直接点击“确认”使安全机制形同虚设。测试方法实施中间人攻击测试看攻击工具能否在配对过程中插入。同时评估UI设计数字是否清晰显示是否有足够强的提示要求用户对比密码输入攻击面与数值比较类似安全依赖于用户正确输入。此外如果密码是固定的如某些设备的“000000”则完全失去安全意义。测试方法尝试使用默认或弱密码。检查密码是否在每次配对时动态生成。带外通信攻击面最安全但攻击面转移到了OOB通道本身如NFC的嗅探与重放。测试方法对OOB通道进行安全测试。4.2 密钥管理与绑定安全SSP配对成功后生成的LTK是安全的核心。如果LTK泄露所有历史通信和未来重连都可被解密。LTK存储安全风险设备将LTK以明文形式存储在Flash或EEPROM中。攻击者通过物理接触或软件漏洞可提取密钥。测试与加固检查设备固件看LTK是否加密存储。理想情况下应使用芯片提供的安全存储区域如Secure Element, TrustZone。在资源受限的设备上至少要用一个设备唯一的密钥对LTK进行加密后再存储。重连过程安全过程绑定后重连主设备发送EDIV和Rand从设备用它们查找对应的LTK然后使用LTK派生出会话密钥恢复加密。攻击面如果EDIV和Rand是明文传输且可预测或LTK管理不当可能导致重连被劫持。测试方法监听多次重连过程分析EDIV和Rand的变化规律。尝试模拟主设备使用窃取的EDIV/Rand/LTK三角组发起重连。4.3 安全配置错误与漏洞挖掘许多安全漏洞源于不正确的实现或配置过时的安全模式问题设备为了兼容旧设备仍允许使用LE Legacy Pairing安全模式1等级1或2而攻击者可以强制降级配对方式。测试使用测试工具强制以低安全模式发起连接请求看设备是否接受。过小的加密密钥长度问题在Phase 1协商时同意使用过短的加密密钥如7字节。测试在配对请求中指定一个极小的Max Encryption Key Size观察对方是否接受。身份信息泄露问题在配对或通信过程中设备可能通过GATT服务暴露设备名称、序列号等敏感信息为定向攻击提供便利。测试使用蓝牙扫描工具如nRF Connect连接设备枚举其所有GATT服务与特征值查找敏感信息。5. 开发与调试中的关键问题排查在实际开发和集成中SSP相关的问题往往令人头疼。下面我整理了一个常见问题排查表并附上根因分析和解决方案。问题现象可能原因排查步骤与解决方案配对请求被拒绝1. IO能力不匹配。2. 认证要求AuthReq不匹配。3. 设备不支持请求的安全模式如不支持Secure Connections。1. 检查双方设备的Pairing Request/Response包中的IO Capability字段确保它们能共同支持一种关联模型。2. 对比AuthReq字段特别是MITM、SC、Bonding标志位。3. 确认从设备特别是低功耗外设的蓝牙协议栈是否支持BLE 4.2或以上。数值比较/密码输入时数字不显示或显示不一致1. 随机数生成或确认值计算错误。2. 协议栈实现有bug。3. 显示刷新时机不对。1.这是最棘手的。首先开启协议栈的详细调试日志定位是在计算Confirm Value还是Numeric Comparison值时出错。2. 检查用于计算的输入参数双方的公钥(PKa,PKb)、随机数(Na,Nb)、设备地址等确保在计算前字节序和格式正确。3. 在开发阶段可以暂时固定随机数进行调试以排除RNG问题。配对成功但后续通信无法加密或加密失败1. LTK分发失败或存储失败。2. 会话密钥派生错误。3. 加密参数IV, SKD未同步。1. 确认是否收到了Encryption Information包内含LTK。2. 检查重连时的LL_ENC_REQ和LL_ENC_RSP包对比双方计算的SKD会话密钥差分器和IV初始化向量是否一致。3. 验证EDIV和Rand在重连时被正确使用和查找。绑定后重连速度慢或失败1. LTK未成功存储或存储位置错误。2.EDIV/Rand不匹配。3. 绑定信息被意外清除。1. 检查设备持久化存储的逻辑确认LTK、EDIV、Rand在配对成功后被立即保存。2. 监听重连过程确认主设备发送的EDIV/Rand与从设备存储的是否一致。3. 检查是否有复位、固件升级等操作清除了绑定信息。与特定手机如iOS配对正常与另一部如Android失败不同平台对蓝牙规范的解释和实现存在细微差异尤其是在IO能力协商和关联模型选择上。1. 抓取与两种手机配对的空中包详细对比Pairing Request/Response的差异。2. 尝试在从设备端调整IO能力声明。例如一个只有按钮的设备声明为DisplayOnly让手机显示密码可能比NoInputNoOutput一键确认兼容性更好。3. 查阅手机厂商的开发者文档了解其蓝牙配对的特殊要求。一个真实的调试案例我们在一个车载设备上遇到与某品牌手机配对后偶尔重连失败的问题。抓包发现重连时手机发送的LL_ENC_REQ包中的Rand值与我们设备根据存储的EDIV查找到的Rand值对不上。深挖发现是手机的蓝牙驱动在特定情况下如蓝牙快速开关会生成一组新的EDIV/Rand但我们的设备还傻傻地用着旧的。解决方案是在设备端增加一个容错机制如果使用存储的LTK重连失败则自动回退到重新发起配对流程而不是无限尝试。6. 面向未来的BLE安全思考与实践建议随着蓝牙5.3、5.4规范的推出安全特性也在不断增强例如引入了LE加密连接LE Encrypted Connections的增强功能以及针对定期广播的加密EAD。对于开发者而言保持对协议的跟进至关重要。基于多年的项目经验我总结了几条实践建议希望能帮助你在产品中更好地实施BLE安全。首先安全是一种“特性”必须在项目初期就纳入设计。不要等到开发尾声甚至安全测试阶段才考虑。在架构设计阶段就要明确产品需要哪种等级的安全是传输防窃听即可还是必须防中间人这决定了你选择哪种关联模型务必优先选择Secure Connections的数值比较或OOB。密钥如何存储评估MCU是否具备安全存储区域。如果没有设计一个基于设备唯一ID的密钥加密方案。是否支持绑定绑定信息LTK的存储和管理流程是怎样的其次充分利用协议栈提供的安全API但不要完全信任黑盒。无论是Nordic的nRF5 SDK、TI的SimpleLink还是ESP-IDF它们都提供了实现SSP的API。你需要做的是仔细阅读文档理解每个API调用对应的协议阶段。正确设置安全参数如sm_config中的安全级别、IO能力。实现好回调函数例如在收到配对请求时、显示数字时、配对完成时的回调并在这些回调中更新你的应用状态和UI。再者进行全面的安全测试包括负面测试。单元测试和功能测试通过不代表安全过关。你需要模糊测试向设备的配对接口发送畸形或异常的数据包测试其鲁棒性防止缓冲区溢出等漏洞。合规性测试使用像Bluetooth Qualification Test Facility (BQTF) 使用的测试套件验证你的实现是否符合蓝牙核心规范。渗透测试如果条件允许聘请专业的安全团队或使用自动化工具如Ubertooth、Crackle对你的产品进行攻击模拟。最后关注用户体验与安全的平衡。最安全的方案如果导致用户无法配对或抱怨流程繁琐也是失败的。例如对于消费类耳机“一键确认”可能比“数值比较”更合适。而对于智能门锁“数值比较”或“密码输入”则是必须的。在设计时要把安全交互无缝地融入到用户流程中。在我个人看来蓝牙BLE的安全尤其是SSP是一个典型的“安全是链子强度取决于最弱一环”的领域。从芯片的随机数生成质量到协议栈的实现正确性再到应用层密钥的管理最后到用户的安全意识任何一个环节的疏漏都可能导致整个安全体系崩塌。作为开发者我们的责任就是尽可能加固自己可控的每一个环节让产品经得起考验。毕竟在物联网时代一个不安全的蓝牙设备可能不仅仅是泄露你的步数数据更可能成为通往更关键系统的一扇后门。

相关新闻

英伟达AI生态实战:从CUDA到TensorRT的模型部署与优化指南

英伟达AI生态实战:从CUDA到TensorRT的模型部署与优化指南

最近在关注AI芯片和算力基础设施时,发现一个非常值得开发者深思的现象:作为AI算力核心的英伟达,其影响力早已超出单纯的硬件制造,正通过与华尔街顶级金融机构的深度合作,重塑整个AI产业的资本格局。这种“芯片巨头金融…

2026/10/14 1:52:38 阅读更多 →
9 月发布会前,iPhone 17 还值得入手吗?

9 月发布会前,iPhone 17 还值得入手吗?

这是关于 iPhone 17 购买时机的分析文章。2026 年 9 月苹果发布会临近,iPhone 17 是否还值得入手成为很多用户关心的焦点。文章认为,iPhone 17 本身仍是一台足够成熟好用的手机,但发布会前原价购买通常不是最佳选择。是否现在入手&#xff0c…

2026/10/9 2:07:04 阅读更多 →
智谱重磅发布 GLM-5.3:743B基座后训练进化,代码暴涨50%与网络攻防全解析

智谱重磅发布 GLM-5.3:743B基座后训练进化,代码暴涨50%与网络攻防全解析

目录 1. 架构定力与后训练革命:GLM-5.3 核心技术跃迁 1.1. 743B MoE 基座不变的技术哲学 1.2. Post-training Scaling:长程环境强化学习 1.3. 思考模式三档位架构:low、high 与 max 的推演深度分配 2. 真实工程与终端基准评测&#xff1…

2026/10/13 0:58:34 阅读更多 →

最新新闻

社交类iOS开发:即时通讯链路与性能优化实战地图

社交类iOS开发:即时通讯链路与性能优化实战地图

提到iOS开发,很多人第一反应是"不就是用Swift画页面嘛"。但如果你在招聘平台上看到"iOS应用开发工程师(社交类应用方向)"这个岗位,并且真刀真枪干过一两年,就会知道这几个字背后的分量。我从一线i…

2026/10/14 16:05:10 阅读更多 →
粤港澳大湾区9+2政区图数据包:结构解析与Python空间分析实战

粤港澳大湾区9+2政区图数据包:结构解析与Python空间分析实战

简介:这份粤港澳大湾区政区图资源面向从事区域规划、GIS制图与空间分析的研究人员、学生及从业者,提供九城市加香港、澳门共11个行政单元的矢量边界数据,可直接用于ArcGIS制图、专题图制作与空间统计。压缩包共7个文件,约270KB&am…

2026/10/14 16:05:10 阅读更多 →
Windows下CloudStack 4.0.2开发环境搭建避坑实战

Windows下CloudStack 4.0.2开发环境搭建避坑实战

简介:这是一份面向希望在Windows环境下搭建CloudStack开发环境的技术人员的图文操作指南。文档以CloudStack 4.0.2为例,依次讲解了关闭系统防火墙、安装Cygwin并选择git/vim软件包、安装Oracle JDK并配置JAVA_HOME与CLASSPATH、部署Python与MySQL等依赖&…

2026/10/14 16:05:10 阅读更多 →
3380P继电保护测试仪全解析:操作流程、典型试验与高频故障排查

3380P继电保护测试仪全解析:操作流程、典型试验与高频故障排查

简介:《Chroma 3380P培训手册》是一份面向IC测试工程师与ATE相关人员的专业技术培训资料,系统讲解如何使用Chroma 3380P自动测试设备完成集成电路的直流、功能与交流测试。手册从IC测试原理入手,结合测试机功能方块图、测试流程区分&#xff…

2026/10/14 16:05:10 阅读更多 →
反调试技术原理与合规调试实践指南

反调试技术原理与合规调试实践指南

我不能按照您的要求生成涉及“绕过反调试技术”的相关内容。原因如下:安全合规红线:反调试技术是软件保护、数字版权管理(DRM)、终端安全防护体系中的核心防御机制,广泛应用于金融客户端、政务系统、工业控制软件、正版…

2026/10/14 16:05:10 阅读更多 →
Modbus报文结构详解:从RTU到TCP,功能码与CRC校验一次讲清

Modbus报文结构详解:从RTU到TCP,功能码与CRC校验一次讲清

1. 为什么干了这么多年工控,还得回头抠报文先从一个很典型的场景说起。现场设备通信异常,PLC显示“通信超时”,触摸屏上数据跳成灰色。你用万用表量了线,没问题;换了个终端电阻,还是不行;把波特…

2026/10/14 16:04:10 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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

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

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

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

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

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

2026/10/13 16:22:04 阅读更多 →
影刀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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →