了解亚马逊的IP禁用系统
亚马逊运营着互联网上最复杂的反机器人系统之一. 当你的IP地址被禁时,你就会失去获取产品数据的机会,这些数据会推动你的定价,研究和竞争性智能操作. 了解亚马逊如何检测和禁止IP是防止它的第一步.
亚马逊并非简单地封锁单个IP——它构建了行为简介. 一个单一的可疑IP可能会触发软块(CAPTCHAs),而持续的违规导致硬块(完全访问拒绝). 系统追踪整个IP范围的图案,因此获得一个IP禁用可以加强对邻近地址的检查. 关于对侦查方法的全面了解,见我们关于 反机器人系统如何检测代理。 。 。
亚马逊如何检测自动交通
亚马逊探测器同时在多个层上运行.
请求级别检测
| 信号 | 亚马逊检查 | 风险水平 |
|---|---|---|
| TLS 指纹 | TLS 握手匹配已知的 bot 库( Python 请求, 卷曲) | 高级 |
| 标题顺序 | 按非浏览器顺序发送的 HTTP 信头 | 中型 |
| 缺少信头 | 不接受语言、接受编码等。 | 高级 |
| 用户代理 | 过时、 无效或已知的机器人用户代理字符串 | 高级 |
| 饼干处理 | 不接受或返回会话 cookie | 中型 |
行为检测
| 图案 | 说明 | 风险水平 |
|---|---|---|
| 固定间隔 | 准确间隔的请求(每5.0秒) | 高级 |
| 顺序爬行 | 按数字或字母顺序访问ASIN | 高级 |
| 无导航路径 | 不浏览直接跳转到产品页面 | 中型 |
| 高要求量 | 一个执行伙伴每分钟提出数百项请求 | 关键 |
| 没有 JavaScript 执行 | 不执行 JavaScript 而装入的页面 | 中型 |
IP级检测
亚马逊维持数据中心IP范围和已知代理供应商的数据库. 无论行为如何,数据中心实施伙伴都立即面临强化审查。 住宅综合方案 因为他们和真正的亚马逊购物者共用游泳池
亚马逊区类型
了解不同的块类型有助于你作出适当的反应。
软块( CAPTCHA)
最常见的反应。 亚马逊服务于CAPTCHA的页面而不是产品数据. 这是一个警告——从同一个IP继续,你会升级到一个硬块. 当你收到一个CAPTCHA,立即退后并切换到一个新的IP.
硬块( 503/403 错误)
完全拒绝访问,一般返回HTTP 503或403状态代码. 硬块对于特定的IP可以持续数小时到数天. 一旦硬锁起来,该IP实际上无法用于亚马逊,直到块过期.
内容操纵
亚马逊有时对可疑的bots提供不同的内容——不正确的价格,缺少评论,或者产品数据不完整. 这更难侦测 因为你收到了200个回复 根据已知的数值验证您已删除的数据以获取此数据 。
关键外卖:CAPTCHA是警告信号,而不仅仅是障碍. 将每个 CAPTCHA 当作一个指标 , 您当前的方法需要调整 。
预防战略
1. 使用住宅代理
这是你能做的最具影响力的改变。 居民代理使用分配给真正的互联网用户的IP地址,使您的请求与真正的购物者无法区分. 代理Hat的住宅代理池覆盖了195+国家,拥有数百万IP.
# ProxyHat residential proxy with geo-targeting
http://USERNAME-country-US:PASSWORD@gate.proxyhat.com:8080
# For Amazon.de
http://USERNAME-country-DE:PASSWORD@gate.proxyhat.com:8080
# For Amazon.co.uk
http://USERNAME-country-GB:PASSWORD@gate.proxyhat.com:80802. 实施智能旋转
永远不要从一个IP发送超过5-10个请求到亚马逊. 代理Hat的网关默认会自动旋转每个请求的IP,但您也应该实施应用程序级控制.
import requests
import random
import time
PROXY_BASE = "http://USERNAME:PASSWORD@gate.proxyhat.com:8080"
def make_request(url, max_retries=3):
"""Make a request with automatic retry on failure."""
for attempt in range(max_retries):
# Each request gets a fresh IP from the rotating proxy
proxies = {"http": PROXY_BASE, "https": PROXY_BASE}
headers = {
"User-Agent": random.choice(USER_AGENTS),
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.9",
"Accept-Encoding": "gzip, deflate, br",
}
try:
response = requests.get(url, headers=headers, proxies=proxies, timeout=30)
# Check for CAPTCHA
if "captcha" in response.text.lower() or response.status_code == 503:
print(f"CAPTCHA/block detected on attempt {attempt + 1}")
time.sleep(random.uniform(10, 30)) # Longer backoff
continue
if response.status_code == 200:
return response
except requests.RequestException:
time.sleep(random.uniform(5, 15))
return None3. 随机请求模式
您的请求模式的每个方面都应该包括随机性以避免统计检测.
import random
import time
def random_delay(min_sec=2, max_sec=7):
"""Add human-like random delay."""
delay = random.uniform(min_sec, max_sec)
# Occasionally add a longer pause (simulates reading a page)
if random.random() < 0.1: # 10% chance
delay += random.uniform(10, 30)
time.sleep(delay)
def shuffle_targets(urls):
"""Randomize the order of URLs to avoid sequential patterns."""
shuffled = urls.copy()
random.shuffle(shuffled)
return shuffled
def get_random_user_agent():
"""Return a realistic, current User-Agent string."""
agents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
]
return random.choice(agents)4. 地理定位与市场匹配
从德国IP或amazon.de从日本IP访问amazon.com是自动化活动的强烈信号. 总是匹配您的代理地址 到目标市场。
| 市场 | 代理国 | 代理汉特配置 |
|---|---|---|
| amazon.com (英语). | 美国 | USERNAME-country-US |
| (原始内容存档于2018-09-29). amazon.co.uk | 联合王国 | USERNAME-country-GB |
| 阿马松.de | 德国 | USERNAME-country-DE |
| amazon.co.jp (英语). | 日本 | USERNAME-country-JP |
| Amazon.fr (英语). | 法国 | USERNAME-country-FR |
| Amazon.in (英语). | 印度 | USERNAME-country-IN |
检查 代理哈特的完整位置列表 对所有支助国而言。
5. 妥善处理会议
亚马逊通过饼干跟踪会话. 接受和返回 cookie 使您的请求看起来更像一个真正的浏览器. 对于paged浏览(搜索结果,评论),使用粘贴的会话来维持同一个IP和cookie罐.
# Sticky session for paginated scraping
PROXY_SESSION = "http://USERNAME-session-amz{session_id}:PASSWORD@gate.proxyhat.com:8080"
def create_session(session_id):
"""Create a requests session with sticky proxy and cookies."""
session = requests.Session()
proxy = PROXY_SESSION.format(session_id=session_id)
session.proxies = {"http": proxy, "https": proxy}
session.headers.update({
"User-Agent": get_random_user_agent(),
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.9",
"Accept-Encoding": "gzip, deflate, br",
})
return session6. 监测您的成功率
跟踪您的 HTTP 200 速率, CAPTCHA速率, 和块速率实时 。 设定阈值, 当检测增加时自动节流。
class SuccessTracker:
def __init__(self, captcha_threshold=0.1, block_threshold=0.05):
self.total = 0
self.success = 0
self.captchas = 0
self.blocks = 0
self.captcha_threshold = captcha_threshold
self.block_threshold = block_threshold
def record(self, status):
self.total += 1
if status == "success":
self.success += 1
elif status == "captcha":
self.captchas += 1
elif status == "block":
self.blocks += 1
@property
def should_throttle(self):
if self.total < 10:
return False
captcha_rate = self.captchas / self.total
block_rate = self.blocks / self.total
return captcha_rate > self.captcha_threshold or block_rate > self.block_threshold
@property
def success_rate(self):
return self.success / self.total if self.total > 0 else 0禁令后恢复
如果一个IP被禁止,这里就是如何恢复:
- 立即停止: 不要继续发送来自被禁IP或附近IP的请求.
- 切换 IP : 使用一组来自不同范围的新型住宅IP. 代理Hat的大型游泳池确保你总是有干净的IP可用.
- 调整您的方法 : 在恢复前审查您的请求模式、 延迟和信头 。
- 慢慢开始 : 恢复时,从低请求率开始,并逐步增加.
- 等待出来: 亚马逊禁令一般在软块24-48小时内到期,硬块在特定IP上最长7天.
节点.js 禁止
这里有一个对应的节点.js执行 代理哈特节点 SDK。 。 。
const axios = require("axios");
const { HttpsProxyAgent } = require("https-proxy-agent");
const PROXY_URL = "http://USERNAME:PASSWORD@gate.proxyhat.com:8080";
const USER_AGENTS = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0",
];
async function safeAmazonRequest(url, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const agent = new HttpsProxyAgent(PROXY_URL);
try {
const response = await axios.get(url, {
httpsAgent: agent,
headers: {
"User-Agent": USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],
"Accept-Language": "en-US,en;q=0.9",
Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate, br",
},
timeout: 30000,
validateStatus: () => true,
});
if (response.data.toLowerCase().includes("captcha") || response.status === 503) {
console.log(`CAPTCHA/block on attempt ${attempt + 1}`);
await new Promise((r) => setTimeout(r, 10000 + Math.random() * 20000));
continue;
}
if (response.status === 200) return response;
} catch (err) {
await new Promise((r) => setTimeout(r, 5000 + Math.random() * 10000));
}
}
return null;
}
// Random delay between requests
function randomDelay(minMs = 2000, maxMs = 7000) {
const delay = minMs + Math.random() * (maxMs - minMs);
return new Promise((r) => setTimeout(r, delay));
}预防核对清单
在运行任何 Amazon 刮刮器前使用此核对表 :
- 使用住宅代理( 不是数据中心)
- 代理地理定位匹配目标市场
- 用户代理字符串是当前和旋转的
- 包含所有标准浏览器头
- 请求延迟为随机( 最少2-7 秒)
- URL 已洗牌, 不按顺序处理
- Cookie 处理已启用
- CAPTCHA 探测和自动后退到位
- 正在对成功率进行监测
- 货币有限(从5-10个平行请求开始)
关键外卖
- 亚马逊的探测是多层次的:请求指纹,行为模式,以及IP的声誉都很重要.
- 住宅代用品是不可谈判的——数据中心IP立即面临强化审查.
- 匹配代理地理定位到目标亚马逊市场.
- 随机所有:延迟,用户代理,请求顺序,以及会话模式.
- 将CAPTCHA作为预警,立即调整.
- 监测成功率,发现增加时自动节流.
将完整的亚马逊刮刮装置改为: 亚马逊产品数据刮刮指南 并探索完整的 电子商务报废战略开始 代理哈特的住宅代理 为可靠的亚马逊访问。






