亚马逊是全球最受保护的市场之一。它的反机器人系统阻止了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-id、ubid-main、x-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指纹,将请求频率降低一半
问题诊断检查清单
如果您收到封锁,请按顺序检查:
- 代理类型:确保使用的是住宅代理,而不是数据中心。可以在whoer.net上检查
- 地理位置:IP应来自与市场相同的国家(.com使用美国,.co.uk使用英国)
- User-Agent:最新版本的Chrome/Firefox(不超过3-4个月)
- Cookies:在会话中是否在请求之间保存
- JavaScript:是否执行(如果使用Playwright/Puppeteer — 应该执行)
- 请求频率:每个IP每分钟不超过10-15个请求
- 延迟:随机的,不固定的
- 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%,封锁变得稀少。最重要的是不要急于求成,模拟真实用户的行为,而不是试图在几分钟内解析数千个商品。
为了与亚马逊稳定合作,建议使用 住宅代理。