【课堂作业】第一节课:我做了一个卡淘平台单卡统计价格的浏览器插件

个跑在卡淘(cardhobby.com.cn)页面上的小工具:在卡淘里搜一张卡,点一下按钮,就告诉你这张卡近期成交在什么价位。


它解决什么问题

在卡淘上看某张卡的行情,通常得自己一页页翻已售记录,用眼睛记价格,还得区分竞拍和一口价、还得手动抠掉运费。这个扩展把这套动作自动化:

  • 直接读站内已售列表接口,拿真实成交价
  • 成交价不含运费(用的是卡片大字价格字段,运费是另一个字段)
  • 自动分 全部 / 一口价 / 竞拍
  • 给出样本数、平均价、中位数、最高价、最低价
  • 明细可导出 CSV,也支持把 CSV 导回来继续统计

1. 背景

卡淘查一张卡的成交价只能手翻"已售"列表:口径混乱(竞拍/一口价混杂)、运费干扰、无法快速得到价格区间。

2. 目标

在搜索结果页一键获得该关键词的成交价画像(近 1 月 / 近 3 月),支持导出明细。用户:买前查行情、卖前定价。

非目标:不做交易、不批量爬站、不做提醒、不做服务端。

3. 方案

Chrome MV3 扩展,内容脚本用同源 Cookie 直调站内接口 SearchCommodity;UI 挂 Shadow DOM;缓存存 chrome.storage.local。

分层:api.js(站点适配,改版只改此文件)/ stats.js(清洗统计)/ content.js(交互状态)。

4. 功能

# 需求 优先级
F1 页面悬浮按钮开合统计面板 P0
F2 关键词自动读取(兼容 %uXXXX 解码),URL 优先 P0
F3 已售出 / 出售中两种范围 P0
F4 近 1 月 / 近 3 月:样本数、平均、中位、最高、最低 P0
F5 全部 / 一口价 / 竞拍分组 P0
F6 成交价不含运费 P0
F11 默认拉 1 页,手动"再翻一页"累加;<60 条或 80 页终止 P0
F7 成交明细列表,可跳详情页 P1
F8/F9 CSV 导出 / CSV、JSON 导入合并去重 P1
F10 本地缓存,离线可看 P1
F12 覆盖度提示(是否需再翻页) P1
F13 跟随页面切词自动重置 P1
F14 清空缓存同时重置关键词记忆 P2

未做:自动翻页覆盖 3 个月、价格走势图/提醒。

5. 字段口径(锁死)

含义 字段 说明
商品 ID ID 去重主键
成交价 LowestPrice 不含运费
运费 NewPostageMoney 仅展示
成交时间 EffectiveDate 兼容多种格式
交易方式 ByWay 1=一口价,2=竞拍

筛选:Status=-2 已售 / 1 在售;排序按结束时间倒序。
有效记录:价格>0 且时间可解析,按 ID 去重(后到覆盖先到)。

6. 非功能

串行请求、翻页间隔 500ms,不并发不自动无限翻;数据只存本地;仅申请 storage 权限、仅注入 cardhobby 域;接口异常区分"未登录"与"无数据"。

7. 已知风险

  • 一口价样本未验证,LowestPrice 在 ByWay=1 下含义待确认
  • 站点已售列表约 5000 条上限,TotalCount 不可靠
  • 依赖登录 Cookie,未登录不可用
  • 站点改版需改 api.js
1 个赞