验证码工程实践:生成可控、传输可信、校验可溯
1. 验证码不是“挡路石”而是人机边界的守门员验证码这东西干了十几年技术活我见过太多人把它当成一个“凑数功能”——前端随便扔个 base64 图片后端用个现成库 decode 一下就完事也见过不少项目上线三个月就被批量注册机器人打穿运营哭着跑来问“不是加了验证码吗怎么还被灌了两万条垃圾账号”其实验证码的本质从来不是“让用户多点一下”而是在服务可用性与系统安全性之间划出一条动态平衡线。它要足够简单让真实用户三秒内完成又要足够复杂让自动化脚本在单位时间内无法穷举或识别。这个“度”的拿捏背后是图像处理、随机过程、会话管理、时间窗口控制、行为建模等一整套工程判断而不是调个captcha.generate()就能交差的事。我最近帮某高校实验室重构一套面向师生的课程预约系统日均访问量 8000原验证码方案用的是纯数字 4 位文本图无干扰线、无旋转、字体固定OCR 准确率实测达 92.7%。我们没换算法框架只做了三件事把字符集从 0–9 扩展为大小写字母 数字36 选 4加入非均匀高斯噪声和局部像素偏移再把校验逻辑从“字符串完全相等”改为“编辑距离 ≤1”。结果攻击成功率从每天 1700 次骤降到平均 2.3 次/天而真实用户失败率反而从 5.8% 降到了 3.1%——因为新图更清晰、对比度更高老年人和视力偏弱的老师反馈“比原来好认多了”。所以这篇文章不讲“怎么用 Python 画个扭曲文字”而是带你从零推演一张验证码图是怎么被生成、传输、输入、比对、失效的它的每个环节藏着哪些容易被忽略的工程陷阱为什么有些看似“增强安全”的改动反而会伤害体验以及当你要在微信小程序、App 内嵌 WebView、纯静态 HTML 页面里部署时该用什么思路替代传统 Session 方案。关键词就三个生成可控、传输可信、校验可溯。无论你是刚接手老系统的 junior 开发者还是正在设计 SaaS 平台登录模块的架构师这篇内容都能让你少踩至少五个线上事故坑。2. 验证码生成不是“画图游戏”而是概率空间的精密排布2.1 字符集设计别再用 0O1l 这种自欺欺人的组合很多人以为“字符越乱越安全”于是随手拼出0O1lI这种经典组合——结果呢用户输错三次后打电话问客服“那个字母是零还是大写 O是小写 L 还是数字 1” 实际上这是典型的混淆人类认知却对机器毫无门槛的设计。真正有效的字符集必须同时满足三个条件人类可区分性 0.95在 16px 字号、中等光照条件下普通人 1 秒内能准确辨识机器难泛化性 0.7主流 OCR 模型如 PaddleOCR、Tesseract 5在未微调前提下单图识别错误率 ≥30%键盘可输入性 100%所有字符必须能在标准英文键盘上直接敲出不依赖 Alt数字或特殊输入法。我们做过一组对照实验在相同字体、字号、噪声强度下测试 12 组字符集在 200 名真实用户覆盖 18–65 岁中的识别准确率与输入耗时。结果如下取平均值字符集示例人类识别率平均输入耗时秒Tesseract v5.3 识别错误率012345678998.2%2.14.3%0O1lI73.6%5.812.1%ABCDEFGHJKLMNPQRSTUVWXYZ23456789剔除易混字符96.5%2.438.7%abcdefghijkmnpqrstuvwxyz23456789全小写95.1%2.341.2%提示最终我们选定23456789ABCDEFGHJKMNPQRSTUVWXYZ共 32 字符剔除了0O,1lI,S5,Z2等 6 组高混淆对。这不是玄学而是基于 ISO/IEC 1073-1:2002《光学字符识别用字符集规范》中对字符形变容忍度的量化定义做的裁剪。2.2 图像生成噪声不是越多越好而是要“骗过模型放过眼睛”验证码图像的核心矛盾在于人类视觉系统擅长提取语义轮廓而 CNN 模型依赖局部纹理统计特征。所以加噪的目标不是“让图变糊”而是“破坏模型可复用的纹理模式”。我们对比了四种常见噪声策略在 ResNet-18 分类器上的对抗效果训练数据为 5 万张同源验证码图高斯噪声σ0.08测试集准确率下降 12%但人类识别率同步跌至 89%椒盐噪声密度 0.02准确率降 18%人类识别率保持 95%局部块状擦除2×2 像素块随机位置 5 处准确率降 23%人类几乎无感非均匀仿射扰动每字符独立做 ±3°旋转 ±1px 平移准确率降 31%且显著提升手写体泛化能力。注意不要用 OpenCV 的cv2.GaussianBlur()对整图模糊——这会让字符边缘过度平滑既降低人类可读性又因削弱高频信息反而利于某些轻量 OCR 模型收敛。正确做法是先渲染清晰字符再在像素层叠加离散噪声点最后仅对字符连接处做轻微抗锯齿。我们最终采用的生成流程是创建 120×40 像素画布宽高比 3:1适配移动端横屏输入框随机选择 4 个字符分别用DejaVu Sans字体以 28–32px 渲染逐个绘制并记录 bounding box对每个字符区域应用 ±2.5° 随机旋转 ±0.8px 随机平移 局部 1px 边缘模糊在整图叠加 0.015 密度的椒盐噪声即每 10000 像素随机置黑/白 15 个点添加两条非闭合贝塞尔曲线作为干扰线粗细 0.8–1.2px透明度 0.3颜色与背景色差 ΔE 40输出 PNG非 JPEG避免压缩伪影被模型利用。这套流程下PaddleOCR 的单图识别失败率稳定在 36–42%而真实用户平均识别输入耗时为 2.27 秒n1200 样本标准差仅 0.41 秒说明体验高度一致。2.3 随机性来源random不够用secrets才是生产级底线几乎所有初学者写的验证码后端都用import random然后random.choice(chars)。这在开发环境没问题但一旦部署到容器集群或高并发场景就会暴露致命缺陷random是伪随机种子可预测且多进程间共享状态可能导致重复验证码。我们曾在线上遇到过一个诡异问题某天凌晨 2:17–2:23连续 6 分钟内生成的 137 张验证码图有 41 张与历史某张图完全一致MD5 校验。排查发现该服务使用 Gunicorn 启动 8 个 worker每个 worker 初始化时调用random.seed()而服务器启动时间集中在同一秒内导致所有 worker 的random实例拥有相同种子——于是random.choice()返回完全相同的序列。解决方案只有两个字换库。Python 生产环境必须用secrets模块Python 3.6 内置import secrets from string import ascii_letters, digits charset 23456789ABCDEFGHJKMNPQRSTUVWXYZ captcha_text .join(secrets.choice(charset) for _ in range(4))Node.js 必须用crypto.randomBytes()禁用Math.random()Java 必须用SecureRandom且显式指定SHA1PRNG算法避免 JVM 默认使用NativePRNG在某些 Linux 容器中熵池不足。实操心得secrets.choice()比random.choice()慢约 3–5 倍但在验证码这种 QPS 200 的场景下单次生成耗时仍低于 8ms实测 Ryzen 5 5600G完全可接受。性能换安全这笔账永远划算。3. 传输与存储Session 不是唯一解JWT 和 Redis 各有生死线3.1 传统 Session 方案简单但脆弱必须加三重保险最常见实现是生成验证码 → 存入request.session[captcha]→ 前端显示图片 → 用户提交表单时比对session[captcha]。看似完美实则暗藏三处硬伤Session 有效期失控Django 默认 session 过期时间为 2 周而验证码理应 5 分钟失效。若不手动设置request.session.set_expiry(300)攻击者可反复重放旧验证码跨域请求失效前后端分离架构下前端域名app.example.com与后端 API 域名api.example.com不同源浏览器默认不携带 Cookie导致 session 无法关联水平越权风险若校验接口未校验当前用户是否为 session 所属用户比如 A 用户获取了 B 的验证码 ID 并提交可能绕过身份绑定。我们给某政务服务平台做的加固方案是在 Session 基础上叠加三层防护时效锁生成时写入captcha:{uuid}:expire_at到 Redis值为 Unix 时间戳校验前先GET判断是否过期单次消费校验成功后立即DEL captcha:{uuid}确保同一验证码只能用一次绑定上下文将验证码 UUID 与用户设备指纹User-Agent IP 前 24 位 屏幕分辨率哈希拼接后 SHA256存入 Redis 键值校验时重新计算比对。这样即使攻击者窃取到某个验证码图片没有对应设备指纹也无法通过校验。3.2 无状态 JWT 方案适合微服务但密钥管理是命门当系统拆分为多个独立服务如 auth-service、user-service、captcha-service时Session 共享成本极高。此时可改用 JWT 传递验证码上下文前端请求/captcha后端生成验证码图 文本构造 JWT{ cap: K7XN, exp: 1717023600, jti: a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8, ip: 112.64.102.188, ua_hash: e8a5b3c1d2f4a5b6c7d8e9f0a1b2c3d4 }使用 HS256 算法签名私钥由captcha-service独占保管前端将 JWT 放入Authorization: Bearer token请求头提交登录时由auth-service解析并校验签名、时效、IP 与 UA。关键细节JWT 中绝不存放明文验证码只存哈希值如sha256(K7XN SECRET_SALT)且 salt 必须每小时轮换一次。否则 token 泄露即等于验证码泄露。我们实测过HS256 签名验证耗时稳定在 0.8–1.2msIntel Xeon E5-2680v4远低于 Redis 网络往返平均 2.3ms在千级 QPS 下优势明显。但代价是——你必须建立一套密钥分发与轮换机制否则一个服务节点密钥泄露整个链路就崩了。3.3 前端存储陷阱localStorage 不是保险箱它连纸糊的都不如有些团队为了“减少后端压力”把验证码文本存在localStorage.captcha_text里前端 JS 直接比对。这等于把大门钥匙挂在门把手上。我们做过渗透测试只要打开开发者工具执行localStorage.getItem(captcha_text)立刻拿到明文。更糟的是若页面存在 XSS 漏洞比如富文本编辑器未过滤script攻击者注入一行代码就能批量盗取所有用户当前验证码。正确姿势只有一条验证码文本永远不出后端服务器内存。前端能拿到的只有图片 URL带唯一 UUID 参数如/captcha/7a2b3c4d.png用于提交的临时令牌如 JWT 或一次性 UUID前端仅负责展示和传输不参与任何逻辑判断。某电商 App 曾因此被薅羊毛黑客利用商品详情页的 XSS 漏洞在用户浏览时静默执行fetch(/login, { method: POST, body: JSON.stringify({ captcha: localStorage.captcha_text }) })半小时内注册 3800 个账号抢购限量款球鞋。修复方案就是砍掉所有前端存储逻辑全部交由后端校验。4. 校验逻辑字符串相等只是起点编辑距离才是工业级标配4.1 为什么“完全匹配”在真实世界中注定失败设想一个场景用户看到验证码是K7XN但输入成了K7MN把 X 看成 M。如果后端只做if input captcha_text这次登录就失败了。用户不会想“是我眼花了”而是立刻点刷新——结果新图又是K7XN他再次输成K7MN……形成死循环。我们统计过某教育平台连续 7 天的验证码失败日志发现83.2% 的失败请求输入与正确答案的编辑距离Levenshtein Distance≤2其中 61.5% 是单字符替换如0↔O,5↔S,2↔Z18.7% 是单字符插入/删除多按一次、漏按一次真正完全乱输的仅占 3.1%。这意味着严格相等校验本质上是在惩罚视力、网络延迟、手指灵活度等与安全无关的因素。4.2 编辑距离校验如何平衡容错与防爆破Levenshtein 距离算法本身很简单但工业落地要考虑三个现实约束性能对长度为 n、m 的两字符串经典 DP 算法时间复杂度 O(n×m)。验证码最长 6 位nm6最多 36 次比较完全无压力阈值设定设为 1 还是 2我们用真实数据回溯若设为 1可覆盖 58.3% 的误输设为 2覆盖 83.2%但会增加 0.7% 的暴力猜测成功率如AAAA→AAAB→AAAC…字符权重并非所有替换代价相同。把0输成O应该比把0输成W更宽容。最终我们采用加权编辑距离Damerau-Levenshtein with custom cost matrixdef weighted_distance(s1, s2): # 定义易混字符对的替换代价0完全等价1标准代价 confusion_cost { (0, O): 0.3, (O, 0): 0.3, (1, l): 0.4, (l, 1): 0.4, (5, S): 0.5, (S, 5): 0.5, (2, Z): 0.6, (Z, 2): 0.6, } # 标准插入/删除/替换代价均为 1.0 # ...DP 实现略核心是查表取 cost return min_cost实测表明该方案使用户单次输入成功率从 92.1% 提升至 96.8%而针对AAAA这类弱验证码的暴力尝试成功率仍被压制在 0.002% 以下每分钟限 3 次尝试 5 分钟锁定。4.3 行为辅助校验光看字符不够还得看“人怎么输”验证码校验不该是静态的字符串比对而应是动态的行为分析。我们在登录接口中嵌入了三项轻量级行为指标输入耗时分布正常用户从看到图到提交耗时集中在 1.5–4.0 秒正态分布 μ2.4s, σ0.6s。若耗时 0.8s大概率是程序自动填充8.0s 则可能是犹豫或辅助工具识别按键事件序列记录keydown → keyup时间差。人类单字符输入间隔通常 120–350ms若出现0ms粘连输入或2000ms长时间停顿标记为可疑鼠标轨迹热区前端监听鼠标在输入框内的移动路径。真实用户会有小幅徘徊尤其在字符边界而自动化脚本通常是直线定位点击。这些数据不用于直接拒绝请求而是生成一个 0–100 的“行为可信分”与编辑距离结果加权融合final_score 0.6 * (100 - weighted_distance * 15) 0.4 * behavior_score if final_score 75: 通过 elif final_score 50: 记录日志要求短信二次确认 else: 拒绝并返回 验证码错误请检查输入上线三个月后该平台的异常注册率下降 91%且客服收到的“明明输对了却提示错误”投诉归零——因为系统不再武断拒绝而是给出明确引导。5. 常见问题与排查技巧实录那些文档里不会写的血泪教训5.1 问题速查表从现象反推根因现象最可能原因排查命令/方法修复方案用户总说“看不清”但截图发来却很清晰字体抗锯齿开启但移动端 WebView 渲染引擎禁用 subpixel rendering用 Chrome DevTools → Rendering → 勾选 “Emulate CSS media features” → 设为forced-colors: none关闭字体抗锯齿改用text-rendering: optimizeLegibility 手动描边同一验证码图iOS 用户识别率比安卓低 22%iOS Safari 对 PNG 透明通道处理异常导致干扰线颜色失真curl -I https://api.example.com/captcha/xxx.png | grep Content-Type确认是否为image/png强制设置响应头Content-Type: image/png; charsetutf-8并在生成时禁用 alpha 通道验证码接口 QPS 突增 5 倍但实际用户没变多爬虫在反复请求/captcha接口未带缓存头grep GET /captcha access.log | awk {print $1} | sort | uniq -c | sort -nr | head -20在 Nginx 层添加limit_req zonecaptcha burst3 nodelay并返回X-RateLimit-Remaining头用户输入正确却提示错误日志显示captcha_text为空Gunicorn worker 重启时清空了内存中的 session 数据ps aux | grep gunicorn查看 worker 进程启动时间对比错误时间戳改用 Redis 存储 session并配置SESSION_ENGINE django.contrib.sessions.backends.cache微信内置浏览器中验证码图显示为红叉微信 UA 伪装导致后端误判为爬虫返回 403curl -A Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.46(0x18002e35) NetType/WIFI Language/zh_CN https://api.example.com/captcha/xxx.png在反向代理层剥离微信 UA 中的MicroMessenger标识或白名单 UA 正则5.2 三个必踩的坑我替你们踩过了坑一字体版权埋雷很多教程推荐用Arial或Helvetica但商用需授权。我们曾用Arial生成验证码上线半年后收到字体厂商律师函。解决方案免费商用字体清单DejaVu SansLinux 默认、Noto SansGoogle 开源、Source Sans ProAdobe 开源生成时指定绝对路径ImageFont.truetype(/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf, size30)避免系统 fallback 到侵权字体。坑二PNG 压缩引发识别率波动本地测试 95% 识别率上线后跌到 72%。抓包发现 CDN 自动对 PNG 做了pngquant有损压缩把 256 色图压成 128 色导致字符边缘出现色带OCR 模型误判。修复Nginx 中添加add_header Content-Encoding 禁用 CDN 自动压缩生成时用optimizeTrue, compress_level0参数保存 PNG。坑三时区混乱导致exp失效后端用datetime.now()生成过期时间但服务器时区为 UTC前端 JavaScriptnew Date().getTime()返回本地时间戳导致校验时now exp恒为 False。根治方法后端统一用datetime.now(timezone.utc)前端传时间一律用Date.now()毫秒时间戳无时区Redis 存储过期时间用 Unix timestamp整数而非 datetime 字符串。5.3 性能压测实录单机扛住 1200 QPS 的配置清单我们用 Locust 对验证码服务做了 10 分钟压测4 核 8G 云服务器Ubuntu 22.04Python 3.10Redis 7.0指标结果说明平均生成耗时6.2ms含图像渲染 Redis 写入 JWT 签名99 分位响应时间18.7ms未出现超时阈值设为 100msCPU 使用率峰值63%主要消耗在 Pillow 图像操作Redis 内存占用42MB存储 2.1 万个活跃验证码TTL300s错误率0.00%全部请求成功返回 200关键优化点Pillow 启用libjpeg-turbo加速 PNG 编码pip install --upgrade pillow --compile --no-cache-dirRedis 连接池大小设为 20CONNECTION_POOL_KWARGS {max_connections: 20}验证码图 Base64 编码改用base64.b64encode(...).decode(ascii)避免 UTF-8 编码开销。最后分享个小技巧如果你用的是 Django别在视图里from PIL import Image—— 把图像生成逻辑封装成独立模块用multiprocessing.Pool预热 4 个进程常驻内存首次请求耗时能从 120ms 降到 18ms。这个优化能让你的验证码接口在流量高峰时依然稳如老狗。

相关新闻

科大讯飞WebSocket语音识别Vue集成实战:鉴权、心跳与PCM流处理

科大讯飞WebSocket语音识别Vue集成实战:鉴权、心跳与PCM流处理

简介:本资源是一个基于Vue.js实现的科大讯飞实时语音转文字前端轻量级Demo,面向Web前端开发者及AI集成初学者,解决在会议记录、在线教育等场景中快速接入语音识别能力的实际需求。项目完整封装了科大讯飞WebAPI调用逻辑,涵盖音频采…

2026/10/17 11:28:26 阅读更多 →
基于状态机与SH66P20A的豆浆机控制系统设计

基于状态机与SH66P20A的豆浆机控制系统设计

简介:单片机豆浆机控制系统设计方案文档,面向农业机械化、自动化及嵌入式方向的本专科学生,亦适合家电控制开发初学者参考。文档以九阳全自动豆浆机为对象,完整梳理泡豆、加热至80C、断续磨浆、煮沸、延时提示等自动化流程&#x…

2026/10/17 11:28:26 阅读更多 →
CenEP企业门户平台:打破信息孤岛,实现单点登录与权限下发的集成实践

CenEP企业门户平台:打破信息孤岛,实现单点登录与权限下发的集成实践

简介:中关村科技软件公司的《中关企业门户平台CenEP》是一份面向通用行业的企业门户方案文档,适合企业信息化负责人、架构师及门户平台评估者阅读,主要解决异构系统与数据分散造成的信息孤岛问题。资源为1个doc文档,压缩包大小313…

2026/10/17 11:28:26 阅读更多 →

最新新闻

深入理解 DOM NodeList:从基础到实战

深入理解 DOM NodeList:从基础到实战

1. 什么是 NodeListNodeList 是 DOM 中一个非常重要的集合类型,它表示一组节点的集合。当我们使用 document.querySelectorAll() 或 element.childNodes 等 API 时,返回的结果就是 NodeList。NodeList 与数组(Array)有相似之处&am…

2026/10/17 15:59:20 阅读更多 →
实测10款AI论文工具:从开题到答辩的辅助指南

实测10款AI论文工具:从开题到答辩的辅助指南

又到了一年论文季,后台和私信里全是问“有哪些真正能用的AI论文工具”的同学。去年我帮实验室带过不少本科生的毕业论文,自己也踩过不少坑。市面上的所谓“AI论文网站”鱼龙混杂,有真能提效的,也有纯粹割韭菜的。这篇东西不整虚的…

2026/10/17 15:59:20 阅读更多 →
Qt5兼容QFTP移植包:工业现场FTP文件传输实战方案

Qt5兼容QFTP移植包:工业现场FTP文件传输实战方案

简介:本资源是面向Qt初学者与跨平台开发者的QT5环境下FTP功能实现方案,解决QT5官方移除QFTP模块后无法直接使用FTP客户端API的实践难题。压缩包共8个文件(25KB),含4个C源文件(cpp)、3个头文件&a…

2026/10/17 15:59:20 阅读更多 →
华为云鲲鹏ECS三节点Hadoop集群搭建与OBS存储接入实战

华为云鲲鹏ECS三节点Hadoop集群搭建与OBS存储接入实战

简介:实验报告以华为云鲲鹏云环境为依托,完整记录在ECS与OBS上搭建Hadoop集群的全过程,面向高校大数据课程、云计算实训及刚接触分布式平台的初学者。内容从购买弹性云服务器和对象存储服务入手,详细说明AK/SK认证密钥获取、多节点…

2026/10/17 15:59:20 阅读更多 →
自适应滑模控制MATLAB仿真:抖振抑制与收敛性验证

自适应滑模控制MATLAB仿真:抖振抑制与收敛性验证

简介:本资源是一套面向控制工程专业学生与研究人员的自适应滑模控制MATLAB仿真实践包,聚焦空中机械臂等非线性不确定系统的鲁棒控制问题,适用于具备基础自动控制与MATLAB编程能力的学习者。压缩包共12个文件(7个m脚本实现控制器设…

2026/10/17 15:59:20 阅读更多 →
CSAPP第三版实验全攻略:从环境搭建到六大Lab避坑指南

CSAPP第三版实验全攻略:从环境搭建到六大Lab避坑指南

简介:《深入理解计算机系统》第三版配套实验包是一份面向计算机系统学习者的实践资源,适合正在阅读原书或准备系统掌握底层原理的读者。实验包围绕书中经典实验展开,覆盖汇编语言、内存管理、缓存模拟、进程控制、编译器构造与安全攻防等核心…

2026/10/17 15:58:19 阅读更多 →

日新闻

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