返回博客

如何绕过亚马逊反机器人并获取竞争对手的真实价格:完整指南

亚马逊使用强大的反机器人系统,阻止自动数据收集。我们分析了绕过保护以监控竞争对手价格的方法。

📅2026年2月27日
```html

亚马逊是全球最受保护的市场之一。它的反机器人系统阻止了90%的自动数据收集尝试,包括价格、库存和商品排名。对于卖家和市场营销人员来说,这是一个关键问题:没有竞争对手的最新数据,就无法正确调整定价策略并保持盈利。

在本指南中,我们将分析亚马逊的技术保护机制,展示经过验证的绕过反机器人的方法,并设置一个稳定运行数月而不被封锁的价格监控系统。

为什么亚马逊阻止解析:保护机制

亚马逊因解析而损失数百万美元:竞争对手复制商品数据、价格和评论,而不良卖家利用自动化来提高排名。因此,公司在反机器人系统上投入了巨额资金,这些系统同时在多个层面上工作。

亚马逊保护的主要组件:

  • AWS WAF(Web应用防火墙) — 分析入站流量并在网络层阻止可疑IP地址。跟踪请求频率、地理位置和IP声誉。
  • Cloudfront CDN — 具有自己过滤机器人算法的分布式内容交付网络。检查请求头、cookies、TLS浏览器指纹。
  • 机器人管理系统 — 使用机器学习分析用户行为。跟踪鼠标移动、滚动速度和点击模式。
  • CAPTCHA和挑战页面 — 在可疑活动时显示。要求解决难题或输入验证码以继续。
  • 速率限制 — 对单个IP的请求数量进行严格限制:通常对未登录用户为每分钟10-20个请求。

所有这些系统协同工作并交换数据。如果其中任何一个系统怀疑是机器人 — IP将被列入黑名单24-48小时,有时甚至是永久。

重要:亚马逊为不同地区和用户类型显示不同的价格。封锁不仅是无法访问,还可能获得不准确的数据,这对监控竞争对手至关重要。

亚马逊如何识别机器人:7个主要信号

亚马逊的反机器人系统分析每个请求的数十个参数。以下是它识别自动化的关键信号:

1. IP地址声誉

亚马逊维护着数据中心、VPN服务和公共代理的IP地址数据库。来自这些地址的请求会受到额外关注或立即被阻止。系统还跟踪活动历史:如果某个IP对商品页面发起的请求过多 — 这就很可疑。

检查内容:是否属于知名数据中心(AWS、Google Cloud、DigitalOcean)、是否在公共代理数据库中、过去一小时的请求数量、地理位置(来自意外国家的请求)。

2. User-Agent和HTTP头信息

许多解析器使用标准的User-Agent库:python-requests/2.28.0,或者根本不发送此头信息。亚马逊会立即识别这些请求。

可疑迹象:缺少Accept-Language、Accept-Encoding头;User-Agent与其他头不匹配(例如,Chrome的User-Agent,但头信息像Firefox);在页面之间切换时缺少Referer;使用旧版本的浏览器。

3. TLS/SSL指纹

在建立HTTPS连接时,浏览器会发送一组加密参数(密码套件、扩展、TLS版本)。这一组对于每个浏览器都是独特的。像requests或curl这样的库具有与真实浏览器不同的指纹 — 亚马逊可以识别。

4. JavaScript和Canvas指纹

亚马逊加载JavaScript代码,收集有关浏览器的信息:屏幕分辨率、已安装的字体、支持的WebGL功能、Canvas参数。简单的HTTP客户端不会执行JavaScript,立即暴露自己。

5. Cookies和会话

亚马逊在首次访问时会设置许多cookies:session-id、ubid-main、x-main等。缺少这些cookies或其值不正确 — 是机器人的标志。系统还跟踪会话的生命周期:真实用户不会在30秒内发出100个请求。

6. 行为模式

真实的人会打开主页,搜索商品,浏览分类,阅读描述,返回。机器人则会立即以完美的顺序请求特定商品的URL,没有延迟。

可疑模式:仅请求商品页面而不访问主页;完美的URL顺序(product1、product2、product3...);缺少对静态资源的请求(图片、CSS、JS);请求之间的间隔相同。

7. 请求频率

即使完美仿真浏览器,过高的请求频率也会暴露机器人。亚马逊跟踪每个IP每分钟、每小时、每天的请求数量。超过限制(通常为每分钟10-20个请求)会导致封锁。

选择代理以绕过反机器人:住宅代理与数据中心

正确选择代理类型是绕过亚马逊保护的70%成功率。我们将分析三种主要类型及其在市场解析中的适用性。

代理类型 亚马逊信任级别 速度 应用
住宅代理 非常高(真实家庭用户的IP) 中等(50-150毫秒) 主要解析,高流量
移动代理 最高(移动运营商的IP) 低(200-500毫秒) 绕过严格封锁,账户
数据中心代理 低(亚马逊知道这些IP) 非常高(10-30毫秒) 测试,单次任务

住宅代理 — 最佳选择

对于稳定的亚马逊解析,推荐使用 住宅代理 — 它们使用真实家庭用户的IP,亚马逊无法大规模封锁这些IP而不冒着封锁真实买家的风险。

住宅代理对亚马逊的优势:

  • IP属于互联网服务提供商(美国的Comcast、AT&T、Verizon),而不是数据中心
  • 封锁率低:在正确设置轮换的情况下,低于2%
  • 可以选择地理位置:美国、英国、德国等国家以获取本地价格
  • 支持粘性会话:一个IP可以使用10-30分钟以模拟真实用户

选择住宅代理时的重要参数:

  • IP池大小:至少100万个地址以实现有效轮换
  • 地理位置:选择亚马逊运营的国家(美国、英国、德国、日本等)
  • 轮换类型:支持粘性会话,生命周期为10-30分钟
  • 协议:HTTP/HTTPS和SOCKS5以兼容不同工具

何时使用移动代理

移动代理使用移动运营商的IP(4G/5G)。亚马逊几乎从不封锁这些地址,因为由于CGNAT技术,数千个真实用户可能共享一个IP。

选择移动代理的时机:

  • 处理亚马逊卖家账户(Seller Central) — 对他们来说,IP的稳定性至关重要
  • 在住宅IP被封锁后绕过严格封锁
  • 需要授权的解析(例如,Prime订阅者的价格)
  • 小规模数据(每天最多1000个商品) — 移动代理成本较高

移动代理的缺点是高成本和由于移动网络特性导致的较低速度。对于大规模解析数千个商品,它们并不高效。

为什么数据中心不适合

数据中心代理使用AWS、Google Cloud、DigitalOcean的服务器IP。亚马逊会立即识别这些地址 — 它们在数据中心的ASN(自治系统)数据库中。

使用数据中心的問題:在5-10个请求后被封锁;持续出现验证码;显示过时的价格或空白页面;在几次尝试后永久封锁IP。

唯一可以使用数据中心的情况是,在使用住宅代理之前对少量商品(10-20个)进行解析器测试。

IP地址轮换策略:频率和地理位置

即使使用住宅代理,不正确的IP轮换也会导致封锁。亚马逊会跟踪每个地址的行为,并封锁那些发出过多请求或表现可疑的地址。

最佳轮换频率

有两种轮换方法:每个请求后轮换(旋转代理)和固定生命周期(粘性会话)。对于亚马逊,第二种方法更有效。

推荐的粘性会话策略:

  • IP的生命周期:10-15分钟 — 在模拟真实用户和封锁风险之间的最佳平衡
  • 每个IP的请求数量:在会话生命周期内不超过15-20个请求
  • 请求之间的延迟:3-7秒(随机的,不固定的!)
  • 模拟行为:第一个请求 — 主页或类别,然后是商品页面

单个IP的场景示例:打开亚马逊主页 → 等待5秒 → 打开电子产品类别 → 等待4秒 → 打开商品1 → 等待6秒 → 打开商品2 → ... → 在15个请求后更换IP。

高负载建议:

如果需要每小时解析数千个商品,请使用50-100个不同IP的并发会话池。每个会话进行10-15个请求并带有延迟,然后更换IP。这将提供每小时500-1500个请求而不被封锁。

地理分布

亚马逊根据用户的位置显示不同的价格、商品和配送条件。为了正确监控,需要使用与目标市场相同国家的代理。

市场与代理地理位置的对应关系:

  • Amazon.com(美国):使用来自美国的代理,最好来自不同州以增加多样性
  • Amazon.co.uk(英国):来自英国的代理
  • Amazon.de(德国):来自德国的代理
  • Amazon.co.jp(日本):来自日本的代理

重要:不要使用来自其他国家的代理来解析特定市场。例如,来自印度或俄罗斯的IP请求亚马逊.com看起来可疑,通常会收到验证码。

避免重复使用IP

即使IP没有被封锁,也不要在2-3小时内重复使用它。亚马逊会记住每个地址的活动历史。如果同一个IP在一天内每15分钟出现一次 — 这明显是自动化的迹象。

轮换规则:稳定运行的最低池为500-1000个独特IP。这确保了足够的多样性,使每个地址每天使用不超过1-2次。

真实浏览器仿真:头信息和指纹

即使使用住宅代理和正确的轮换,如果解析器不仿真真实浏览器,也会被封锁。亚马逊会检查HTTP请求和JavaScript环境的数十个参数。

正确的HTTP头信息

简单的HTTP客户端(requests、curl、wget)发送的头信息最少,立即暴露出机器人。需要复制真实浏览器的头信息。

亚马逊的必需头信息:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Cache-Control: max-age=0

关键点:

  • User-Agent:使用最新版本的Chrome或Firefox(每2-3个月检查一次)。旧版本的浏览器可疑。
  • Accept-Language:应与代理的地理位置相匹配(美国使用en-US,英国使用en-GB,德国使用de-DE)
  • Sec-Fetch-*头:在现代浏览器中出现,缺少这些头是旧客户端的标志
  • Referer:在页面之间切换时,务必发送前一页面的Referer

TLS指纹和绕过

亚马逊分析TLS连接的参数:协议版本、密码套件、扩展。标准库(Python requests中的OpenSSL)具有与浏览器不同的指纹。

解决方案:使用能够仿真浏览器TLS的工具:

  • curl-impersonate:一种复制Chrome和Firefox TLS指纹的curl版本
  • tls-client(Python):支持浏览器指纹的库
  • Playwright/Puppeteer:在无头模式下运行的真实浏览器 — 理想的仿真,但速度较慢

JavaScript和cookies

亚马逊在页面加载时执行JavaScript代码,设置cookies并收集有关浏览器的信息。如果不执行此代码,您将无法获得完整数据并迅速被封锁。

必需的操作:

  • 使用支持JavaScript的工具:Selenium、Playwright、Puppeteer
  • 在同一会话中保存所有cookies
  • 在提取数据之前,等待页面完全加载(DOMContentLoaded事件)
  • 模拟用户行为:滚动、随机暂停

亚马逊设置了关键cookies:session-idubid-mainx-main。没有这些,您将收到验证码或空白页面。

请求限制和请求之间的延迟

即使完美仿真浏览器,如果请求过多也无法避免被封锁。亚马逊对单个IP的请求频率进行严格限制。

亚马逊的文档限制

官方没有关于限制的具体数据,但根据社区测试,已知的近似值如下:

用户类型 每分钟请求限制 每小时请求限制
未登录用户 10-15 200-300
已登录买家 20-30 500-800
亚马逊API(官方) 无限制 取决于套餐

超过限制会导致验证码、临时封锁(1-24小时)或在系统性违规情况下永久封锁IP。

请求之间的最佳延迟

固定间隔(例如,正好5秒)会暴露机器人。真实用户会有不同长度的暂停:阅读商品描述、比较价格、分心。

推荐的延迟策略:

  • 基础延迟:3-7秒(随机值)
  • 会话中的第一个请求:5-10秒(模拟加载主页)
  • 在错误或验证码后:重复请求前等待30-60秒
  • 在更换IP之间:2-3秒的“重新连接”时间

实现随机延迟的示例:sleep(random.uniform(3, 7)) — 每个暂停都是独特的。

按时间分配负载

不要在00:00同时解析数千个商品。亚马逊会跟踪活动的激增。将任务分配到几个小时或整天。

示例:需要解析5000个商品。将其分成10个包,每个包500个商品,每个包之间间隔1-2小时。这看起来像是不同用户的有机活动。

亚马逊解析的现成工具

从零开始编写解析器既困难又耗时。现有的解决方案已经实现了绕过反机器人、代理轮换和浏览器仿真。

1. Bright Data Web Scraper IDE

一种云工具,具有亚马逊的现成模板。无需编程 — 通过可视化界面设置数据选择器。内置代理和验证码绕过。

优点:开箱即用,自动IP轮换,支持JavaScript。缺点:成本高(每月500美元以上),依赖外部服务。

2. Octoparse

一款适用于Windows的桌面应用,具有可视化解析器构建器。还有云版本可24/7运行任务。支持与代理的集成。

在Octoparse中设置代理:设置 → 代理设置 → 添加格式为 IP:PORT:USER:PASS 的代理列表 → 启用轮换。

优点:无需代码,界面友好,有免费计划。缺点:免费版本的页面数量限制,处理验证码时存在困难。

3. ScrapingBee API

一种用于解析的API服务,自动绕过保护。发送URL,获取HTML。内置代理轮换和JavaScript执行。

使用示例:

curl "https://app.scrapingbee.com/api/v1/?api_key=YOUR_KEY&url=https://www.amazon.com/dp/B08N5WRWNW&render_js=true&premium_proxy=true&country_code=us"

优点:简单集成,无需自己的代理。缺点:收费(从49美元/月起),请求数量限制。

4. Playwright + 自有代理(适合开发者)

如果您会编程,最佳选择是使用Playwright(或Puppeteer)与住宅代理。对过程的完全控制和最低成本。

在Playwright中设置代理的示例(Python):

from playwright.sync_api import sync_playwright
import random
import time

proxy_list = [
    {"server": "http://proxy1.example.com:8080", "username": "user", "password": "pass"},
    {"server": "http://proxy2.example.com:8080", "username": "user", "password": "pass"},
]

with sync_playwright() as p:
    proxy = random.choice(proxy_list)
    browser = p.chromium.launch(proxy=proxy, headless=True)
    context = browser.new_context(
        user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
        locale="en-US",
        timezone_id="America/New_York"
    )
    page = context.new_page()
    
    # 第一个请求 - 主页
    page.goto("https://www.amazon.com")
    time.sleep(random.uniform(3, 5))
    
    # 请求商品
    page.goto("https://www.amazon.com/dp/B08N5WRWNW")
    page.wait_for_load_state("networkidle")
    
    # 提取数据
    title = page.locator("#productTitle").inner_text()
    price = page.locator(".a-price-whole").first.inner_text()
    
    print(f"标题: {title}, 价格: ${price}")
    
    browser.close()

优点:完全控制,比云服务便宜,可以扩展。缺点:需要编程技能,需要自行处理验证码。

选择工具的建议

您的情况 推荐工具
不会编程,需要每天解析100-500个商品 Octoparse + 住宅代理
需要快速测试想法,有预算 ScrapingBee API
会编程,需要数千个商品 Playwright/Puppeteer + 住宅代理
预算充足,需要最大可靠性 Bright Data Web Scraper

被封锁时该怎么办:诊断和解决方案

即使遵循所有规则,有时也会出现封锁。了解原因并迅速解决问题非常重要。

封锁类型及其迹象

1. CAPTCHA(状态码503或重定向到/errors/validateCaptcha):

  • 原因:IP的可疑活动,但并非完全封锁
  • 解决方案:更换IP,增加请求之间的延迟,添加用户行为模拟
  • 自动化:使用验证码解决服务(2Captcha、Anti-Captcha) — 但这会减慢解析速度

2. IP封锁(代码403或空白页面):

  • 原因:IP因超过限制或使用数据中心而被列入黑名单
  • 解决方案:立即更换IP,检查代理类型(可能使用了数据中心而不是住宅代理)
  • 持续时间:通常为24-48小时,有时为永久

3. "要讨论自动访问亚马逊数据,请联系api-services-support@amazon.com":

  • 原因:亚马逊明确识别出自动化,并建议使用官方API
  • 解决方案:改善浏览器仿真,检查TLS指纹,将请求频率降低一半

问题诊断检查清单

如果您收到封锁,请按顺序检查:

  1. 代理类型:确保使用的是住宅代理,而不是数据中心。可以在whoer.net上检查
  2. 地理位置:IP应来自与市场相同的国家(.com使用美国,.co.uk使用英国)
  3. User-Agent:最新版本的Chrome/Firefox(不超过3-4个月)
  4. Cookies:在会话中是否在请求之间保存
  5. JavaScript:是否执行(如果使用Playwright/Puppeteer — 应该执行)
  6. 请求频率:每个IP每分钟不超过10-15个请求
  7. 延迟:随机的,不固定的
  8. IP轮换:每个地址每天使用不超过1次,每2-3小时更换

大规模封锁时的紧急措施

如果大多数请求被封锁(超过30%):

  • 停止解析2-3小时 — 让亚马逊“忘记”您的活动
  • 更换代理提供商 — 可能IP池已经被泄露
  • 将负载减少3-5倍 — 每小时100个请求改为20-30个
  • 切换到移动代理 — 它们几乎不被封锁,尽管成本更高
  • 增加更多人类模拟:随机浏览类别,通过搜索框搜索商品,而不是直接URL

注意:如果您的IP被永久封锁(封锁超过72小时),请不要尝试再次使用它。亚马逊很少解除永久封锁。请切换到新的代理池。

结论

绕过亚马逊的反机器人是一项复杂的任务,需要结合正确的代理、准确的浏览器仿真和合理的请求限制。成功解析的关键点:使用来自与市场相同国家的住宅代理;每10-15分钟轮换IP,限制每个会话15-20个请求;全面仿真现代浏览器,确保头信息正确并执行JavaScript;请求之间随机延迟3-7秒。

遵循这些规则,成功请求的比例可达95-98%,封锁变得稀少。最重要的是不要急于求成,模拟真实用户的行为,而不是试图在几分钟内解析数千个商品。

为了与亚马逊稳定合作,建议使用 住宅代理

```