基于 Plasmo 的 MV3 Chrome 扩展,执行浏览器端的多平台内容抓取。领取后端下发的采集任务,打开目标页,按平台专属插件抓取结构化数据并回传。
Service Worker:通过 chrome.alarms 轮询任务、标签页生命周期管理、自动关闭定时器、content 脚本与后端之间的消息路由。
内容脚本:检测当前 URL 主机名,分发到对应平台插件。处理两种任务模式——"舆情"(采集)与 "API"(直接调后端)。
React 弹窗 UI:轮询控制与后端 URL 配置。
scripting · activeTab · storage · sidePanel · contextMenus · webNavigation · search · tabs · cookies · alarms · notifications
utils/plugin/)30+ 平台专属采集器,每个遵循统一模式:
sessionStorage 轮询任务信息,遍历搜索结果,抽取条目 URL/元素。chrome.runtime.sendMessage 送回后端。isWithinTimeRange() 配合 enhancedSmartTimeToISO() 解析中文日期。DetailConcurrencyScheduler 调度。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 | 解析查验结果 |
① 等验证码图片刷出 → 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.ts | HTML→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
@ianvs/prettier-plugin-sort-imports,路径别名 ~ 映射项目根。无 ESLint。chrome-pa-api/ 与 chrome-pa-plugin/),提交须在正确子目录。全部业务逻辑、注释、类型枚举、UI 文本均为中文。无自动化测试,改动需手动验证。chrome.storage.local);② 采集税务发票查验平台时调验证码识别服务(地址在采集器内配置)。构建期要 Node.js + pnpm。