Amazon 是價格監控與產品研究的金礦,也是全網防護最為激進的網站之一。從機房 IP 對它做爬取,你會在寥寥幾次請求內就看到 CAPTCHA、「Robot Check」攔截牆、變動的價格,或是一個 503。本指南涵蓋 Amazon 會檢查什麼、能存活下來的代理策略,以及讓價格與 Buy Box 資料保持精確的工作階段紀律。
在任何真實流量規模下,機房代理在 Amazon 上都是死路一條 — 真正能撐下去的是 ASN 乾淨的住宅 exit。同樣重要的是:讓 exit 國家與你所爬取的 marketplace 相符。透過美國 exit 去抓 amazon.de 的價格,你拿到的是美國的價格、貨幣與 Buy Box,這會悄悄汙染你的資料集。每個 marketplace 對應一個 exit 地理區。
Amazon 會依工作階段做個人化 — 加入購物車、配送地點與價格測試全都存在 cookie 裡。如果你在每次請求都輪換 IP,就會不斷重置那份脈絡,得到不一致的價格與 Buy Box 得標者。在一個產品的整段爬取期間維持一個 sticky 工作階段,然後在產品或任務的邊界處輪換:
import itertools, time, random
from curl_cffi import requests
PROXIES = ["socks5h://USERNAME:[email protected]:913", "..."]
pool = itertools.cycle(PROXIES)
def scrape_product(asin, proxy):
# Same sticky exit for every page of this product
s = requests.Session(impersonate="chrome",
proxies={"http": proxy, "https": proxy})
detail = s.get(f"https://www.amazon.com/dp/{asin}")
offers = s.get(f"https://www.amazon.com/gp/offer-listing/{asin}")
return detail.text, offers.text
for asin in asins:
proxy = next(pool) # new sticky exit per product
if "Robot Check" in scrape_product(asin, proxy)[0]:
# flagged - back off, rotate, retry on a fresh exit
...
time.sleep(random.uniform(2.0, 5.0))
正如 Google SERP 爬取一樣,讓你存活下來的紀律是每個 exit 的速率,而不是 pool 的大小。隨機化間隔、限制每個 IP 的並行量,當你看到「Robot Check」或一個 503 時,就停止命中那個 exit 並退避 — 對著一個被標記的 IP 重試,只會拉長封鎖時間。
一個樸素的 requests 呼叫送出的 JA3,會在 IP 評分都還沒套用之前,就把你標記為自動化程式。用 curl_cffi(如上)或一個真實瀏覽器送出瀏覽器指紋 — 參見 用 curl_cffi 繞過 TLS 指紋偵測。如果 Amazon 丟出一道 JS CAPTCHA 牆,就升級到一個真實的瀏覽器引擎。
新用戶註冊即送 500M免費流量,首次儲值另有贈金。優惠限時供應。