Day 134 - 验证码识别 · 练习与检查表
✅ 今日完成清单
- [ ] 理解验证码的成本不对称博弈本质
- [ ] 掌握 ddddocr 的基本识别与字符集限制(
set_ranges) - [ ] 掌握
slide_match滑块缺口检测的用法与局限 - [ ] 理解 CTC 端到端识别为何优于字符切分
- [ ] 掌握传统 OCR 预处理四步(灰度/二值化/降噪/增强)
- [ ] 能生成"先快后慢 + 抖动 + 回退"的人类轨迹
- [ ] 建立"识别成本 vs 数据价值"的工程决策意识
📝 练习题
基础
1. ddddocr 识别率测试
用 Day 133 学过的 UA 池 + Session,写脚本连续获取某测试站点的图形验证码 20 次,用 ddddocr 识别并统计识别率。如果识别率低于 60%,尝试 set_ranges 限制字符集后对比。
2. 二值化阈值扫描
对同一张验证码,用 point() 在阈值 100~200 范围内每隔 20 取一次做二值化 + OCR,找出最优阈值。思考:这个最优阈值对其他图片也通用吗?(引出自适应阈值)
进阶
3. 完整滑块求解器
把 03-slide-captcha.py 中的缺口检测 + 轨迹生成封装成 SlideSolver 类:
- solve(bg_url, target_url, start_x) -> track
- 加入重试机制:最多 3 次,每次失败重新生成轨迹(不同 overshoot/速度参数)
- 用模拟服务(自己写一个校验位置的函数)测试通过率
4. 轨迹风控模拟器
写一个"风控裁判"函数 is_human(track),计算:
- 速度均值与方差
- y 轴抖动幅度
- 是否存在回退
- 总时长(< 500ms 判机器)
用它测试:匀速轨迹、纯 random 轨迹、human_track 轨迹,统计各自的通过率并分析原因。
挑战
5. 点选验证码探索
用 ddddocr 的 detection 接口对一张含多个目标的图片做目标检测,输出所有坐标框。思考完整点选流程还缺哪几步?(指令解析 -> 坐标排序 -> 点击模拟)写出设计文档即可,不必实现。
🔗 相关
- 昨日:Day 133 UA 与 Cookie 池
- 明日:Day 135 JS 逆向入门