被执行人信息
案件雷达
法律从业者的一键监控利器 — 验证码自动识别 · 批量查询 · 变更追踪 · Excel 导出
背景与痛点
中国执行信息公开网(zxgk.court.gov.cn)是查询被执行人案件信息的唯一官方渠道。每次查询需要手动输入验证码,批量查询更是耗时耗力。
“每天早上第一件事就是打开执行信息网,查关联公司有没有新增被执行案件,一个一个手动查太慢了。”
— 目标用户:法律从业者
验证码障碍
每次查询都要手动输入图形验证码,打断工作流,批量查询几乎不可能
WAF 封锁
网站部署了 Web 应用防火墙,请求过频会触发临时 IP 封锁,需要精细的请求调度
变更难追踪
每日重复查询同一批公司,无法自动识别新增 / 撤销的执行案件
目标用户
工具围绕法律从业者的日常合规监控需求设计,核心场景:每日批量查询关联公司是否有新增被执行案件。
王律师
Primary法律从业者 · 日常监控
“每天早上打开工具,一键查完所有关联公司的被执行信息,3 分钟搞定以前要花半小时的工作。”
每日监控 20+ 家关联公司执行状态,关注新增案件、撤销记录,需要快速导出报告给客户。
合规团队
Secondary企业法务 · 定期审查
“批量导出 Excel 报告直接发给客户,省去了手工整理表格的时间。”
定期对合作伙伴进行尽职调查,需要结构化的执行信息报告和历史变更追踪。
技术选型演变
经过三轮技术选型,最终确定了轻量高效的 Flask + requests + ddddocr 方案。
ChromeDriver 版本匹配问题频繁,浏览器驱动维护成本高,不适合工具分发
macOS 上 pythonnet 安装失败,跨平台兼容性差
纯 HTTP API 调用 + 浏览器展示,轻量高效,跨平台零依赖
Python 3.14
后端 + 查询引擎 + 打包
Flask 3.0
Web 服务器 + API 路由
ddddocr
验证码 OCR 自动识别
系统架构
三层架构:Flask Web 服务器 → 查询引擎 → 中国执行信息公开网 API,支持桌面端打包分发。
Web UI (index.html)
Vuesax 风格 · Protocol 背景 · 一键查询 · 详情弹窗 · Excel 导出
Flask Server (app.py)
REST API · 批量调度 · 历史对比 · Excel 生成 · WAF 退避
查询引擎 (query_execution.py)
Session 管理 · 验证码获取/识别 · 搜索/翻页 · 详情解析
核心功能设计
从验证码自动识别到批量查询导出,覆盖法律从业者日常合规监控的完整工作流。
验证码自动识别
集成 ddddocr OCR 引擎,自动获取并识别执行信息网的图形验证码。支持验证码复用机制 — 搜索成功后缓存验证码,详情查询首次尝试复用,避免频繁获取触发 WAF。
批量查询与导出
支持多行输入批量查询,异步后台执行,实时进度条反馈。查询完成后自动生成格式化 Excel 报告,包含新增/撤销状态标记和条件格式。
历史变更追踪
每次查询自动与上次结果对比,标记「新增」和「撤销」案件。历史数据持久化存储,每日打开即可看到变化。
WAF 智能规避
内置多层 WAF 防护策略:请求间隔随机化(5-8s 详情 / 15-25s 公司间隔)、指数退避重试(最多 3 次)、冷却等待机制。
查询流程
初始化 Session
GET 首页建立连接
等待 2s 避免 WAF
验证码识别
获取图片 → ddddocr
AI 自动识别
搜索 + 翻页
POST 搜索请求
自动翻页获取全部
去重 + 对比
复合键去重
与历史记录对比
结果展示
标记新增/撤销
支持详情弹窗
WAF 防护与请求调度
中国执行信息公开网部署了 Web 应用防火墙,请求过频会触发临时 IP 封锁(HTTP 400)。设计了多层防护策略确保稳定运行。
请求间隔随机化
详情查询 5-8 秒随机间隔,公司间查询 15-25 秒间隔,搜索前 1 秒冷却,避免固定节奏被识别为机器人。
指数退避重试
触发 WAF 后采用指数退避策略(8s → 16s → 32s → 上限 90s),最多 3 次重试,自动恢复查询。
验证码复用机制
搜索成功后缓存验证码,详情查询首次尝试复用。减少 50% 的验证码请求量,降低被 WAF 标记的风险。
关键调度参数
界面设计
采用 Vuesax 设计系统风格 + Protocol TailwindUI 背景图案,兼顾专业感与现代美感。
设计原则
采用 Vuesax 设计系统 的圆角卡片 + 柔和阴影,Protocol TailwindUI 的倾斜网格背景和渐变光晕,营造专业而不冰冷的工具感。
关键交互细节
状态标记:红色左边框 = 新增执行案件(风险信号),绿色左边框 = 撤销(恢复正常),颜色语义对齐法律直觉
渐进披露:列表只显示案号和立案时间,点击才展开详情弹窗
快速芯片:预设常用查询对象,一键填入,减少重复输入
UI 演变历程
设计系统
案件雷达 Design System
Vuesax + Protocol TailwindUI · 统一视觉语言
Color Tokens
Buttons
Status Tags
Typography
页面标题 H1
卡片标题 H2
正文描述 Body
标签 / 徽章 Label
成果与反思
验证码识别成功率
ddddocr OCR 引擎
效率提升
23 家公司一键完成
WAF 封锁(正常使用)
智能调度策略有效
关键 Bug 修复
dePartyCardNum 是加密令牌不是身份证号
搜索结果中的 dePartyCardNum 字段是服务端生成的加密 Session 令牌,需同时传递 cardNumNewDel 和 dePartyCardNumNewDel 两个参数。
终本案件详情页 HTML 结构不同
普通详情包含 pnameDetail 元素,终本案件包含 zbTbody 表格。需要两种解析器分别处理。
结果重复 — 复合键去重
仅用 caseCode 去重不够,改为 caseCode | cardNum 复合键去重,彻底消除重复记录。
项目反思
政务系统的信息安全防护(WAF)是自动化工具的核心挑战,随机间隔 + 指数退避 + 验证码复用三层策略能有效规避封锁。
dePartyCardNum 这类看似 ID 实为加密令牌的字段设计,体现了政务系统对数据安全的重视,逆向时需要大量试错。
从 V1 到 V2 的历史变更追踪功能是用户最需要的升级 — 法律从业者关心的不是“有什么”,而是“变了什么”。