Amazon হলো দাম-পর্যবেক্ষণ ও পণ্য-গবেষণার একটি সোনার খনি এবং একই সঙ্গে ওয়েবের সবচেয়ে আগ্রাসীভাবে সুরক্ষিত সাইটগুলোর একটি। ডেটাসেন্টার IP থেকে এটি স্ক্র্যাপ করুন আর কয়েকটি অনুরোধের মধ্যেই দেখবেন CAPTCHA, "Robot Check" দেয়াল, ঘূর্ণায়মান দাম, কিংবা একটি 503। এই গাইডে আছে Amazon কী যাচাই করে, কোন প্রক্সি কৌশল তা টিকিয়ে রাখে, এবং কোন সেশন-শৃঙ্খলা দাম ও Buy Box ডেটা নির্ভুল রাখে।
যেকোনো বাস্তব ভলিউমে Amazon-এ ডেটাসেন্টার প্রক্সি একটি অচল পথ — পরিষ্কার ASN সহ রেসিডেনশিয়াল এক্সিটই একে টিকিয়ে রাখে। ঠিক ততটাই গুরুত্বপূর্ণ: এক্সিট দেশ যে মার্কেটপ্লেস আপনি স্ক্র্যাপ করছেন তার সঙ্গে মিলিয়ে নিন। US এক্সিট দিয়ে amazon.de-র দাম টানলে আপনি US-এর দাম, মুদ্রা ও Buy Box পাবেন, যা নীরবে আপনার ডেটাসেটকে দূষিত করে দেয়। প্রতি মার্কেটপ্লেসে একটি এক্সিট জিওগ্রাফি।
Amazon সেশন অনুসারে ব্যক্তিগতকরণ করে — কার্টে যোগ করা, ডেলিভারি অবস্থান এবং দাম পরীক্ষা সবই কুকিতে থাকে। আপনি যদি প্রতিটি অনুরোধে 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 স্ক্র্যাপিং-এর মতোই, যে শৃঙ্খলা আপনাকে বাঁচিয়ে রাখে তা হলো প্রতি-এক্সিট রেট, পুলের আকার নয়। ব্যবধান এলোমেলো করুন, প্রতি IP-তে কনকারেন্সি সীমিত রাখুন, এবং যখন "Robot Check" বা একটি 503 দেখবেন, সেই এক্সিটে হিট করা বন্ধ করে ব্যাক অফ করুন — একটি চিহ্নিত IP-তে পুনরায় চেষ্টা করা ব্লককে কেবল দীর্ঘায়িত করে।
একটি সাধারণ requests কল এমন একটি JA3 পাঠায় যা IP স্কোর প্রযোজ্য হওয়ার আগেই আপনাকে অটোমেশন হিসেবে চিহ্নিত করে। curl_cffi (উপরে) বা একটি প্রকৃত ব্রাউজার দিয়ে একটি ব্রাউজার ফিঙ্গারপ্রিন্ট পাঠান — দেখুন curl_cffi দিয়ে TLS ফিঙ্গারপ্রিন্টিং এড়ানো। যদি Amazon একটি JS CAPTCHA দেয়াল ছুড়ে দেয়, তবে একটি প্রকৃত ব্রাউজার ইঞ্জিনে এসকেলেট করুন।
নতুন ব্যবহারকারীরা নিবন্ধনের সময় 500MB পান, সাথে প্রথম রিচার্জে বোনাস। সীমিত সময়ের অফার।