Skip to content

🧭 解决思路

ICP Skills 把「人肉点验证码查备案」变成「一行命令查备案」,背后是一条刻意设计的数据获取链路。本文讲清楚它如何做到。

🔗 总体链路

调用方                    ICP Skills                         数据源
┌──────┐   company=    ┌────────────────────┐   API    ┌─────────┐
│ CLI  │ ───────────▶ │  1. 输入归一化       │ ──────▶ │ 创宇盾   │
│ SDK  │              │  2. 凭证选择/轮换    │         │  (主)   │
│ HTTP │              │  3. 限速/重试        │         └─────────┘
└──────┘              │  4. OCR 突破验证码   │   页面  ┌─────────┐
   ▲                  │  5. 结果聚合/去重    │ ──────▶ │ 工信部   │
   │                  │  6. 缓存            │         │  (补)   │
   └── 结构化结果 ◀── └────────────────────┘         └─────────┘

🧱 六个关键设计

1️⃣ 输入归一化

用户输入五花八门:「X 科技有限公司」「x科技」「X科技有限公司(北京)」。ICP Skills 在查询前做一层归一化:去括号、统一全角/半角、剥离地域前缀、公司类型别名映射,让"近义词"也能命中

2️⃣ 凭证选择与轮换

创宇盾等数据源对单凭证有配额。ICP Skills 内置凭证池

  • 支持配置多组 API Key
  • 按配额余量 / 失败次数自动选择
  • 单凭证触发限速后自动切换,避免硬中断

详见 🔑 凭证管理

3️⃣ 限速与重试

  • 令牌桶限速,按数据源独立配额
  • 指数退避重试,区分「可重试错误」与「终态错误」
  • 🛡️ 反爬与限速

4️⃣ OCR 突破点选验证码

部分备案查询页面会弹「请按顺序点选文字」的点选验证码。ICP Skills 内置 👁️ 点选 OCR 集成:

  1. 截取验证码图片
  2. 调用点选 OCR 接口识别文字 + 坐标顺序
  3. 模拟按顺序点击
  4. 失败则重试,超过阈值降级

5️⃣ 结果聚合与去重

一次公司查询可能从多个源、多次分页拉回大量记录。ICP Skills:

  • 按「域名 + 主体 + 备案号」三元组去重
  • 主体信息多源交叉校验,冲突时按可信度排序
  • 🔄 数据聚合

6️⃣ 缓存

  • 查询结果带 TTL 缓存(备案信息变化慢,缓存性价比高)
  • 缓存可禁用、可指定后端(内存 / 文件 / Redis)
  • 📦 cache 包

🧭 为什么是「创宇盾 + OCR」而非单一方案

方案优点短板
纯爬工信部页面数据权威验证码 + 限速,难自动化、易封
纯创宇盾 API结构化、稳定需付费凭证,覆盖未必 100%
创宇盾为主 + OCR 突破页面 + 工信部补全覆盖广、可自动化、可降级需多凭证管理

ICP Skills 选第三条:以结构化 API 为主路径保证效率与稳定性,以 OCR 突破的页面查询为补全路径保证覆盖率,自动降级保证可用性。

📚 延伸阅读

Released under the MIT License.