SQL注入与WAF防护:从原理到纵深防御的实践指南
第一次在日志里看到整页整页的 WAF 告警刷屏是帮客户做安全加固的时候。业务倒是没瘫痪数据库的慢查询日志里却多出了很多条明显不属于正常业务的 SQL 语句。顺着告警往前翻攻击者对着一个搜索接口试了上百种不同的输入参数。WAF 当时是开着的也确实拦掉了绝大多数请求但最终仍有一条穿透了防线落到了数据库层。从那次之后我越发确定一件事SQL注入绝不是挂个 WAF 就万事大吉的问题而是一个从代码到部署、从规则到监控的体系性课题。这篇文章我打算从防御者的视角把 SQL注入 与 WAF 防护这套东西完整拆一遍。既讲漏洞为什么存在也讲 WAF 在拦什么、为什么拦不住全部再讲真正能落地解决问题的代码修复、规则调优和纵深防御方案。适合正在做业务安全整改的开发同学也适合刚接触 Web 安全、想系统理解 WAF 能力边界的朋友。1. SQL注入是怎么发生的理解漏洞源头1.1 动态拼接SQL语句是万恶之源先抛一个最基础但值得反复强调的结论SQL注入漏洞的根源是把用户的输入直接拼进了 SQL 语句。不是数据库的问题不是框架的问题是拼接这个动作出了问题。举个最常见的反面例子一段简单的登录查询# 错误示范直接拼接用户输入 username request.form.get(username) password request.form.get(password) sql SELECT * FROM users WHERE username username AND password password cursor.execute(sql)如果用户在 username 里提交admin --实际执行的语句就变成了SELECT * FROM users WHERE username admin -- AND password --是很多数据库的注释符后面的条件直接被注释掉了相当于只校验了用户名密码形同虚设。这种最原始的注入方式在今天听起来好像很初级但现实中仍然能见到。原因也很简单很多内部系统、老项目、外包代码SQL 还是这么写出来的。我见过不少团队架构上已经很现代化了但总有几个历史遗留的报表查询接口、数据导出功能沿用着早期手拼 SQL的风格。这些地方恰恰是攻击者最喜欢翻的角落。1.2 常见注入类型与攻击目标的底层逻辑SQL注入不是一个单一的攻击手段而是一族攻击方式的统称。按攻击者的目的和反馈方式可以分成几类注入类型攻击者关注点典型特征联合查询注入直接获取数据内容URL 参数中出现 order by、union select 等关键字布尔盲注通过页面正常/异常判断条件真假参数中出现 and 11 / and 12 之类的判断时间盲注通过响应延迟判断条件真假参数中带有 sleep、waitfor delay 等函数报错注入利用数据库报错信息带出数据参数构造后触发数据库函数报错堆叠注入执行多条独立语句参数中出现分号及后续语句这里需要理解一个核心逻辑攻击者做的所有事情本质上都是在探测——探测后台数据库的类型、探测 SQL 语句的结构、探测哪些参数能进到 SQL 语句里。联合查询是为了直接捞出数据盲注是为了在页面没有数据回显的情况下一比特一比特地猜出数据。理解了这一点看 WAF 的告警日志时就会更清楚那些看似杂乱无章的请求背后其实是有一整套逻辑的。1.3 为什么代码层不修复WAF 就永远在打补丁我刚才提到的那次应急响应里客户最开始的想法就是把 WAF 规则好好调一调让攻击者打不进来。这个想法本身没错但我在看了那几段残留的 SQL 语句后发现问题其实出在一个老旧的 CSV 导出功能上——用户传入的排序字段名被直接拼到了 ORDER BY 子句里。这类问题WAF 很难从根本上拦截。理由很简单WAF 只能看到 HTTP 请求而 ORDER BY 后面的参数正常情况下也是合法请求的一部分。直接封掉所有带order by的请求会把正常业务也误伤。只要代码里还存在这种拼接点攻击者换一种编码方式、换一种变换写法WAF 规则就可能再次失守。所以我的结论一直很明确WAF 是防线的重要组成部分但绝不是 SQL注入 的解决方案本身。解决方案一定在代码层。2. WAF到底在拦什么检测机制与盲区2.1 WAF的部署形态与各自的拦截粒度WAF 现在形态很多常见的有云 WAF、硬件 WAF、软件 WAF、以及运行在 Web 应用内部的 RASP运行时应用自保护。它们拦截的位置不同效果差异很大。云 WAF通过 DNS 接入或反向代理接入请求先到云端过滤再转发到源站。部署简单但对 HTTPS 证书处理、源站 IP 隐藏、业务延迟都有一些影响。硬件 WAF串在链路上的独立设备适合大型企业性能强但成本高规则更新依赖厂商。软件 WAF比如基于 Nginx 的筛选模块、开源 WAF 方案可以自定义规则灵活度最高但需要团队自己维护规则库。RASP嵌入到应用运行时的防护能直接看到应用内部执行 SQL 的上下文对注入的识别最准确但接入改造成本也高。它们的拦截粒度也不一样。云 WAF 和硬件 WAF 以 HTTP 请求特征为主RASP 能看到实际执行 SQL 时的语句结构。所以从防注入的角度来讲RASP 的能力天花板最高但部署成本也最高。2.2 WAF的检测方式正则匹配、语义分析与行为分析主流 WAF 一般会组合使用几类检测技术理解它们的原理对合理设置规则帮助很大。第一类是基于签名库的正则匹配。把已知攻击的特征写成正则表达式在请求参数中做匹配。这种方式实现直接、误报可控但缺陷在于只能拦截已知的攻击模式面对变种容易失效。很多老牌 WAF 初期主要都靠这个。第二类是语义分析。把请求参数当代码去解析判断其结构上是否可能有注入倾向。这种方式能覆盖部分未知变种但计算开销大而且如果解析器与后端 Web 框架的解析方式不一致会出现判断偏差。第三类是行为分析。通过一段时间内请求的频次、分布、异常度来识别攻击比如同一个 IP 短时间内对同一个接口发起大量带特殊字符的请求。行为分析主要用来发现探测行为灵活性高但需要足够大的基线数据而且实时拦截的精度稍差。实际部署中这三类往往叠加使用。理解这些机制对防御者最大的价值在于当出现漏报时可以快速判断出是规则库没覆盖、语义解析出了偏差、还是行为维度没拉到足够的样本。2.3 WAF的固有盲区解析差异与规则盲区WAF 与后端应用对同一请求的理解方式存在差异这是 WAF 存在盲区的根本原因。典型场景是WAF 认为某个参数的值是 A但后端框架经过 URL 解码、参数合并、编码转换后得到的值是 B。当 A 是安全的、而 B 实际会被执行时绕过就发生了。举个例子WAF 解析完请求后看到参数 id123觉得没风险直接放行但后端应用在另一步解析中把隐藏在某个复杂编码里的注入语句还原了出来送进了 SQL 执行。这种解析差异不是 WAF 厂商故意留后门而是 HTTP 协议本身的复杂性和后端框架多样化的解析逻辑造成的。对防御者来说认识到这个盲区并不意味着要去研究怎么绕过而是要明白一件事就算 WAF 规则看起来再完善也不能假设它万无一失。正确的姿态是把 WAF 当作纵深防御中的一层而不是全部。3. 为什么WAF会被绕过从防御视角看清攻击者的底层思路3.1 绕过不是魔法而是规则盲区的必然结果很多刚接触安全的朋友看到绕过这个词会觉得很高深好像攻击者手里掌握着什么神秘技巧。实际上一次成功的绕过绝大多数时候只是触碰了规则库没有覆盖到的地方。WAF 的规则是人工维护的而用户输入的可能性是无限的。规则库面对无限输入必然存在覆盖不到的组合。攻击者围绕这些组合做变种测试本质上做的是枚举和排列组合。规则库越大枚举空间越大攻击者要做更多尝试但如果代码层漏洞不修复这个枚举游戏永远是攻击者犯错一次才会输防御者漏掉一次就输的局面。我参与过几次攻防演练双方真正拼的不是谁的工具更炫而是谁更快摸清对方的过滤规则。攻击者发送大量探测请求通过响应差异判断哪些字符被过滤、哪些关键字被拦截然后针对性构造下一个请求。整个过程像一个猜盲盒的过程但这些探测行为在 WAF 日志里会留下明显的痕迹。3.2 攻击者典型的试探方向防御者须知这部分我站在防御角度来说明目的是让你在日志里能认出攻击者的行为模式并且知道自己需要在哪些方面加固。对关键字做变形比如把大小写混用、在关键字中间插入注释符、用等价函数替换。这类手段主要针对只做简单关键字匹配的规则。利用解析差异比如提交同名参数、使用不同的编码方式利用后端框架的参数解析规则让 WAF 和应用的输入理解不一致。拆分请求内容把攻击载荷分散到多个请求或多个参数中让单条请求看起来无害再通过后端逻辑拼接还原成恶意语句。用时间盲注这类低特征方式不直接在请求里带明显的危险关键字而是通过延迟时间判断条件真假整体流量特征非常温和很难依赖正则规则发现。看到这里希望你的第一反应不是学到了而是我该怎么防住这些。这也是我写下这部分内容的初衷——加深对攻击模型的理解最终服务于防御而不是去实践攻击。3.3 误报与漏报的平衡是规则治理的永恒主题一个很现实的问题是WAF 规则调严了误报就会上来调松了漏报就增加。误报意味着正常用户被拦截业务受损漏报意味着攻击者有机会穿透安全受损。我见过有团队为了追求零漏报把 WAF 规则调到连参数里的select中文拼音都拦截结果正常业务大量失败最后被迫回滚。也见过为了追求零误报把规则放得很宽结果 WAF 形同虚设。这两条路都不可取。正确的做法是分层设置规则拦截级别最高、误报影响面小的规则可以开全局影响面大的语义规则先针对具体接口精细化配置对拿不准的规则一开始可以先放到告警模式观察一段时间后再决定是否切换为拦截模式。这是规则治理的基本功。4. 真正解决问题从代码层根除 SQL注入4.1 参数化查询最正的解修复 SQL注入 最标准、最可靠的方法是使用参数化查询也叫预编译语句。以 Python 的 sqlite3 为例# 正确示范参数化查询 cursor.execute( SELECT * FROM users WHERE username ? AND password ?, (username, password) )改成这种写法后用户输入会被当作数据传给数据库而不是被拼接进SQL 语句中。数据库在执行时先编译好 SQL 模板再填入参数值。无论参数里写了什么都不会改变 SQL 语句的结构注入自然就不成立了。参数化查询能解决绝大部分注入场景但有一个例外需要特别注意如果注入点位于表名、列名、ORDER BY 子句等不能参数化的位置参数化查询就帮不上忙。这时候必须依靠白名单校验。我遇到过一次真实场景某统计报表接口里用户传一个 sort 参数控制按哪个字段排序字段拼进了 ORDER BY。参数化无法覆盖这种场景最终修复方式是把允许排序的字段名写死在一个白名单数组里其他任何输入一律按默认字段处理。4.2 使用 ORM 和封装的正确姿势现代开发中使用 ORM对象关系映射框架比如 Java 的 MyBatis-Plus、Python 的 SQLAlchemy、Go 的 GORM可以在绝大多数场景下自动规避拼接问题。但这不代表用了 ORM 就绝对安全。我提醒过不少朋友注意检查 ORM 中是否有提供原生 SQL 执行的接口。比如 MyBatis 的${}和#{}的区别前者是字符串拼接后者是预编译占位符。很多注入漏洞恰恰出现在开发者图方便、在 mapper 里用了${}拼接动态表名或排序字段的场景。另外ORM 的复杂查询如果落到自定义原生 SQL务必遵循同样的参数化原则。框架只是工具安全意识才是决定性的。4.3 输入验证白名单思维比关键字过滤靠谱在代码层面做输入验证我的建议是白名单优先、黑名单辅助。白名单的意思是明确允许输入什么不符合的就直接拒绝。黑名单的意思是拦截已知的危险输入问题是黑名单永远列不全。以一个查询接口的参数为例# 白名单校验只允许数字和有限字符范围 import re if not re.fullmatch(r[a-zA-Z0-9_]{1,32}, param): return error(Invalid parameter)这种写法的好处是不管攻击者怎么变换编码、怎么组合特殊字符只要超出白名单范围请求就被拒绝。而且白名单规则简单清晰不容易受到变种绕过。对参数类型明确的情况务必要做这样的校验特别是数字型的参数很多可以用整型转换直接过滤掉攻击载荷。4.4 数据库权限收敛注入发生后的最后一道闸假设代码层和 WAF 都失守了数据库权限是最后一道闸。很多系统的数据库连接都使用高权限账号一旦注入发生攻击者可以直接读表、写文件、甚至执行系统命令。按照最小权限原则业务应用连接数据库的账号应当只拥有其业务所必需的权限。一个只做查询展示的接口绝不该用 DBA 权限连接数据库。如果应用只需要对某几张表做查询那就只给那几张表的 SELECT 权限。删库、建表、执行存储过程等高危操作应当从业务连接账号中剥离。我见过不止一次由于数据库账号是 root 或 sa一旦注入发生攻击者获得的数据量是灾难性的。把数据库权限收敛这件事做好即使前面全部防线失守损失也能控制在相对有限的范围。5. 把 WAF 用好部署、规则与日志分析实战5.1 WAF 的正确部署姿势很多团队把 WAF 部署好了就以为高枕无忧了其实部署位置和接入方式对防护效果影响非常大。首先要让 WAF 能看到所有真实业务流量。如果业务存在多个入口比如某些接口走了其他代理、某些内部系统绕过域名直接访问源站 IP攻击者很容易找到一条不经过 WAF 的路径。确保所有对外流量都经过 WAF是最基本的部署要求。其次要注意源站 IP 泄露。如果源站 IP 直接暴露在外攻击者可以绕过 WAF 直接攻击源站。常见做法是隐藏源站 IP、只允许 WAF 的回源 IP 访问源站这个配置在云 WAF 场景里尤其重要。最后HTTPS 证书管理要到位。WAF 需要正确解密 HTTPS 流量才能做检测如果证书配置有问题WAF 可能完全看不到真实内容防护自然无从谈起。5.2 规则配置与误报治理WAF 规则配置的核心原则是先告警、后拦截、再放行逐步收缩。我一般建议这样操作新的定制规则先设为告警模式跑一到两周观察告警日志里有没有大量的正常业务请求被命中。如果没有明显误报再把规则切换为拦截模式如果确认某个规则经常误伤正常业务则针对具体接口或参数范围做白名单例外而不是直接关掉规则。另外规则要有版本管理。改完规则后要能随时回滚特别是业务大促或流量高峰前后规则变更需要遵循变更流程。我见过因为赶时间直接改规则、出事之后却找不到之前的配置备份而手忙脚乱的情况。5.3 从日志中识别攻击者的试探行为WAF 日志是最宝贵的一手信息源远比厂商的威胁情报报告来得具体。我分享几个在日志里值得关注的信号短时间内来自同一来源的大量 4xx 请求且 URL 参数中反复出现特殊字符、编码特征。同一个接口被大量不同的参数组合请求明显不是正常用户的浏览行为。请求参数的值非常长且包含空格、引号、括号、注释符等特殊字符的组合。特定的参数名被反复测试而正常业务根本不会使用这些参数名。看到这些信号时优先去看后端应用日志确认这些请求是否真正打到了业务代码有没有可能落在 SQL 拼接点上。这个过程需要开发和安全的同事配合完成。5.4 验证 WAF 的有效性从演练到持续评估WAF 部署之后要验证有效性不能只看厂商的测试报告。建议在测试环境搭建一套镜像应用自己构造覆盖常见漏洞场景的请求看 WAF 能不能拦得住。这里要特别强调验证 WAF 防御效果应当在授权的测试环境和范围内进行自建靶场、攻防演练都不要针对未授权的真实业务系统做攻击测试这既是一条安全红线也是每个从业者应遵守的职业准则。除了上线前的验证运行过程中规则也在持续演化。每隔一段时间重新跑一遍测试用例确认规则变更没有降低防护效果这比等到出事了再排查要划算得多。6. 纵深防御WAF 之外还必须做的事6.1 把 WAF 当作第一道闸而非唯一防线纵深防御的核心思想是假设任何单层防护都可能被突破所以要在不同层次布置多重防线。WAF 是面向外部攻击的第一道闸但它的下游还需要代码层、数据库层、监控层的协同。我内心比较认同的一种比喻是WAF 像是小区门口的保安负责拦住明显可疑的人代码参数化像是每户的防盗门负责拦住真正想入室的人数据库权限像是家里的保险柜负责在前的防线全部失守时降低损失日志监控则像是室内摄像头负责及时发现异常并留下证据。少了一道安全感就会大打折扣。6.2 数据库侧的兜底防护在数据库层面除了权限收敛还有一些兜底手段值得启用。比如关闭或限制数据库的本地文件读取功能避免注入发生后攻击者读取服务器上的敏感文件限制数据库账号只能从特定应用服务器地址登录对于重要的生产库定期做敏感数据发现和脱敏处理。另外官方更新和安全补丁也要及时跟进很多已知漏洞有公开的利用方式如果不打补丁就相当于把门敞着等攻击者进来。6.3 应急响应与可疑流量排查如果确认 WAF 被穿透、SQL注入 可能已发生应急响应的第一步不是慌张而是把受影响的接口和数据库连接先隔离掉。具体来说可以先在接入层临时断掉可疑来源的访问、更新 WAF 规则拦截该类型请求、封闭数据库账号然后开始排查。排查过程中要注意保护现场备份相关日志、保留数据库的慢查询记录和连接日志这些对后续溯源很重要。不要一边排查一边清日志很多关键痕迹一旦被覆盖就很难恢复。排查的核心是确定两件事攻击者到底有没有拿到数据以及是通过哪个参数、哪条语句拿到的。前者关系着是否需要启动数据泄露通告流程后者关系着修复计划要怎么排优先级。我做过的最有效的排查路径是从 WAF 日志中筛出被放行但近期触发了数据库异常的请求再对应到应用日志中实际执行的 SQL 语句。这个方法需要日志链路相对完整但一旦打通溯源效率会高很多。最后再说一点我个人的体会。安全防御这件事真的没有一劳永逸的方案。SQL注入 这个漏洞存在了这么多年看起来简单却始终在漏洞榜单上名列前茅核心原因就是它直指信任用户输入这个普遍问题。WAF 在其中的角色更像是一个持续升级的过滤器而不是一个能替你挡掉所有问题的主闸门。这些年我经历的项目里凡是最终把代码层修复做实、把数据库权限收敛到位、把 WAF 日志用起来的团队后期都省了大量救火的精力。反而是那些一味堆 WAF 规则、却迟迟不改代码的做法往往在各种攻防演练中被反复打穿。记住WAF 能拦住的是明显的恶意而真正安全的系统必须做到即使恶意漏进来也没有可利用的东西。从源头把输入把控好把权限收紧了把监控做完整了这才是应对 SQL注入 最扎实的态度。

相关新闻

Pygame飞机大战工程拆解:代码与素材的完整游戏开发指南

Pygame飞机大战工程拆解:代码与素材的完整游戏开发指南

简介:一套结合源码与视觉素材的飞机大战游戏开发资料包,基于面向过程和面向对象两种编程范式给出完整Python实现。面向过程版将游戏拆分为初始化、渲染、事件处理、更新与主循环等模块;面向对象版通过Plane、Bullet、Enemy等类的定义、封装与…

2026/10/17 8:39:24 阅读更多 →
pgvector新版本向量检索评测:HNSW索引性能与调优实战

pgvector新版本向量检索评测:HNSW索引性能与调优实战

pgvector新版本的向量检索评测,是我最近两周一直压在手里的一件事。业务里有一个用户向量召回场景,数据量从百万级涨到接近千万级,旧的索引方案撑不住查询耗时,我不得不把眼光放到扩展的新版本上。这篇文章不是什么官方评测&#…

2026/10/17 8:39:24 阅读更多 →
栈与图遍历落地:C++老鼠走迷宫课设全解析

栈与图遍历落地:C++老鼠走迷宫课设全解析

简介:一份基于C与数据结构课程设计的“老鼠走迷宫”完整项目资源,适合高校学生在学习图、栈、队列与搜索算法时参考实践。资源将迷宫抽象为二维数组图结构,以0表示可通行路径、1表示墙壁,借助随机迷宫生成、深度优先搜索&#xff…

2026/10/17 8:39:24 阅读更多 →

最新新闻

不完全信息Epsilon纳什均衡在航天器末端追逃博弈的Matlab实现

不完全信息Epsilon纳什均衡在航天器末端追逃博弈的Matlab实现

作为研究航天器近距离任务的开发者,我们组在复现不完全信息Epsilon纳什均衡的航天器末端追逃博弈策略(Matlab代码实现)这篇论文时,最大的感受是:以前觉得博弈论在航天里就是理论推推公式,真正要把“对方参数…

2026/10/17 9:27:38 阅读更多 →
企业Agent项目真实ROI怎么算?从成本结构到收益模型的完整拆解

企业Agent项目真实ROI怎么算?从成本结构到收益模型的完整拆解

这年头,谁家汇报材料里没放两个Agent流程Demo,都不好意思讲数字化。可真正把Agent放进生产流程,让它自己处理工单、回客户消息、跑财务核对的团队,远没有PPT里那么多;能把账算清楚的,更是少数中的少数。我说…

2026/10/17 9:27:38 阅读更多 →
Premiere Pro新手防崩溃指南:5个关键操作安全阀

Premiere Pro新手防崩溃指南:5个关键操作安全阀

1. 项目概述:这不是剪辑软件说明书,而是一份“PR上手防崩溃指南”“PR简单上手笔记”——光看这标题,你可能以为是某位刚考完Adobe认证的学员随手记下的快捷键清单,或者某培训机构发在群里的PDF速成课大纲。但在我带过二十多个零基…

2026/10/17 9:27:38 阅读更多 →
open-code-review:轻量级开源代码评审范式解析

open-code-review:轻量级开源代码评审范式解析

1. “open-code-review”不是工具名,而是一类新型代码评审范式的代号你可能在 GitHub Trending、Hacker News 或某次技术分享里见过这个词——它不像eslint或pre-commit那样有明确的安装命令,也不在 npm 或 PyPI 上搜得到可直接pip install open-code-re…

2026/10/17 9:27:38 阅读更多 →
电商图片工作流画布:节点式自动化生产与批量处理实战

电商图片工作流画布:节点式自动化生产与批量处理实战

1. 电商图片制作的痛点与工作流画布的破局思路做电商这行的朋友应该都有体会,图片制作这件事看起来简单,实际上是个无底洞。一个SKU从拍摄到上架,中间要经历主图、详情页、场景图、白底图、尺寸标注图、卖点图、对比图、包装图等至少七八种图…

2026/10/17 9:27:38 阅读更多 →
macOS上用Docker部署nginx+php:从零搭建容器化开发环境

macOS上用Docker部署nginx+php:从零搭建容器化开发环境

你在macOS上装过nginx和php吗?如果装过,大概率体会过那种“装起来半小时、调起来一晚上”的滋味。今天这篇我就带你完整走一遍macOS上安装Docker,然后在Docker里部署一套nginxphp环境的过程,整个过程不追求什么高大上的编排技巧&a…

2026/10/17 9:26:37 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →