# 星图达人详情页看后搜率插件实验设计 ## 1. 背景 目标站点为巨量星图达人详情页。当前已经人工确认: - 达人详情页右侧可以看到两个“看后搜率”指标 - 页面 URL 中可观察到稳定的星图达人 ID - `search_session_id` 在短时间实验中看起来可能不变,但不应作为稳定依赖 本次工作不是直接做完整产品,而是做一个最小可验证实验,确认浏览器插件能否自动获取这两个指标。 ## 2. 目标 本实验的目标只有一个: - 在巨量星图达人详情页内,由 Chrome 插件自动拿到两个看后搜率,并以结构化结果输出到控制台或插件侧日志中 成功标准: - 进入达人详情页后,插件无需人工复制数据 - 插件能自动拿到两个目标值 - 输出结果中包含达人标识、页面 URL、命中的请求 URL、两个看后搜率值 - 当两项值都提取成功时,明确标记成功 - 插件注入与拦截不能影响页面原有请求、渲染与交互 - 同一次详情页进入只输出一个最终结果;如果先失败后成功,可以升级为成功结果 ## 3. 非目标 本实验明确不做以下内容: - 不在找达人列表页批量抓取多个达人数据 - 不在列表页直接渲染看后搜率列 - 不复现页面接口签名或自行构造后台请求 - 不依赖 `search_session_id` - 不做插件 UI 美化 - 不做导出、缓存、排序、批处理 - 不接入后端服务或数据库 ## 4. 关键判断 ### 4.1 达人标识 实验阶段将 URL 中的星图达人 ID 作为当前页面达人标识候选值。插件应优先从详情页路径中提取该 ID,并在日志输出中保留。 ### 4.2 会话参数 `search_session_id` 不参与任何业务判断。它更像搜索会话或埋点参数,可能随着入口、刷新、筛选条件或路由变化而变化,不应作为稳定主键。 ### 4.3 数据来源策略 本实验接受复用页面自己发出的请求来拿数据,因此优先方案为: - 在页面上下文中拦截 `fetch` / `XMLHttpRequest` - 解析页面真实收到的接口响应 - 从响应中提取两个看后搜率 这比插件自行复刻请求更适合当前最小实验,因为它不需要单独处理 CORS、Cookie、鉴权、签名和接口重放。 ### 4.4 结果解释边界 如果插件在观察窗口内始终没有拿到完整结果,这只能说明“当前网络拦截路径尚未被证实可行”,不能直接推断为插件实现失败。 也就是说: - 成功命中时,可以证明“网络拦截方案可行” - 持续超时或只拿到无关响应时,只能证明“本轮实验未证实该路径可行” - 若连续多次超时,应转向检查 DOM、内联 bootstrap 数据或更早期的数据注入方式,而不是继续盲目扩展字段匹配规则 ## 5. 方案概览 插件采用 Chrome Manifest V3,先只支持达人详情页。 核心由两层脚本组成: - `content script` - 负责在详情页尽早注入页面脚本 - 负责接收页面脚本传回的数据 - 负责统一打印结构化结果 - `page hook script` - 运行在页面上下文 - 包装 `window.fetch` 与 `XMLHttpRequest` - 拦截和分析候选响应 - 一旦提取到两个看后搜率,通过 `window.postMessage` 发回内容脚本 首版默认不引入以下能力,避免实验面过大: - 不使用 `background service worker` - 不申请 `storage`、`tabs`、`scripting` 等额外权限,除非实现阶段确认必需 - 不做 popup、options page 或独立调试面板 ## 6. 页面范围与前提 ### 6.1 页面匹配范围 首版只匹配达人详情页,例如: - `https://*.xingtu.cn/ad/creator/author-homepage/*` Manifest 约束建议同时写清: - `content_scripts.matches` 只覆盖上述详情页 - `run_at` 使用 `document_start` - 注入到页面上下文的脚本通过 `chrome.runtime.getURL(...)` + `