🎯 一款可定制、具备反检测功能的云浏览器,由自主研发的 Chromium驱动,专为网页爬虫AI 代理设计。👉立即试用
返回博客

亚马逊鲁夫斯抓取API:如何大规模提取亚马逊的对话购物洞察

Sophia Martinez
Sophia Martinez

Specialist in Anti-Bot Strategies

27-Apr-2026

亚马逊 Rufus 抓取 API

亚马逊 Rufus 是一个对话式购物助手,越来越多地驱动亚马逊的购买前研究——回答“这个洗碗机安全吗?”、“这与 M2 型号相比如何?”、“100 欧元以下最佳跑鞋”等问题,提供基于产品的具体回答。对于价格调整工具、比较引擎、品牌监控和 AI 购物管道,Rufus 提供的答案是高杠杆信号。

Rufus 限制在登录的客户会话中,并以服务器推送事件的形式流式输出其响应。这使得通过匿名浏览不可访问且通过DIY抓取集成不切实际。Scrapeless 亚马逊 Rufus 抓取 API 完善解决了这一端到端问题——认证、反机器人令牌、市场路由和流解析都是在服务器端处理,通过一个干净的 HTTP POST 暴露。此指南将逐步讲解所有内容:团队为何使用该 API、请求和响应的工作方式、参数参考、在 Python 和 Node.js 中的集成,以及常见问题及其解决方案。


第 1 部分:为何使用 Scrapeless 亚马逊 Rufus 抓取 API?

Rufus API 将经过身份验证的流式亚马逊界面转化为单个结构化 JSON HTTP 调用。

  • 无需亚马逊登录。 认证由 Scrapeless 处理。调用者永远不会看到登录表单、MFA 提示或 Cookie 罐。
  • 流式响应,已为您解析。 一般情况下,Rufus 响应包含 60-80 个七个事件类型的服务器推送事件块。API 将流拼接成一个单一解析的 result 对象——无需 iter_lines,无需 \n\n 边界检测,也无需在调用者侧进行事件类型派发。
  • 单一参数的市场路由。 domain: "www.amazon.es""www.amazon.com""www.amazon.de"——API 会通过与区域相匹配的住宅代理自动路由。
  • 开箱即用的结构化产品数据。 result.products 返回一个包含 asintitleratingreviewsimage_urlcategoryfooter 编审标签的字典列表——这是 Rufus 为查询策划的集合。
  • 相关问题挖掘。 每个响应还包括 3-5 个 Rufus 生成的后续问题。这些是 SEO 研究、内容规划或链式 Rufus 调用的干净查询扩展来源。
  • 相同的 Scrapeless 账户,相同的仪表板。 Rufus API 使用与 Scrapeless 产品线其他部分相同的 API 令牌——抓取 API、抓取浏览器、通用抓取 API。一个账户,多个界面。

最佳亚马逊 Rufus 抓取解决方案

Scrapeless 亚马逊 Rufus 抓取 API 针对需要 Rufus 的对话式输出作为结构化数据的生产管道而构建,而无需为每个查询运行身份验证的头部浏览器。

  • 服务器端认证。 Scrapeless 保持经过身份验证的亚马逊会话并对其进行轮换。调用者发送查询并获取解析的 JSON 返回。
  • 预解析输出。 默认响应是一个 JSON 信封,里面包含一个已经填充 productsrelated_questionsinterim_messagesrequest_contextresult 对象。对于常见情况无需流式客户端胶水。
  • 可选原始 SSE。 设置 is_sse_data: true 会为需要渐进式 UI 更新或完全保真事件审计的调用者暴露原始的 event:<type>\ndata:<json>\n\n 流。
  • 多市场。 www.amazon.es 经验证的端到端相同的形状适用于其他市场域(.com.co.uk.de.co.jp.com.au.in.com.mx.com.br)。

如何使用 Scrapeless 抓取 API 抓取亚马逊 Rufus

端到端工作流程分为四步:获取 API 令牌,构建请求体,发送 POST,请求解析响应。在 scrapeless.com 注册,复制仪表板上的 API 令牌,并将其存储为环境变量:

bash Copy
export SCRAPELESS_API_TOKEN=sk_your_token_here

端点是 POST https://api.scrapeless.com/api/v1/scraper/request,请求头为 x-api-token: <YOUR_TOKEN>,请求体为 JSON。响应是一个 JSON 信封,其中 result 包含解析后的 Rufus 输出。


如何通过关键词查询抓取 Rufus

这是向 Rufus 提出问题并获取结构化亚马逊相关答案的标准流程。

步骤 1:构建请求体

请求体在 input 下有三个必需字段:type(始终为 "rufus")、keywords(问题或购物意图)和 domain(亚马逊市场)。

json Copy
{
  "actor": "scraper.amazon",
  "input": {
    "type":     "rufus",
    "keywords": "macbook air m3 是否适合视频编辑",
    "domain":   "www.amazon.es"
  }
}

步骤 2:设置参数

keywords 接受自由格式的自然语言查询 — 直接问题(“这个防水吗?”),比较(“M1与M3的视频性能比较”),或购物意图(“适合学生的最好macbook”)。 domain 选择亚马逊市场;将其与您希望Rufus根据其回答的地区对齐。可选的 is_sse_data 布尔值默认为false(解析的JSON封装);将其设置为true以接收原始SSE流。

步骤3:发送请求

通过 x-api-token 头将主体POST到端点。默认响应在5–15秒内以一个分块的HTTP响应到达(对于典型查询约130 KB)。解析JSON,读取 result.productsresult.related_questions

一个典型的成功响应:

json Copy
{
  "html": "id:CHUNK_0\nevent:context\ndata:{...}\n\nid:CHUNK_1\nevent:affordance\n...",
  "metadata": {
    "rawUrl": "https://api.scrapeless.com/storage/scrapeless.scraper.amazon/.../<id>.html",
    "type":   "rufus"
  },
  "result": {
    "request_context":   { "requestId": "TMWTVKB12QFTQEV9D2GJ", "sessionId": "257-9398007-5193547", "bsr": {...} },
    "user_query":        "macbook air m3适合视频编辑吗",
    "interim_messages":  ["检查中...", "收集数据中…"],
    "products":          [ { "asin": "B08N5TLVQ2", "title": "苹果MacBook Air...", "rating": "4.8", "reviews": "2.045", ... }, ... ],
    "related_questions": ["MacBook Air与MacBook Pro的区别", "哪个MacBook更适合学生?", ...],
    "feedback_controls": { "groupId": "...", "text": "..." }
  }
}

Scrapeless亚马逊Rufus抓取API参数

参数 必需 类型 描述
actor 字符串 必须为 "scraper.amazon"
input.type 字符串 必须为 "rufus"
input.keywords 字符串 Rufus的自由格式查询 — 问题、比较或购物意图
input.domain 字符串 亚马逊市场域,例如 "www.amazon.es""www.amazon.com""www.amazon.de"
input.is_sse_data 可选 布尔值 true 时,响应为原始SSE流。当 false(默认)时,响应为解析的JSON封装,包含预填充的 result 对象。

API返回的解析 result 对象:

字段 类型 描述
request_context 对象 服务器端标识符 — requestIdsessionIdbsr(UI行为提示)
user_query 字符串 输入 keywords 的回显 — 对于异步管道中提交请求很有用
interim_messages 字符串数组 本地化的市场加载状态消息(例如 "检查中...""收集数据中…” 适用于 .es
products 对象数组 Rufus整理的产品列表 — 通常包含3-6个项目,包含 asinurltitleratingreviewscategoryimage_urlimage_altfooter
related_questions 字符串数组 Rufus生成的3-5个后续问题 — 可用于查询扩展或链式调用
feedback_controls 对象 Rufus在答案下方显示的点赞/踩反馈字符串

完整API参考:apidocs.scrapeless.com/api-34218448


如何将Scrapeless集成到您的项目中

集成是一个简单的HTTP POST。以下是在Python和Node.js中的工作示例 — 两者都针对规范请求(keywords="macbook air m3适合视频编辑吗"domain="www.amazon.es")。

Python

python Copy
import os
import requests

URL = "https://api.scrapeless.com/api/v1/scraper/request"
HEADERS = {
    "x-api-token":  os.environ["SCRAPELESS_API_TOKEN"],
    "Content-Type": "application/json",
}
BODY = {
    "actor": "scraper.amazon",
    "input": {
        "type":     "rufus",
        "keywords": "macbook air m3适合视频编辑吗",
        "domain":   "www.amazon.es",
    },
}

resp = requests.post(URL, headers=HEADERS, json=BODY, timeout=60)
resp.raise_for_status()
data = resp.json()

# 解析的Rufus输出
for product in data["result"]["products"]:
    print(f"{product['asin']}  {product['rating']}★  {product['title'][:80]}")

print("\n相关问题:")
for q in data["result"]["related_questions"]:
    print(f"  - {q}")

Node.js (18+)

js Copy
const URL = "https://api.scrapeless.com/api/v1/scraper/request";

const resp = await fetch(URL, {
  method: "POST",
  headers: {
    "x-api-token":  process.env.SCRAPELESS_API_TOKEN,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    actor: "scraper.amazon",
    input: {
      type:     "rufus",
      keywords: "macbook air m3适合视频编辑吗",
      domain:   "www.amazon.es",
    },
  }),
});
if (!resp.ok) throw new Error(`HTTP ${resp.status}: ${await resp.text()}`);

const data = await resp.json();

for (const p of data.result.products) {
  console.log(`${p.asin}  ${p.rating}★  ${p.title.slice(0, 80)}`);
}

console.log("\n相关问题:");
javascript Copy
for (const q of data.result.related_questions) {
  console.log(`  - ${q}`);
}

两个客户端返回一个解析过的 data.result 对象,形状完全相同——没有 SSE 处理,没有数据块重组。对于原始 SSE 消费(渐进式 UI、完整保真事件审核),在请求体中设置 input.is_sse_data: true,并将响应读作流:

Python — 原始 SSE 模式

python Copy
import os, json, requests

resp = requests.post(URL, headers=HEADERS, json={
    "actor": "scraper.amazon",
    "input": {
        "type":         "rufus",
        "keywords":     "macbook air m3 适合视频编辑吗",
        "domain":       "www.amazon.es",
        "is_sse_data":  True,
    },
}, stream=True, timeout=60)

event_type, data_buf = None, []
for line in resp.iter_lines(decode_unicode=True):
    if line is None:
        continue
    if line.startswith("event:"):
        event_type = line[len("event:"):].strip()
    elif line.startswith("data:"):
        data_buf.append(line[len("data:"):])
    elif line == "":
        if event_type and data_buf:
            payload = json.loads("".join(data_buf))
            print(event_type, "->", str(payload)[:120])
        event_type, data_buf = None, []

Node.js — 原始 SSE 模式

js Copy
const resp = await fetch(URL, {
  method: "POST",
  headers: { "x-api-token": process.env.SCRAPELESS_API_TOKEN, "Content-Type": "application/json" },
  body: JSON.stringify({
    actor: "scraper.amazon",
    input: {
      type: "rufus", keywords: "macbook air m3 适合视频编辑吗",
      domain: "www.amazon.es", is_sse_data: true,
    },
  }),
});

const reader = resp.body.getReader();
const decoder = new TextDecoder("utf-8");
let buf = "";
while (true) {
  const { value, done } = await reader.read();
  if (done) break;
  buf += decoder.decode(value, { stream: true });
  const frames = buf.split("\n\n");
  buf = frames.pop();
  for (const frame of frames) {
    const lines = frame.split("\n");
    const evtLine = lines.find(l => l.startsWith("event:"));
    const dataLine = lines.find(l => l.startsWith("data:"));
    if (evtLine && dataLine) {
      const event = evtLine.slice("event:".length).trim();
      const data  = JSON.parse(dataLine.slice("data:".length));
      console.log(event, "->", JSON.stringify(data).slice(0, 120));
    }
  }
}

在原始模式下,预计会有 60–80 帧和七种事件类型:context, affordance, interim, inference, feedback, remove, closeinference 事件携带综合答案;close 表示流结束。


如何避免数据抓取中常见的问题

可能遇到的错误响应

API 针对每种错误情况返回结构化的 JSON——code 是 Scrapeless 错误代码,message 是人类可读的解释。从故意无效请求捕获的真实响应:

情景 HTTP 响应体
无效的 API 令牌 401 {"code":14404,"message":"无效访问令牌"}
错误的演员名称 400 {"code":14002,"message":"无效演员: <name>"}
丢失或错误的字段名称(例如 page 而不是 type 400 {"code":20404,"message":"输入解析错误"}
丢失或无效的 domain 400 {"code":20500,"message":"类型:rufus 抓取错误: rpc 错误: 代码 = Code(20500) 描述 = Rufus 抓取失败,如果此错误持续,请更改区域"}
瞬态上游故障(来自亚马逊的 unexpected EOF 400 {"code":20500,"message":"类型:rufus 抓取错误: [亚马逊] rufusStreaming 请求 <url> 失败: status=599, msg=unexpected EOF"}
空或缺失的 keywords 200 成功的信封,但 SSE 流包含一个 event:softlanding_error 块且 result.products 为空。检查 result.products.length === 0 和/或扫描 html 中的 softlanding_error

144xx 范围的代码是身份验证和演员验证;204xx 是请求形状(输入字段)错误;205xx 是上游亚马逊错误。将 205xx 中的 unexpected EOFchange the region 视为瞬态——在小的延迟后重试。

结论

亚马逊 Rufus 正在成为产品发现、比较和购买前研究的关键渠道。对于依赖购物意图数据的团队,它提供了有价值的信号,如产品推荐、比较上下文和后续问题,可以用于 SEO、定价和 AI 购物工作流。

Scrapeless Amazon Rufus Scraper API 消除了使用 Rufus 的最困难部分。您只需发送一个请求,就可以获得结构化输出,而不是自己管理亚马逊登录会话、SSE 解析、防机器人挑战和市场路由。这使其成为需要可靠、可扩展访问 Rufus 生成的购物智能的生产管道的实用选择。

领取您的免费计划并开始抓取:

加入Scrapeless充满活力的社区,领取$5-10 免费计划并与其他创新者建立联系:

Scrapeless 官方 Discord 社区
Scrapeless 官方 Telegram 社区


关于亚马逊Rufus爬虫API的常见问题

问:我需要亚马逊账户或多因素认证吗?
不需要。身份验证由Scrapeless在服务器端处理。调用者的代码只会看到result.productsresult.related_questions — 从不看到亚马逊登录表单、多因素认证挑战或cookie罐。

问:亚马逊Rufus是什么用的?
亚马逊Rufus是亚马逊的对话购物助手。顾客使用它来询问产品问题、比较选项,以及根据使用案例、预算和产品属性获得推荐。

问:亚马逊Rufus对于SEO和产品研究有什么重要性?
Rufus暴露了真实的购物问题和后续意图,反映了用户在购买前的思考方式。这些问题对于关键词扩展、内容规划、产品定位以及理解购物者最关心的事项非常有用。

问:亚马逊Rufus数据能直接从亚马逊抓取吗?
通过匿名浏览不可靠。Rufus与登录客户会话相关联,并实时生成响应,这使得手动抓取脆弱且难以扩展。Scrapeless在服务器端处理了这一复杂性。

问:Scrapeless相比于自建Rufus爬虫有什么优势?
Scrapeless为您处理身份验证、防机器人令牌、流解析和市场路由。这降低了维护开销,使得在生产环境中使用API比DIY浏览器或SSE管道要简单得多。

问:Rufus API支持哪些市场?
该API专为亚马逊市场域设计,例如www.amazon.comwww.amazon.es和www.amazon.de。这使其适用于需要按地区本地化Rufus回答的多市场工作流。目前支持欧洲和美国域名,Scrapeless持续扩展支持的域名!

问:Rufus API返回什么样的数据?
它通常返回一个结构化的JSON对象,其中包含产品推荐、相关问题和请求上下文。根据查询,您也可以使用原始流输出,如果需要完整事件级数据。

问:品牌如何使用Rufus数据?
品牌可以将Rufus数据用于竞争对手研究、产品比较分析、内容策略、购物意图挖掘和人工智能辅助的商品陈列。当您希望理解Rufus最常强调哪些产品属性时,这尤其有用。

问:Rufus API对于AI代理和自动化有用吗?
是的。因为它返回结构化数据而不是浏览器会话,它很适合用于AI代理、丰富管道、推荐系统和其他自动化工作流。

在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。

最受欢迎的文章

目录