深入解析TLS 1.2密钥计算:从握手到会话密钥的完整过程
1. 项目概述为什么我们需要深入理解TLS 1.2的密钥计算如果你是一名后端开发、安全工程师或者任何需要处理网络通信的程序员那么“TLS”这个词对你来说一定不陌生。我们每天都在用它——访问HTTPS网站、调用API、进行安全的微服务间通信。TLS传输层安全协议就像互联网世界的“保密邮差”确保数据在传输过程中不被窃听和篡改。而TLS 1.2尽管已有更新的1.3版本但因其广泛的支持度和成熟度至今仍是许多关键系统的基石。然而大多数人对TLS的理解可能停留在“配置证书”、“启用HTTPS”的层面。当遇到一些棘手的连接问题比如“握手失败”、“密钥协商错误”时如果对底层机制一知半解排查起来就会像在黑暗中摸索。TLS 1.2的密钥计算正是这个“保密邮差”最核心的“保险箱密码生成”过程。它不是一个单一的步骤而是一系列密码学原语的精密协作从最初的“打招呼”到最终生成用于加密数据的会话密钥。理解这个过程远不止是满足技术好奇心。它能让你精准定位问题当TLS握手失败时你能快速判断是密钥交换算法不匹配、证书问题还是密钥计算本身出了差错。进行安全审计评估现有系统的TLS配置是否足够安全理解为什么某些密码套件Cipher Suite被标记为“弱”或“不安全”。深度性能调优明白密钥计算中哪些环节如非对称解密、密钥派生是CPU消耗大户从而做出更有针对性的优化。构建更安全的系统在设计需要自定义安全通道或进行国密改造时对标准流程的透彻理解是创新的前提。简单说把TLS 1.2的密钥计算搞明白你就掌握了现代安全通信的“任督二脉”。接下来我们就抛开那些笼统的概念深入到字节和算法的层面把这个过程彻底拆解清楚。2. TLS 1.2握手流程与密钥计算全景图在深入计算细节之前我们必须先看清整个“战场”的全貌。TLS 1.2的握手是一个典型的客户端-服务器交互过程其核心目标就是在双方之间安全地协商出一套只有它们俩知道的“会话密钥”。这套密钥将用于后续所有应用数据的对称加密保证高效和安全。2.1 握手阶段的核心步骤一个完整的TLS 1.2握手以最常用的基于RSA的密钥交换为例大致分为以下几个阶段ClientHello客户端发起连接向服务器发送一个随机数Client Random、支持的TLS版本、支持的密码套件列表等信息。这个Client Random是后续密钥计算的第一个原材料。ServerHello服务器从客户端提供的列表中选择一个双方都支持的TLS版本和密码套件并生成自己的随机数Server Random发送给客户端。Server Random是第二个关键原材料。至此双方在密码套件上达成一致这决定了后续将使用哪些算法。Certificate服务器将自己的数字证书发送给客户端以证明自己的身份。证书中包含了服务器的公钥。ServerKeyExchange可选对于某些密钥交换算法如DHE, ECDHE服务器需要发送额外的参数。对于RSA密钥交换此步骤通常省略。ServerHelloDone服务器告知客户端它的初始消息发送完毕。ClientKeyExchange这是密钥交换的核心动作。客户端生成一个48字节的随机秘密称为“预主密钥”Pre-Master Secret。然后它用从服务器证书中获取的公钥对这个预主密钥进行加密将加密后的结果发送给服务器。预主密钥是生成最终会话密钥的“种子”。ChangeCipherSpec客户端和服务器先后发送此消息通知对方“接下来的通信我们将使用刚刚协商好的加密参数和密钥了。”Finished双方使用刚刚计算出的会话密钥发送一条加密的验证消息以确认整个握手过程没有被篡改。这是握手的最后一道安全关卡。握手成功后双方就进入了安全的应用数据传输阶段。2.2 密码套件的关键角色密码套件Cipher Suite是一个形如TLS_RSA_WITH_AES_256_GCM_SHA384的字符串它定义了握手和通信中使用的一套算法组合。拆解开来TLS协议。RSA密钥交换算法。决定了预主密钥如何安全传递这里是用RSA公钥加密。AES_256_GCM批量加密算法和操作模式。决定了后续应用数据用什么对称算法加密这里是256位密钥的AESGCM模式。SHA384消息认证码MAC算法和伪随机函数PRF。在TLS 1.2中SHA系列哈希函数被用作PRF的核心来从预主密钥派生出各种密钥。密码套件的选择直接决定了后续密钥计算将调用哪些具体的算法。理解你系统使用的套件是分析密钥计算的第一步。注意现代安全实践中基于RSA的静态密钥交换即上述流程已逐渐被基于迪菲-赫尔曼DHE或椭圆曲线迪菲-赫尔曼ECDHE的前向安全密钥交换所取代。因为后者即使服务器私钥未来泄露过去的通信记录也无法被解密。下文原理部分会涵盖这两种情况。3. 密钥计算的核心原理从随机数到会话密钥现在让我们聚焦最核心的部分如何将那两个随机数Client Random, Server Random和一个预主密钥变成一堆用于加密、解密的实际密钥。这个过程就是密钥派生。3.1 核心原材料三个秘密的源头密钥派生需要三个输入它们共同确保了密钥的唯一性和随机性预主密钥Pre-Master Secret这是整个密钥体系的“源种子”。RSA密钥交换由客户端生成的一个48字节的随机数。其前两个字节是TLS版本号如0x0303代表TLS 1.2后46字节是纯随机数。(EC)DHE密钥交换客户端和服务器通过交换迪菲-赫尔曼参数各自在本地计算出一个相同的“迪菲-赫尔曼共享秘密”DH Shared Secret。这个共享秘密就直接作为预主密钥长度取决于DH组参数。客户端随机数Client Random32字节由客户端在ClientHello中生成并发送。服务器随机数Server Random32字节由服务器在ServerHello中生成并发送。为什么需要两个随机数这增加了密钥的熵随机性并确保了即使预主密钥因某种原因重复由于随机数不同最终生成的会话密钥也会完全不同这被称为“密钥分离”。同时它们也参与了Finished消息的验证防止握手过程被重放攻击。3.2 主密钥的诞生PRF函数的魔法预主密钥、Client Random和Server Random并不能直接用来加密。它们首先被用于生成一个更安全、更通用的主密钥Master Secret。TLS 1.2使用一个基于哈希函数的伪随机函数PRF来完成这个任务。对于TLS 1.2PRF实际上是P_hash函数的扩展。P_hash使用一个秘密种子和一个标签通过HMACKeyed-Hash Message Authentication Code迭代生成任意长度的输出。主密钥的计算公式如下master_secret PRF(pre_master_secret, master secret, ClientHello.random ServerHello.random)[0..47]这个公式的意思是以pre_master_secret为种子以字符串master secret和连接起来的两个随机数为输入标签通过PRF函数生成一个字节流并取前48个字节[0..47]这48个字节就是主密钥。这里的关键在于PRF的内部迭代过程它确保了输出的每一个字节都与输入的所有部分强相关任何微小的输入改变都会导致输出完全不同这符合密码学上对伪随机性的高要求。3.3 会话密钥的派发从主密钥到具体密钥得到48字节的主密钥后工作还没完。一次TLS会话需要多把钥匙客户端到服务器方向的数据加密密钥。服务器到客户端方向的数据加密密钥。客户端到服务器方向的MAC密钥如果使用的加密模式需要如CBC模式。服务器到客户端方向的MAC密钥。可能还需要初始化向量IV等。这些密钥都是从同一个主密钥安全地“分支”出来的同样使用PRF函数key_block PRF(master_secret, key expansion, ServerHello.random ClientHello.random)注意这里标签变成了key expansion并且随机数的连接顺序与之前相反Server Random在前。然后从这个key_block字节流中按顺序截取特定长度的字节分配给不同的用途。截取的长度完全取决于之前协商的密码套件。例如对于套件TLS_RSA_WITH_AES_256_CBC_SHAAES-256需要32字节的客户端写密钥和32字节的服务器写密钥。SHA-1 HMAC需要20字节的客户端写MAC密钥和20字节的服务器写MAC密钥。AES-CBC模式还需要初始化向量IV对于AES块16字节通常需要16字节的客户端写IV和16字节的服务器写IV。那么key_block的总长度就是(3232) (2020) (1616) 136字节。PRF会生成至少136字节的流然后按客户端写MAC密钥[20] | 服务器写MAC密钥[20] | 客户端写加密密钥[32] | 服务器写加密密钥[32] | 客户端写IV[16] | 服务器写IV[16]的顺序进行分配。实操心得很多TLS库如OpenSSL会帮你处理好所有这些派生和分割的细节。但当你需要调试一个自定义实现或者分析网络抓包数据时理解这个分割顺序至关重要。一个常见的错误就是双方对key_block的分割方式不一致导致一端加密另一端无法解密。3.4 前向安全密钥交换ECDHE的计算差异对于更现代的ECDHE密钥交换核心差异在预主密钥的生成环节在ServerKeyExchange消息中服务器会发送其椭圆曲线迪菲-赫尔曼参数包括曲线名称、服务器临时公钥等并用证书对应的私钥对这部分参数进行签名。客户端在ClientKeyExchange消息中发送自己的临时公钥。客户端和服务器各自使用对方的临时公钥和自己的临时私钥通过椭圆曲线标量乘法独立计算出同一个共享秘密Shared Secret。这个共享秘密就是预主密钥。之后的流程就完全一样了用这个共享秘密作为pre_master_secret与两个随机数一起通过PRF派生出主密钥和最终的会话密钥。ECDHE的核心优势前向安全在于即使有人录下了所有的网络流量并且未来某天窃取了服务器的长期私钥证书私钥他也无法计算出当时的共享秘密。因为共享秘密依赖于每次握手临时生成的、用后即弃的临时密钥对而临时私钥并未在网络中传输。这是与静态RSA密钥交换的本质区别。4. 实操解析动手计算与验证理解了原理我们最好能动手验证一下。虽然生产环境中我们依赖成熟的库但通过工具进行手动计算能极大地加深理解。这里我们使用openssl命令行工具来窥探这个过程。4.1 环境准备与抓包首先我们需要一次TLS握手的数据。最直接的方法是使用openssl s_client连接一个服务器并同时用tcpdump或 Wireshark 抓包。但为了更精确地控制输入我们可以模拟一个更简单的场景使用openssl命令生成关键材料并手动计算。假设我们使用TLS_RSA_WITH_AES_256_CBC_SHA256套件注意SHA256作为PRF。步骤1生成RSA密钥对和证书模拟服务器# 生成服务器私钥 openssl genrsa -out server.key 2048 # 生成自签名证书 openssl req -new -x509 -key server.key -out server.crt -days 365 -subj /CNtest.local步骤2模拟生成握手随机数在真实握手中这是由客户端和服务器随机生成的。我们可以用openssl rand来模拟。# 生成32字节的Client Random (CR) 和 Server Random (SR) openssl rand -hex 32 client_random.hex openssl rand -hex 32 server_random.hex # 生成46字节的预主密钥随机部分加上2字节版本号03 03才是完整的48字节 openssl rand -hex 46 pm_secret_part.hex假设client_random.hex内容是c123...,server_random.hex是s456...,pm_secret_part.hex是p789...。那么完整的预主密钥PMS就是0x0303p789...共48字节。4.2 使用OpenSSL命令行进行密钥计算OpenSSL的openssl pkeyutl或openssl rsautl可以模拟RSA加密解密但其openssl enc和HMAC命令更适合我们演示派生过程。实际上OpenSSL提供了一个更底层的测试命令openssl s_client -keylogfile来输出密钥材料但这里我们聚焦于理解。我们可以写一个小脚本来模拟PRF的P_SHA256计算因为套件指定SHA256为PRF。但更直观的方法是利用OpenSSL的TLS内部调试功能让它告诉我们计算过程。启动一个测试服务器并连接启用密钥日志# 在一个终端启动一个简易的OpenSSL TLS服务器 openssl s_server -key server.key -cert server.crt -accept 44330 -nocert -no_tls1_3 -cipher AES256-SHA256 # 在另一个终端用客户端连接并指定密钥日志文件 openssl s_client -connect localhost:44330 -keylogfile keylog.txt -tls1_2 -cipher AES256-SHA256在客户端终端按几次回车后中断连接。此时keylog.txt文件中会包含NSS格式的密钥日志其中就有CLIENT_RANDOM一行后面跟着Client Random的十六进制和主密钥Master Secret的十六进制。这就是我们想要的核心数据你可以看到由OpenSSL库实际计算出的、对应于此次连接的主密钥。4.3 手动验证派生过程概念性有了Client RandomCR、Server RandomSR和主密钥MS的实际值我们可以尝试反向验证。但PRF计算较复杂我们可以借助一些密码学库或在线研究工具进行概念性验证。例如使用Python的hmac和hashlib库我们可以实现一个简化版的P_SHA256来计算主密钥并与keylog.txt中的值对比。这需要你精确地知道预主密钥而在RSA交换中预主密钥是客户端生成并用服务器公钥加密的我们无法从抓包中直接获得除非拥有服务器私钥解密。因此这个验证通常用于内部测试或教育目的以确认你对算法流程的理解是否正确。一个更可行的实操是验证Finished消息。Finished消息是握手结束前的验证它的值是通过PRF计算出来的输入是主密钥、一个标签client finished或server finished以及到目前为止所有握手消息的哈希值。你可以用Wireshark抓取完整的TLS握手包导出所有握手消息然后编写代码计算Finished值并与抓包中的Finished消息内容进行比较。如果一致就证明你的密钥派生和PRF计算理解是正确的。注意事项手动进行密码学计算极易出错一个字节的顺序错误、编码错误Hex vs Binary都会导致结果完全不同。务必使用可靠的库如Python的cryptography作为参考实现并仔细处理数据的格式。生产环境中绝对不要自己实现TLS的密码学核心务必使用经过严格审计的库如OpenSSL, BoringSSL, LibreSSL或平台内置的TLS库。5. 常见问题、调试技巧与安全考量理解了密钥计算的全过程当TLS连接出现问题时你的排查思路就会清晰很多。以下是一些常见场景和技巧。5.1 典型连接失败与密钥计算相关的根因“Handshake Failure” 或 “No shared cipher”问题客户端和服务器没有找到共同的密码套件。与密钥计算的关系密码套件决定了密钥交换算法RSA, DHE, ECDHE和PRF哈希函数SHA256, SHA384。如果不匹配双方根本无法进入密钥计算流程。排查检查服务器和客户端配置的密码套件列表。使用openssl s_client -cipher或nmap --script ssl-enum-ciphers来探测服务器支持的套件。“Decrypt Error” 或 “Bad Record MAC”问题握手完成后在发送或接收第一条应用数据或Finished消息时失败。与密钥计算的关系这极有可能是双方计算出的会话密钥不一致导致的。一端用密钥A加密另一端用密钥B解密必然失败。根因分析随机数不一致Client Random或Server Random在传输过程中因某种原因如代理服务器修改被改动导致双方PRF计算的输入不同。预主密钥不一致(EC)DHE交换中双方计算出的共享秘密不同。可能原因是椭圆曲线参数不匹配、计算错误或遭到了中间人攻击虽然证书验证应能阻止。密钥块分割不一致双方虽然生成了相同的key_block字节流但按照密码套件要求分割密钥、MAC密钥、IV时顺序或长度理解不一致。这在非标准或自定义实现中可能出现。调试启用TLS库的详细调试日志如OpenSSL的-debug选项。对于自定义实现对比双方在握手每个阶段生成的随机数、主密钥的中间值。“Illegal Parameter” 或 “Invalid Signature”问题在ServerKeyExchange或CertificateVerify消息验证失败。与密钥计算的关系这发生在密钥交换阶段。对于ECDHE服务器会对其临时公钥参数签名。客户端用服务器证书中的公钥验证此签名。失败意味着要么服务器私钥不对要么消息被篡改。这阻止了客户端进行正确的共享秘密计算。5.2 密钥计算相关的安全配置建议弃用静态RSA密钥交换如前所述使用ECDHE或DHE以实现前向安全。在服务器配置中如Nginx的ssl_ciphers指令将包含RSA密钥交换但不包含DHE或ECDHE的套件优先级调低或移除。使用强随机数生成器Client Random和Server Random的质量直接影响主密钥的安全。确保你的系统使用密码学安全的随机数生成器CSPRNG。对于Linux服务器确保/dev/urandom有足够的熵对于虚拟机或容器这可能是个隐患。选择合适的椭圆曲线使用ECDHE时优先使用安全性和性能俱佳的曲线如prime256v1 (P-256)、secp384r1 (P-384)。避免使用已知不安全的曲线如 secp112r1。确保PRF使用强哈希函数在TLS 1.2中这由密码套件决定。优先使用以SHA256或SHA384结尾的套件避免使用SHA1或更弱的MD5。密钥生命周期管理TLS会话恢复Session Resumption和会话票证Session Tickets会复用主密钥。虽然提高了性能但也延长了密钥的有效期。根据业务的安全要求合理配置会话超时时间。5.3 性能考量与优化点密钥计算是TLS握手中最消耗CPU的环节之一RSA解密在RSA密钥交换中服务器需要用其私钥解密客户端发来的加密预主密钥。这是一个昂贵的操作。使用更快的RSA密钥如2048位 vs 4096位或硬件加速卡可以缓解。ECDHE计算椭圆曲线标量乘法的计算开销远小于同等安全强度的RSA解密这是ECDHE性能优势之一。密钥派生PRF的HMAC运算相对较轻但在高并发连接建立时其开销也不容忽视。优化建议启用会话恢复允许客户端在短时间内重用之前协商的主密钥跳过最耗时的密钥交换和计算大幅减少握手延迟和CPU消耗。使用TLS 1.3如果环境允许升级到TLS 1.3。它简化了握手流程通常只需1-RTT甚至0-RTT并且密钥计算流程更简洁高效。监控与扩容监控服务器的TLS握手性能指标。如果握手成为瓶颈考虑使用支持硬件TLS加速的负载均衡器或者横向扩展服务器节点。理解TLS 1.2的密钥计算就像掌握了安全通信引擎的图纸。它不仅能让你在问题出现时快速定位故障点更能指导你构建出更安全、更高效的网络应用。从看似神秘的随机数交换到最终保障每一字节数据安全的会话密钥每一步都凝聚着密码学设计的智慧。下次当你配置ssl_ciphers或者看到Wireshark里复杂的TLS握手包时希望你能清晰地看到背后那场精妙的密钥生成之舞。

相关新闻

雷池WAF部署与防护策略实战:从Docker安装到生产环境运维

雷池WAF部署与防护策略实战:从Docker安装到生产环境运维

1. 项目概述:为什么选择雷池WAF 如果你负责过线上业务的安全运维,大概率对“被爬”、“被刷”、“被注入”这些词不会陌生。半夜被告警电话叫醒,紧急处理一个SQL注入攻击或者CC攻击,是很多运维和开发同学的“家常便饭”。传统的应…

2026/9/24 8:51:28 阅读更多 →
解决欧路词典FuncServer_WDC_x86.exe报错问题

解决欧路词典FuncServer_WDC_x86.exe报错问题

1. 问题现象与初步排查最近在Windows系统上遇到一个奇怪的报错:"FuncServer_WDC_x86.exe 应用程序错误"。这个错误弹窗通常会显示类似"应用程序无法正常启动(0xc000007b)"的错误代码,有时还会伴随系统卡顿或词典软件无法正常使用的情…

2026/10/13 17:25:43 阅读更多 →
硬件RAID卡原理与实战:从核心概念到服务器配置调优

硬件RAID卡原理与实战:从核心概念到服务器配置调优

1. 项目概述:从一块硬盘到一池“坚石” 如果你自己攒过机,或者管理过公司的服务器,肯定对“磁盘”这个概念不陌生。一块硬盘,就是一个独立的存储单元,数据读写、系统运行都依赖它。但单块硬盘的脆弱性,就像…

2026/9/29 14:14:47 阅读更多 →

最新新闻

K12 少儿编程资料(第六篇):Scratch 教案课件全套,零基础家长和老师都能直接用w

K12 少儿编程资料(第六篇):Scratch 教案课件全套,零基础家长和老师都能直接用w

机器人编程课程:孩子从搭积木到"让程序控制现实世界"的启蒙资料(转存自取)⚡ 资料直达(建议先转存到自己网盘,再慢慢下载) 本文是「K12 少儿编程资料」系列的第 5 篇,聚焦 机器人编程…

2026/10/15 5:27:16 阅读更多 →
Java接口default方法:原理、应用与最佳实践

Java接口default方法:原理、应用与最佳实践

1. 接口default修饰符的本质与价值在Java 8之前,接口就像一份严格的契约——它只能定义抽象方法,所有实现类必须完整实现这些方法。这种设计虽然保证了契约的严谨性,但也带来了扩展性的问题。想象一下,当一个接口被上百个类实现后…

2026/10/15 5:27:16 阅读更多 →
用蛋白质“织”出来的生物材料,正在改变医学 | Info X Med 深度文献解读

用蛋白质“织”出来的生物材料,正在改变医学 | Info X Med 深度文献解读

文献来源:Info X Med 期刊《Nature Reviews Materials(Perspective)》DOI:10.1038/s41578-025-00861-8结论先行: 从最早的丝、胶原、弹性蛋白,到如今用 AI“从头设计”的全新蛋白质,蛋白质基生物…

2026/10/15 5:27:16 阅读更多 →
生产汇报单查询同步实战:从金蝶云星空拉取到轻易云数据集成平台的工程化做法

生产汇报单查询同步实战:从金蝶云星空拉取到轻易云数据集成平台的工程化做法

这个策略解决什么问题某离散制造企业的 MES 在 MySQL 里,ERP 用的是金蝶云星空,生产汇报单由车间在 MES 里录入,需要在 ERP 端沉淀成可查询、可核算的正式单据。我们用轻易云数据集成平台(Qeasy)承接了"GH生产汇报单查询"这条策略,本质上是把金蝶云星空里已经存在的生…

2026/10/15 5:27:16 阅读更多 →
Java接口核心概念与应用场景详解

Java接口核心概念与应用场景详解

1. Java接口核心概念解析接口(Interface)是Java语言中实现抽象的核心机制之一。与抽象类不同,接口是完全抽象的契约定义,它规定了实现类必须遵守的行为规范。理解接口的关键在于把握其"定义规范与实现分离"的设计哲学。…

2026/10/15 5:27:16 阅读更多 →
嵌入式验证性实验:从跑通代码到写出真正的实验体会

嵌入式验证性实验:从跑通代码到写出真正的实验体会

简介:苏州大学金葫芦平台下的《嵌入式系统》六个验证性实验,以一份Word实验报告完整呈现:实验一熟悉AHL-GEC-IDE环境、GPIO构件调用及输入输出控制,实验二串行接收中断、多字节组帧与C#串口调试,实验三PWM信号生成及占…

2026/10/15 5:26:11 阅读更多 →

日新闻

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 阅读更多 →