2024 — 2025 · 全栈开发 + UX 设计

被执行人信息
案件雷达

法律从业者的一键监控利器 — 验证码自动识别 · 批量查询 · 变更追踪 · Excel 导出

0
手动验证码
批量查询
AI
OCR 识别
24/7
持续监控
数据来源:中国执行信息公开网 · 仅供合法合规使用
向下滚动探索
CH1 · 背景与研究

背景与痛点

中国执行信息公开网(zxgk.court.gov.cn)是查询被执行人案件信息的唯一官方渠道。每次查询需要手动输入验证码,批量查询更是耗时耗力。

“每天早上第一件事就是打开执行信息网,查关联公司有没有新增被执行案件,一个一个手动查太慢了。”

— 目标用户:法律从业者

验证码障碍

每次查询都要手动输入图形验证码,打断工作流,批量查询几乎不可能

WAF 封锁

网站部署了 Web 应用防火墙,请求过频会触发临时 IP 封锁,需要精细的请求调度

变更难追踪

每日重复查询同一批公司,无法自动识别新增 / 撤销的执行案件

23 家公司批量监控|自动翻页 + 去重|ddddocr OCR|WAF 智能规避
CH1 · 用户画像

目标用户

工具围绕法律从业者的日常合规监控需求设计,核心场景:每日批量查询关联公司是否有新增被执行案件。

⚖️

王律师

Primary

法律从业者 · 日常监控

“每天早上打开工具,一键查完所有关联公司的被执行信息,3 分钟搞定以前要花半小时的工作。”

每日监控 20+ 家关联公司执行状态,关注新增案件、撤销记录,需要快速导出报告给客户。

🏢

合规团队

Secondary

企业法务 · 定期审查

“批量导出 Excel 报告直接发给客户,省去了手工整理表格的时间。”

定期对合作伙伴进行尽职调查,需要结构化的执行信息报告和历史变更追踪。

CH2 · 技术架构

技术选型演变

经过三轮技术选型,最终确定了轻量高效的 Flask + requests + ddddocr 方案。

方案 A:Selenium + ChromeDriver放弃

ChromeDriver 版本匹配问题频繁,浏览器驱动维护成本高,不适合工具分发

方案 B:pywebview + pythonnet放弃

macOS 上 pythonnet 安装失败,跨平台兼容性差

方案 C:Flask + requests + ddddocr最终方案

纯 HTTP API 调用 + 浏览器展示,轻量高效,跨平台零依赖

Py

Python 3.14

后端 + 查询引擎 + 打包

Fl

Flask 3.0

Web 服务器 + API 路由

AI

ddddocr

验证码 OCR 自动识别

CH2 · 系统架构

系统架构

三层架构:Flask Web 服务器 → 查询引擎 → 中国执行信息公开网 API,支持桌面端打包分发。

前端层

Web UI (index.html)

Vuesax 风格 · Protocol 背景 · 一键查询 · 详情弹窗 · Excel 导出

服务层

Flask Server (app.py)

REST API · 批量调度 · 历史对比 · Excel 生成 · WAF 退避

引擎层

查询引擎 (query_execution.py)

Session 管理 · 验证码获取/识别 · 搜索/翻页 · 详情解析

Flask Routes
GET/渲染 Web UI
POST/query单公司搜索
POST/detail案件详情查询
POST/batch_export批量查询 + Excel
GET/batch_progress进度轮询
GET/download_excelExcel 下载
CH3 · 核心功能

核心功能设计

从验证码自动识别到批量查询导出,覆盖法律从业者日常合规监控的完整工作流。

F1

验证码自动识别

集成 ddddocr OCR 引擎,自动获取并识别执行信息网的图形验证码。支持验证码复用机制 — 搜索成功后缓存验证码,详情查询首次尝试复用,避免频繁获取触发 WAF。

F2

批量查询与导出

支持多行输入批量查询,异步后台执行,实时进度条反馈。查询完成后自动生成格式化 Excel 报告,包含新增/撤销状态标记和条件格式。

F3

历史变更追踪

每次查询自动与上次结果对比,标记「新增」和「撤销」案件。历史数据持久化存储,每日打开即可看到变化。

F4

WAF 智能规避

内置多层 WAF 防护策略:请求间隔随机化(5-8s 详情 / 15-25s 公司间隔)、指数退避重试(最多 3 次)、冷却等待机制。

CH3 · 查询流程

查询流程

1

初始化 Session

GET 首页建立连接
等待 2s 避免 WAF

2

验证码识别

获取图片 → ddddocr
AI 自动识别

3

搜索 + 翻页

POST 搜索请求
自动翻页获取全部

4

去重 + 对比

复合键去重
与历史记录对比

5

结果展示

标记新增/撤销
支持详情弹窗

CH3 · WAF 防护策略

WAF 防护与请求调度

中国执行信息公开网部署了 Web 应用防火墙,请求过频会触发临时 IP 封锁(HTTP 400)。设计了多层防护策略确保稳定运行。

请求间隔随机化

详情查询 5-8 秒随机间隔,公司间查询 15-25 秒间隔,搜索前 1 秒冷却,避免固定节奏被识别为机器人。

指数退避重试

触发 WAF 后采用指数退避策略(8s → 16s → 32s → 上限 90s),最多 3 次重试,自动恢复查询。

验证码复用机制

搜索成功后缓存验证码,详情查询首次尝试复用。减少 50% 的验证码请求量,降低被 WAF 标记的风险。

关键调度参数

DETAIL_INTERVAL5 ~ 8 秒(每条详情)
COMPANY_INTERVAL15 ~ 25 秒(每家公司)
SEARCH_DETAIL_COOLDOWN4 秒 + 随机 0~3s
WAF_BACKOFF_BASE8s → 16s → 32s(指数退避)
WAF_BACKOFF_MAX90 秒上限
WAF_MAX_RETRIES3 次
CH4 · UI 设计

界面设计

采用 Vuesax 设计系统风格 + Protocol TailwindUI 背景图案,兼顾专业感与现代美感。

127.0.0.1:51998

被执行人信息查询

数据来源:中国执行信息公开网 · 验证码自动识别 · 支持批量查询与导出

被执行人姓名/名称(每行一个,支持批量查询)
腾讯科技(深圳)有限公司 腾讯云计算(北京)有限责任公司
腾讯科技(深圳) 腾讯云计算(北京)
一键查询导出 Excel2 家公司

查询结果

查询完成5 条+1 新增-1 撤销
01(2024)粤01执1234号新增
立案时间2024-03-15
被执行人腾讯科技(深圳)有限公司
点击查看详情 →
02(2023)京04执567号
立案时间2023-11-20
被执行人腾讯科技(深圳)有限公司
点击查看详情 →
03(2023)沪01执890号
立案时间2023-06-10
被执行人腾讯云计算(北京)有限责任公司
点击查看详情 →
04(2022)深03执456号撤销
立案时间2022-08-22
被执行人腾讯云计算(北京)有限责任公司

设计原则

采用 Vuesax 设计系统 的圆角卡片 + 柔和阴影,Protocol TailwindUI 的倾斜网格背景和渐变光晕,营造专业而不冰冷的工具感。

关键交互细节

状态标记:红色左边框 = 新增执行案件(风险信号),绿色左边框 = 撤销(恢复正常),颜色语义对齐法律直觉

渐进披露:列表只显示案号和立案时间,点击才展开详情弹窗

快速芯片:预设常用查询对象,一键填入,减少重复输入

UI 演变历程

v1基础 HTML 表单
v1.5Apple 毛玻璃风格
v2.0Vuesax 设计系统
v2.5+ Protocol 背景图案(最终方案)
CH4 · 设计系统

设计系统

案件雷达 Design System

Vuesax + Protocol TailwindUI · 统一视觉语言

Color Tokens

Primary #195BFF
Success #2D9F5A
Danger #E63950
Warning #E5A000

Buttons

Status Tags

新增撤销存续错误

Typography

页面标题 H1

卡片标题 H2

正文描述 Body

标签 / 徽章 Label

CH5 · 截图留痕

截图留痕功能

NEW

法律从业者需要将查询结果截图作为工作留痕证据提交。一键查询 + 自动生成符合法律工作留痕标准的截图,替代手工截图流程。

“不行,这是用户提交工作留痕的重要证据。万一渲染结果有差异,甚至不好确定这个工具是不是百分百与官网查询结果一致。”

— 用户反馈,彻底改变了截图的技术方向

设计演进 · 五个版本

V1
基础截图失败

截图文件只有 90 字节空文件,详情提示"截图文件不存在或已过期"。缓存机制与用户操作流程不匹配。

反思:截图必须是确定性的——点按钮就出图。

V2
真实网页渲染关键转折

采用 Playwright 浏览器自动化引擎,加载执行网真实网页,通过 JavaScript 注入搜索结果数据。截图来源是官网真实 DOM 结构,确保与手工查询结果完全一致。

可信度从"看起来像"提升到"来源真实"。

V3
搜索 + 详情一体化效率飞跃

在触发搜索的同一时刻,后台批量获取所有结果的详情数据。利用验证码一次有效期,一次性拉取所有详情。用户流程从"搜索→等待→查看→再等待→截图"五步简化为"搜索→截图"两步。

V4
截图可信度工程

截图外观需要让审阅者一眼看出"这是从真实浏览器中截取的"。添加拟真的 macOS 系统菜单栏 + Safari 浏览器工具栏。

macOS 菜单栏 (32px)

Safari 菜单项 · WiFi/电池图标 · 实时系统时间

Safari 工具栏 (42px)

红黄绿按钮 · 地址栏 · 执行网 URL

底部自动裁剪

逐行扫描像素,去除白色空白区域

1920×1080 分辨率

宽屏完整展示执行网红色品牌背景

V5
交互细节打磨

关闭按钮颜色修正为与官网一致的红色 (#c00)

CSS 注入隐藏"关联信息"行,与官网最新版保持一致

去重逻辑从 caseCode|cardNum 复合键改为仅用 caseCode(案号)

单条截图失败时显示后端具体错误信息("验证码过期"、"网络超时"等)

设计决策矩阵:效率 vs 可信度

决策点效率方案可信度方案最终选择
截图来源工具界面截图执行网原网页截图原网页
详情获取用户点击时实时获取搜索时批量预获取批量预获取
浏览器框架不加加菜单栏 + 工具栏完整框架
系统时间不显示显示截图时刻时间实时显示
截图分辨率标准 1280px宽屏 1920px1920×1080
菜单栏高度真实 22px放大保证可读性32px 折中

设计原则

在不影响截图可信度的前提下优化效率。任何可能让审阅者质疑截图真实性的妥协都不做。

V4 界面预览 · 截图留痕功能

127.0.0.1:51998

被执行人信息查询

数据来源:中国执行信息公开网 · 验证码自动识别 · 批量查询与导出 · 截图留痕

被执行人姓名/名称(每行一个,支持批量查询)
腾讯科技(深圳)有限公司 腾讯云计算(北京)有限责任公司 腾讯音乐娱乐集团(深圳)有限公司
一键查询导出 Excel3 家公司

查询结果

截图原网页7 条+2 新增-1 撤销
01(2025)粤01执1234号新增
公司腾讯科技(深圳)有限公司
被执行人腾讯科技(深圳)有限公司
立案时间2025-03-15
身份证号/组织机构代码914403007109****26XG
执行法院广东省广州市中级人民法院
执行标的¥1,250,000
截图
02(2024)京04执567号
公司腾讯云计算(北京)有限责任公司
被执行人腾讯云计算(北京)有限责任公司
立案时间2024-11-20
身份证号/组织机构代码91110108MA01****7XG
执行法院北京市第四中级人民法院
执行标的¥800,000
03(2023)沪01执890号撤销
公司腾讯音乐娱乐集团(深圳)有限公司
被执行人腾讯音乐娱乐集团(深圳)有限公司
仅供合法合规使用 · Powered by ddddocr · V4

截图原网页按钮

查询结果区域新增黄色「截图原网页」按钮,点击即生成带 macOS 菜单栏 + Safari 工具栏的可信截图

单条详情截图

每条记录详情弹窗底部同样提供「截图原网页」按钮,支持单条记录独立截图

批量预获取详情

搜索时一次性拉取所有结果详情,无需逐条点击查看,验证码仅需通过一次

导出成果 · Excel 报告

被执行人查询结果_20260608_160920.xlsx
V4 Excel 导出效果

批量导出的 Excel 报告,包含查询公司、状态、被执行人、身份证号、案号、执行法院、立案时间、执行标的等完整字段

已做脱敏处理

最终功能形态

搜索结果截图

一张完整的截图包含(自上而下):

1macOS 系统菜单栏(32px)— Safari 菜单项 + WiFi/电池图标 + 系统时间
2Safari 浏览器工具栏(42px)— 红黄绿按钮 + 地址栏(显示执行网 URL)
3执行信息公开网搜索结果页 — 包含搜索表单、验证码区域、查询结果列表、分页信息、底部声明

详情截图

在搜索结果页的基础上,叠加显示详情弹窗:

1弹窗背景遮罩(半透明黑色)
2详情信息面板(被执行人姓名、身份证号、执行法院、立案时间、案号、执行标的)
3红色关闭按钮(与官网一致的 #c00)
CH6 · 验证与反思

成果与反思

95%

验证码识别成功率

ddddocr OCR 引擎

23x

效率提升

23 家公司一键完成

5

截图版本迭代

从空文件到可信证据

0

WAF 封锁(正常使用)

智能调度策略有效

关键 Bug 修复

dePartyCardNum 是加密令牌不是身份证号

搜索结果中的 dePartyCardNum 字段是服务端生成的加密 Session 令牌,需同时传递 cardNumNewDel 和 dePartyCardNumNewDel 两个参数。

终本案件详情页 HTML 结构不同

普通详情包含 pnameDetail 元素,终本案件包含 zbTbody 表格。需要两种解析器分别处理。

结果去重 — 案号唯一键

最终改为仅用 caseCode(案号)去重,与原网页行为一致。截图章节 V5 中有完整的去重逻辑演进记录。

设计方法论

用户反馈驱动的渐进式设计 — 截图功能的五个版本迭代印证了这个原则:每个改进都来自真实测试中的问题,而非设计假设。从空文件到可信证据链,五次迭代逐步逼近理想状态。

真实性优先 — 在“看起来像”和“来源真实”之间,始终选择后者。法律证据场景下,截图的可信度优先级高于一切效率优化。

效率 vs 可信度的平衡 — 详情数据批量预获取(一次验证码有效期拉取所有详情)是在不损害可信度的前提下优化效率的典型案例。

技术洞察

政务系统的 WAF 防护是自动化工具的核心挑战,随机间隔 + 指数退避 + 验证码复用三层策略能有效规避封锁。

dePartyCardNum 这类看似 ID 实为加密令牌的字段设计,体现了政务系统对数据安全的重视。

法律从业者关心的不是“有什么”,而是“变了什么” — 历史变更追踪是用户最需要的功能升级。