Project Atlas 知识图谱 / 舆情系统 / Chrome 采集插件 ← 返回图谱
🧩

Chrome 采集插件 chrome-pa-plugin

基于 Plasmo 的 MV3 Chrome 扩展,执行浏览器端的多平台内容抓取。领取后端下发的采集任务,打开目标页,按平台专属插件抓取结构化数据并回传。

Plasmo 0.90 Manifest V3 TypeScript 5.9 React 18 30+ 平台
本页导航
三大入口 平台插件 税务发票查验 + 验证码 关键工具 数据流 构建 关联

# 一、三大入口

background.ts

Service Worker:通过 chrome.alarms 轮询任务、标签页生命周期管理、自动关闭定时器、content 脚本与后端之间的消息路由。

content.ts

内容脚本:检测当前 URL 主机名,分发到对应平台插件。处理两种任务模式——"舆情"(采集)与 "API"(直接调后端)。

popup.tsx

React 弹窗 UI:轮询控制与后端 URL 配置。

MV3 权限

scripting · activeTab · storage · sidePanel · contextMenus · webNavigation · search · tabs · cookies · alarms · notifications

# 二、平台插件(utils/plugin/)

30+ 平台专属采集器,每个遵循统一模式:

新增平台插件:复制 utils/plugin/platform-template.ts 重命名,实现 URL 检测与 DOM 选择器;在 content.ts 注册 URL 匹配与 init 调用;在 types/index.d.ts 的 PlatformSource 类型里加平台名。

# 三、税务发票查验 + 验证码识别

插件中有一类特殊的"直采详情"采集器(utils/plugin/directDetail/),针对全国增值税发票查验平台 inv-veri.chinatax.gov.cn。该平台提交查验前需填写彩色验证码(红/蓝/黄字),插件借助独立的验证码识别服务自动破解。

文件职责
directDetail/chinatax.ts旧版采集器:调验证码服务 /recognize
directDetail/chinataxV2.ts新版:调 /recognize_base64,支持四色意图,带准确率反馈
directDetail/chinataxResult.ts解析查验结果

验证码求解流程(chinataxV2)

① 等验证码图片刷出 → imageToBase64()
② 读页面提示文字当 prompt("请输入红色文字"等)
③ POST <验证码服务>/recognize_base64  { img_base64, prompt }
④ 拿到 text → 填入 #yzm → 提交查验 queryFpcyxx
⑤ 以税务局接口响应判定对错:
     ├─ 通过 → 采集结果
     └─ 验证码错误 → 指数退避重试、刷新验证码(上限次数)
⑥ POST /label/feedback 上报对错 → 验证码服务准确率统计 + 再训练
插件侧颜色意图 全部/红色/蓝色/黄色 与验证码服务的 intent_rules 对应。服务地址在采集器内配置(示例 http://192.168.113.70:8123,端口随部署环境)。验证码对错以税务局 queryFpcyxx 响应为准,仅接口明确判定验证码错误才算错,其余情况视为通过。

# 四、关键工具

文件职责
utils/config.ts后端 URL,存于 chrome.storage.local
utils/date.ts中文日期解析("3小时前"、"昨天"、"2024年1月")
utils/domRetriever.ts基于重试的 DOM 元素获取
utils/mouse.ts鼠标事件模拟(需点击交互的平台)
utils/messaging.ts带重试的安全 chrome.runtime.sendMessage
utils/index.tsHTML→Markdown(Turndown)、图片过滤、DOM 辅助
libs/taskPoller.ts基于 chrome.alarms 的轮询,状态持久化到 chrome.storage.local

# 五、数据流

TaskPoller 轮询 GET /get-not-started-task
        │
        ▼
background 打开任务 URL 标签页
        │
        ▼
content 脚本按域名分发到平台插件
        │
        ▼
插件抓取 列表页 / 详情页
        │
        ▼
POST /sentiment-monitor/data  (经 background 消息中继)

# 六、构建

# 安装依赖
pnpm install

# 开发(热重载),可切环境 dev / prod / 217
pnpm dev
pnpm dev:prod

# 生产构建,输出到 build/chrome-mv3-prod/
pnpm build

# 打包分发 / 构建 MV2 版本
pnpm package
pnpm build:v2
代码风格:Prettier(无分号、双引号、无尾逗号、80 宽),导入排序用 @ianvs/prettier-plugin-sort-imports,路径别名 ~ 映射项目根。无 ESLint。
采集端为两个独立 git 仓库(chrome-pa-api/ 与 chrome-pa-plugin/),提交须在正确子目录。全部业务逻辑、注释、类型枚举、UI 文本均为中文。无自动化测试,改动需手动验证。

运行依赖

浏览器扩展,自身不接数据库 / MQ / 对象存储。运行时依赖两个 HTTP 服务:① 采集后端 chrome-pa-api(领任务 / 回传数据,地址存 chrome.storage.local);② 采集税务发票查验平台时调验证码识别服务(地址在采集器内配置)。构建期要 Node.js + pnpm。

# 七、关联

Project Atlas · 返回知识图谱 · 如何维护