分析阅读约 2 分钟

Amazon 与 Google:HTTP 200 为何仍可能失败

为什么来自 Amazon 或 Google 的 HTTP 200 仍可能是失败的抓取:质询页、空壳页面、robots 规则,以及应先核查的官方数据接口。

本页内容

来自 Amazon 或 Google 的 HTTP 200 并不是抓取成功的证据。两个站点都可能用质询页、需要 JavaScript 填充的搜索外壳,或者一整页标记却仍缺少解析器所需记录的页面来应答类似机器人的请求,而这三种情况都以 200 状态返回。本文描述这些响应模式、为什么仅凭状态码是糟糕的成功检查,以及在采集任何内容之前应当审阅的规则和官方接口。本文不报告对任一站点的测量结果,也不确定住宅代理或移动代理会有怎样的表现。

这些响应在实践中是什么样子

三类响应造成了大部分困惑,而且没有一类可以通过状态码区分。

**质询页。**状态为 200,响应体很小,标题为空或是通用文字,HTML 主要由触发插页或机器人管理检查的 JavaScript 组成。例如,Amazon 的质询标记带有质询函数和验证标记,而不是商店内容。只看状态码的成功计数器会接受这个响应,尽管解析器什么也找不到。

**搜索标记。**状态为 200,响应体很大,标题回显了查询词,结果项容器在页面中反复出现。这看起来像成功,但对某个容器类名的计数并不是经过验证的记录集。统计一个字符串与解析每张商品卡片并确认其标识符、价格和标题都存在,不是一回事。

**页面外壳。**状态为 200,响应体大小适中,标题是通用的站点名称,HTML 中包含一段要求浏览器启用 JavaScript 的脚本以及一个 noscript 块。没有任何结果标题可供解析器匹配。这与期待浏览器进一步处理的标记相符,但它无法告诉你浏览器是否会成功,也无法告诉你换一个出口地址是否会收到同样的外壳。

同一个地址在对不同路径的连续请求中可能收到不同类别的响应。因此单凭 IP 地址无法预测响应:路径、时序、请求头、cookie 和服务端决策都有影响,而这些都不是更换出口所能控制的。

有用的结论很有限:状态行不会告诉解析器它是否拿到了所需的数据。把 200 当作「收到了一个响应」,而不是「抓取成功了」。

检查响应体,而不是状态码

内容检查至少需要对每个响应回答四个问题。

  • 标题是否与页面应有的内容相符,而不是空白、通用站点名称或验证页?
  • 响应体是否包含质询或机器人管理脚本标记?如果包含,无论状态码如何,都把该响应归类为质询。
  • 解析出了多少条记录,每一条是否都带有应用所需的字段?记录解析出的数量,而不是某个标记字符串的出现次数。
  • HTML 是否是一个等待 JavaScript 填充的外壳?noscript 块或要求启用 JavaScript 的脚本是很强的信号。

把这些答案与 HTTP 状态、curl 的退出码和传输时序一起记录。curl 的 --write-out 字段(如 size_downloadtime_starttransfer)在 curl 手册中有说明;它们描述的是传输,而不是应用结果,两者必须并列记录。

Robots.txt 与服务规则

Robots 排除协议描述的是给爬虫的指令。RFC 9309 明确把这些指令与访问授权区分开来。没有 disallow 规则本身并不构成采集或再利用内容的许可。

在 2026 年 9 月 11 日的审阅中,Google 的 robots.txt 在其通用 user-agent 组中禁止了 /search,并有若干具体例外,包括 /search/about/search/howsearchworks。请评估实际路径和适用的组;规则数量或行号并不是有用的许可检查。

对于 Amazon,请查看适用市场的 robots.txt使用条件,以及任何项目专属的协议。本文不认定任何搜索或商品路径已获授权用于特定的采集或再利用。

Google 自 2026 年 7 月 30 日生效的条款限制违反其机器可读指令的自动化访问。其关于机器生成流量的搜索政策另行涵盖未经明确许可的自动化搜索访问,包括为排名检查而抓取结果。请针对你的服务和地区审阅当前文档;更换出口地址并不会改变这些要求。

官方数据访问选项

根据应用所需的数据和允许的用途选择接口。下列可用性于 2026 年 9 月 11 日审阅。

  • Amazon Creators API 在其项目要求下为发布者和联盟合作伙伴提供商品目录访问。它是 Product Advertising API 5 受支持的后继者。Amazon 的弃用通知说明,继续调用 PA-API 5 会收到带有 AccessDeniedException 的 403 响应。请从 Creators API 文档开始。
  • Amazon Selling Partner API 支持获授权的应用处理销售伙伴数据,例如商品信息和订单。其概览解释了范围;访问权限取决于应用、权限和销售伙伴。
  • Google Custom Search JSON API 已对新客户关闭。现有客户必须在 2027 年 1 月 1 日之前迁移到替代方案。Google 的概览指向支持最多 50 个域名的 Vertex AI Search,以及针对全网搜索需求的咨询渠道。这些选项需要单独检查适用性和可用性;旧版 API 不再是新客户可用的起点。
  • Google Search Console 报告你自己站点的搜索表现,包括点击次数、展示次数和平均排名。这些指标可以回答关于你已验证资源的问题,但不提供完整的竞争对手排名数据源。

官方接口有资格要求、权限、配额和使用条款。请把它们的覆盖范围与应用实际需要的字段、时效性和市场进行比较。有文档的接口仍然需要错误处理,也不保证不受限制的数据访问。

特定地区的连接何时可能有帮助

经授权的地区检查可能用于调查你的商品信息在另一个市场如何显示、某个地区性活动是否可见,或者客户为什么看到不同的内容。这些都是在遵守服务规则的前提下评估来自相关地区连接的理由。

出口 IP 只是此类测试的一个输入。保持浏览器、语言、账号状态和会话设置一致,并记录你改动了什么。单个请求或低请求量本身并不构成许可,地区性出口也无法重现每位客户的个性化视图。

轮换代理与粘性代理指南解释了会话选择。住宅代理与数据中心代理比较描述了如何评估候选池。本文不测量任一类型;请通过对你自己工作负载的授权比较来在两者之间做出选择。

在授权比较中应记录什么

在发出请求之前先定义应用层的成功。对于商品数据,这可能意味着匹配的商品标识符和全部必需字段;对于搜索数据,则是解析出的结果结构和预期的查询上下文。标题或标记计数可以作为有用的诊断,但不应替代对你将要使用的记录的验证。

记录确切的公开测试 URL 和查询词、UTC 时间戳、客户端版本、请求设置、重定向策略、网关或直连路由,以及内容检查方法。把 HTTP 和 CONNECT 状态、curl 的退出码和时序与应用结果一起保存。保留足够的、经过脱敏的响应证据,以解释质询、缺失字段或解析器结果的变化。

为了公平比较,保持客户端和请求设置不变,从每种候选网络类型中抽样多个地址,并在同一观测窗口内交错发送请求。不同的结果是调查的理由;仅凭它们并不能证明网络类型造成了差异。任何持续的测试还需要一个获准的请求速率和明确的停止条件。

基准测试方法为传输层测量提供了起点,并说明了哪些地方需要针对应用的检查。如果 CONNECT 返回 407,请使用 407 指南排查代理身份验证。curl 设置指南展示了如何分别记录 CONNECT 和 HTTP 状态。

本文没有确定的事项

本文没有比较住宅或移动出口之间的响应,没有测试浏览器渲染,没有验证完整的商品记录,也没有测量持续的质询率。来自单个地址的任何请求计数都无法估计供应商的成功率,也无法预测不同请求量下的表现。请使用上述模式来设计内容检查;代理的选择应基于对你需要运行的工作负载进行的单独授权比较。

参考来源

  1. Amazon robots.txt
  2. Amazon Conditions of Use
  3. Amazon Creators API introduction
  4. Amazon Product Advertising API 5 deprecation notice
  5. Amazon Selling Partner API overview
  6. Google robots.txt
  7. Google Terms of Service, effective 30 July 2026
  8. Google Search spam policies: machine-generated traffic
  9. Google Custom Search JSON API availability
  10. Google Search Console performance metrics
  11. RFC 9309: Robots Exclusion Protocol
  12. curl manual: transfer size and time to first byte

标签:ProxiesChoosing proxies