Amazon คือขุมทรัพย์สำหรับการติดตามราคาและการวิจัยสินค้า และเป็นหนึ่งในเว็บไซต์ที่ป้องกันตัวเองอย่างดุดันที่สุดบนอินเทอร์เน็ต ลองสแครปมันจาก IP ของศูนย์ข้อมูลแล้วคุณจะเจอ CAPTCHA, กำแพง "Robot Check", ราคาที่หมุนเปลี่ยนไปมา หรือ 503 ภายในไม่กี่คำขอ คู่มือนี้ครอบคลุมสิ่งที่ Amazon ตรวจสอบ กลยุทธ์พร็อกซีที่อยู่รอดได้ และวินัยเรื่องเซสชันที่ทำให้ข้อมูลราคาและ Buy Box ถูกต้องแม่นยำ
พร็อกซีของศูนย์ข้อมูลคือทางตันบน Amazon ที่ปริมาณการใช้งานจริงใด ๆ — exit แบบ residential ที่มี ASN สะอาดต่างหากที่ทำให้มันยั่งยืน และที่สำคัญพอ ๆ กัน: จับคู่ประเทศของ exit ให้ตรงกับ marketplace ที่คุณกำลังสแครป การดึงราคา amazon.de ผ่าน exit ของสหรัฐฯ จะให้ราคา สกุลเงิน และ Buy Box ของสหรัฐฯ ซึ่งจะค่อย ๆ ทำให้ชุดข้อมูลของคุณเสียหายอย่างเงียบ ๆ หนึ่งภูมิศาสตร์ exit ต่อหนึ่ง marketplace
Amazon ปรับให้เป็นส่วนตัวตามเซสชัน — การเพิ่มลงตะกร้า ตำแหน่งจัดส่ง และการทดสอบราคาล้วนอยู่ในคุกกี้ ถ้าคุณหมุน IP ในทุกคำขอ คุณจะรีเซ็ตบริบทนั้นอยู่ตลอดและได้ราคากับผู้ชนะ Buy Box ที่ไม่สอดคล้องกัน ให้คง sticky session ไว้ตลอดการสแครปสินค้าหนึ่งชิ้นจนครบ แล้วค่อยหมุนที่ขอบเขตของสินค้าหรืองาน:
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 ไม่ใช่ขนาดของพูล สุ่มช่องว่างเวลา จำกัดการทำงานพร้อมกันต่อ IP และเมื่อคุณเห็น "Robot Check" หรือ 503 ให้หยุดยิง exit นั้นและถอยออกมา — การลองซ้ำเข้าหา IP ที่ถูกตั้งธงมีแต่จะยืดระยะเวลาการบล็อกให้ยาวขึ้น
การเรียก requests ธรรมดาส่ง JA3 ที่ตีตราคุณว่าเป็นการทำงานอัตโนมัติก่อนที่คะแนน IP จะมีผลด้วยซ้ำ ให้ส่งลายนิ้วมือเบราว์เซอร์ด้วย curl_cffi (ด้านบน) หรือเบราว์เซอร์จริง — ดู Bypass TLS Fingerprinting with curl_cffi ถ้า Amazon เด้งกำแพง CAPTCHA แบบ JS ขึ้นมา ให้ยกระดับไปใช้เอนจินเบราว์เซอร์จริง
ผู้ใช้ใหม่รับ 500MB เมื่อสมัครสมาชิก พร้อมโบนัสในการเติมเงินครั้งแรก ข้อเสนอมีระยะเวลาจำกัด