跳到正文
文档导航 · 无标签页网页采集与 AI 分析开发公约
脚本开发

无标签页网页采集与 AI 分析开发公约

可直接交给 AI 阅读的开发流程、完整示例与验收边界。

本页目录

修订日期:2026-09-21。适用于需要在用户无感知的情况下,通过目标网站现有登录会话采集多批数据,并交给网页 AI 服务分析的脚本。

本文的“无标签页”指任务运行时不创建、不导航、不复用目标网站标签页。用户为了登录目标网站或刷新已失效的 AI 会话而主动打开网页,不属于任务自动打开标签页。

1. 先确认无标签页是否成立

offscreen 适合“后台请求 + 响应解析”。它可以用 DOMParser 解析返回的 HTML,但拿不到目标网站真实页面的 DOM,也不存在可以模拟的鼠标滚轮。

  • 只要业务能够通过 HTML、JSON、SSE 或网站连续加载接口完成,就应使用 offscreen。
  • 必须操作真实控件、页面 JS 对象、Canvas 状态或只能由前端交互产生的数据时,才使用 page。
  • 不得把创建 active:false 标签页描述成无标签页;它仍会出现在标签栏。
  • 用户明确要求无标签页时,接口失效应返回明确错误,不得静默降级为打开后台标签页。

2. 无限滚动的后台等价实现

无标签页模式不能真实下滑。它应复现下滑触发的“加载下一批数据”网络链路:

  1. 请求第一批搜索 HTML,并携带当前浏览器会话。
  2. 优先读取响应里的 continuation URL、next token、load-more URL 或 AJAX URL。
  3. 传统分页页面应跟随响应中的真实下一页链接,不要先猜 page=2。
  4. 只有响应没有暴露下一批地址时,才尝试已验证的页码参数兼容路径。
  5. 限制最大批次数、最大商品数、单次响应大小和总超时。
  6. 记录已经访问的 URL、continuation token 与批次指纹;地址或结果重复时停止,避免死循环。
  7. continuation 地址必须重新做协议、同源和授权范围检查,不能把页面返回的任意 URL 直接交给网络桥。

如果站点把下一批逻辑完全藏在运行时 JavaScript 中,响应里没有可验证的地址或 token,后台任务应报告“无法继续加载”。开发者应重新取得网络证据后升级解析规则,而不是虚构后续页数据。

3. 排名、重复展示和商品去重必须分层

搜索结果里的“展示记录”和“商品实体”不是同一个概念。一个 ASIN 可能同时出现在广告位和自然位,也可能在相邻批次边界重复。

正确顺序如下:

  1. 每张搜索卡片先保存为展示记录,保留 ASIN、展示类型、结果标识、商品规范路径和原始顺序。
  2. 无限加载的累积快照使用公共前缀识别新增部分。
  3. 分页或 continuation 批次使用上一批尾部与下一批头部的序列重叠识别边界重复。
  4. 先为展示记录计算展示排名和自然排名,再按 ASIN 聚合商品实体。
  5. 同一 ASIN 的广告位、自然位及所有位置应分别保留,不能用一个 Set(ASIN) 提前删除。
  6. 变体必须以真实 ASIN 区分;标题或图片相同不能作为商品身份。

采集与聚合阶段应保留 ad_positions、organic_positions 和完整 placements,再从中生成最终商品对象的 search_rank、ad_rank、natural_rank 与 rank_type。用户选择“仅自然排名”时只改变纳入分析的口径,不能篡改原始展示事实。

4. AI 只能判断图片,不能生成采集事实

ASIN、标题、图片链接、商品链接、价格、评分、Review 数量、广告标识和排名必须来自采集结果。AI 只负责根据实际可见的商品主体完成全局互斥款式聚类。

  • 提示词必须给出带图片可用状态的 ASIN 白名单,并要求只返回一个严格 JSON 对象。
  • 每个图片可用的 ASIN 必须恰好进入一个款式组,包括没有相似款的单独组;图片不可用的商品不得进入聚类。
  • 固定 Prompt 必须要求全量盘点、视觉结构指纹、候选组、代表款、组内冲突检查、链式合并拆分和互斥完备复核;用户 Prompt 不能覆盖固定协议。
  • 返回后必须验证顶层只有 assignments、每项只有 asin/cluster_id、ASIN 白名单完整、无重复成员、无遗漏且组编号格式合法。
  • 同质化分数、覆盖率、关键词集中度和主要款式占比全部由脚本按照公开公式计算,不能接受 AI 自报分数。
  • 标题、价格、材质、尺寸、功能和商品质量等事实不得由 AI 补全或评分。
  • AI 会话是否删除与业务记录是否保留是两件事;删除临时对话不能删除任务和分析结果。

5. 图片与二进制只在任务期间存在

批量图片分析可以把商品图分批拼成对比图,但二进制内容只用于本次上传:

  • 控制图片下载并发、单图大小、拼图商品数和总批次数。
  • Blob、ArrayBuffer 和 Multipart 使用运行时二进制通道,不要转成巨大 JSON 字符串。
  • 不要把拼图转换成 Base64 塞进任务报告或本地业务记录。
  • 上传结束后释放 ImageBitmap、Blob 引用和临时传输记录。
  • 结果只保存原始图片 URL、加载状态和必要的短错误摘要。

6. 本地数据必须按真实容量设计

当前本地业务数据单条记录上限为 1 MiB。任务成功、AI 返回成功或任务报告可下载,不代表业务记录已保存。

对于业务上要求“一次任务是一份报告”的场景,可以把最多 100 个商品保存为一条聚合记录:顶层保留任务编号、关键词、站点、排名口径、统计和采集时间,products 数组内每个 ASIN 只出现一次,页面事实和 AI 视觉分析在同一对象中合并。

聚合不等于无限增大:写入前必须对实际 UTF-8 JSON 字节数做预检,并预留封装开销。超过安全上限时明确要求用户减少商品数,不得静默截断、拆成用户未要求的多条记录,也不得重复保存 products、等价的 analysis_text 或图片 Base64。保存回执必须核对数据集、插入/更新/跳过数量和错误数组;保存失败要让任务明确显示失败原因,不得只返回 AI 成功消息。

7. 登录会话与安全边界

需要网页 AI 登录态时,页面注入只捕获完成后台协议所需的最小字段,并写入按脚本隔离的 Session Bridge。

  • 后台任务可以读取自己的会话快照,普通网页捕获端不能回读。
  • 会话快照必须有大小和有效期限制,过期后要求用户重新登录并刷新目标网站。
  • Cookie、Token、机器人授权信息和完整请求头不得进入日志、任务报告、本地业务数据或 Worker。
  • 网络桥对初始 URL、重定向和 continuation 地址逐次校验 @match / @connect 权限。
  • AI 平台协议变化时应返回结构化登录或协议错误,不能输出原始认证响应。

8. 发布前验收

至少覆盖以下验证:

场景必须验证的结果
传统分页跟随真实下一页地址,达到数量后停止
continuation优先使用同源连续加载地址或 token
地址重复不死循环,不重复累计排名
批次边界重复只去除经序列确认的重叠
广告与自然位同 ASIN两类排名均保留
AI 编造 ASIN拒绝结果,不写入业务数据
1 张或多张拼图不把 Base64 写入任务或本地记录
100 个商品单份聚合 JSON 在安全容量内写入并可读回;超限时不截断不拆分
登录失效、验证码、限流明确错误,不偷偷打开标签页
跨域 continuation网络请求被拒绝

单元测试只能证明解析和边界逻辑。目标网站经常进行 A/B 发布,正式上线前仍应使用已登录浏览器完成一次真实端到端验收,并在文档中区分“仓库测试通过”和“真实站点已验证”。

9. 本次 Amazon AI 脚本经验

Amazon 搜索同质化分析脚本 3.2.6 使用 offscreen 模式:任务不创建 Amazon 标签页;后台优先识别 continuation,再兼容传统下一页和页码参数;展示记录完成排名后才按 ASIN 聚合。DeepSeek/豆包只返回每个可见 ASIN 的唯一 cluster_id,不返回商品事实、主观质量分、两两配对或最终百分比。脚本负责 ASIN 白名单、聚类完备性、互斥性、字段封闭性和图片可用性校验;任何遗漏、重复、编造、额外字段或把图片失败商品加入聚类的结果都会整份拒绝,避免污染数据。

运行设置会预填完整的聚类 Prompt,用户可以修改“什么算同款”的业务标准;JSON 结构、全局互斥聚类步骤、ASIN 白名单和反幻觉约束属于脚本固定契约,不能被自定义 Prompt 覆盖。3.2.3 将口径从“几乎完全同款”校准为“消费者视角的市场款式族”:以宏观架构/拓扑、核心功能组成和整体形态为主要依据,忽略颜色、纹理、品牌、拍摄背景和局部配件小幅差异;模型必须先建立市场结构原型,再对每个单例与所有原型进行二次复核,同时保留防传递链误合并规则。最终仍只能输出 assignments,本次用户 Prompt 写入 analysis_prompt_used,便于复现和审计。

DeepSeek 网页协议的“文件上传成功”不等于“模型已可读”。3.2.4 起,脚本会按网页端同样的流程调用 GET /api/v0/file/fetch_files,等待每张拼图从 PENDING/PARSING 进入 SUCCESS 后才发起 completion。任一附件解析失败或 90 秒超时时,应直接使任务失败并报告附件状态,不得在模型未读取图片的情况下保存“全部单例 / 0 分”结果。

3.2.5 起,视觉聚类必须启用模型推理,并采用“两阶段全局聚类”:先合并同型号/系列、仅颜色材质等非结构差异的兄弟变体,再归纳更广义的市场结构原型。提示清单可以携带页面采集的标题作为型号与变体辅助证据,但主图仍是结构判定的主要证据;不得仅因标题文字接近而合组。每个单例必须与所有已有组和其他单例复核,避免把明显的系列变体错误拆成大量单例。

3.2.6 起,聚类输入清单彻底移除标题,AI 只接收商品主图及用于映射的序号/ASIN。默认规则改为“动态原型锚定 + 全局桶分配 + 组内纯度回查”:从当前图片动态推导结构维度和硬/软差异,不预设原型数量,不使用固定权重、80% 阈值或模型自报百分比;每个成员必须直接符合真实代表原型,禁止链式传递合并。拍摄角度、背景、颜色和非核心局部通常视为软差异,但在遮挡导致证据不足时不得猜测不可见结构后强行合组。

最终商品对象只保留必要页面事实、广告/自然排名与 homogeneity_score,不重复输出 product_url、price_amount、currency、rating_text 和 review_count_text。当 ASIN 所属款式族仅有自己时,homogeneity_score=0;存在近似款时为 所属款式族商品数 / 有效视觉样本数 × 100。关键词汇总同时给出非单例组商品覆盖率,以及按归一化 HHI 形式计算的 keyword_homogeneity_score = (Σ款式占比² - 1/N) / (1 - 1/N) × 100。所有商品互不相似时集中度为 0,全部属于同一款式时为 100;major_styles 只列出商品数不少于 2 的前 10 个主要款式、代表商品、占比和成员 ASIN。每张拼图从 25 个商品降为 16 个,以保留 AI 缩放后的主体结构细节;拼图只在内存中上传,每次任务只保存一条聚合 JSON,写入前使用 900 KiB 安全线预检。

这些结论已由仓库单元测试和静态检查覆盖;Amazon 当前线上 A/B 结构仍需在每次重大改版后重新取证。

网页与 Markdown 原文使用同一份内容。开发接口与平台实测资料请从左侧对应分类查阅。