← بازگشت به وبلاگ

محدودیت ترافیک برای پارسینگ Wildberries و Ozon: چگونه بسته ماهانه پروکسی را در یک شب هدر ندهیم

بررسی می‌کنیم که چرا پارسر می‌تواند ترافیک یک ماهه را در چند ساعت بسوزاند و نشان می‌دهیم که چگونه می‌توان محدودیت‌هایی را در سطح پروکسی، مرورگر ضد شناسایی و خود اسکریپت تنظیم کرد.

📅۲۸ مهر ۱۴۰۵

فروشنده پارسر قیمت‌های رقبای خود را در شب راه‌اندازی می‌کند و صبح با پیامی مواجه می‌شود: ترافیک تمام شده است، بسته 90% مصرف شده است. آیا این وضعیت آشناست؟ بیشتر اوقات، مقصر خود پارسر نیست، بلکه عدم محدودیت‌ها در سطح پروکسی و اسکریپت است. در این مقاله بررسی می‌کنیم که ترافیک چگونه «نشت» می‌کند، و چگونه می‌توانیم محافظت کنیم تا بسته ماهانه پروکسی‌های مقیم یا موبایل تا پایان دوره محاسبه کافی باشد.

چرا ترافیک در شب تمام می‌شود

پارسینگ Wildberries، Ozon یا Avito به نظر کار ساده‌ای می‌آید: یک درخواست ارسال کردید — یک JSON با قیمت دریافت کردید. اما در عمل، ترافیک نه تنها برای داده‌های مفید مصرف می‌شود. منابع اصلی مصرف اضافی:

  • بارگذاری تصاویر و رسانه‌ها. اگر پارسر صفحه محصول را به طور کامل از طریق مرورگر باز کند (و نه از طریق درخواست مستقیم به API)، به طور خودکار تصاویر، ویدئوها، بنرها را بارگذاری می‌کند — این ده‌ها مگابایت برای یک کارت است.
  • درخواست‌های تکراری به دلیل کپچا و مسدودیت‌ها. مارکت‌پلیس ربات را شناسایی می‌کند، کپچا یا مسدودیت موقت IP را صادر می‌کند، اسکریپت درخواست تکراری می‌فرستد — ترافیک بیهوده مصرف می‌شود، و داده‌ها دریافت نمی‌شوند.
  • عدم کش کردن درخواست‌ها. بدون منطق «قبلاً در این ساعت پارس شده — تکرار نکنید»، اسکریپت ممکن است چندین بار در طول شب به یک کارت مشابه مراجعه کند.
  • جریان‌های موازی بدون محدودیت. راه‌اندازی 50-100 جریان به طور همزمان به نظر افزایش سرعت کار می‌آید، اما در عین حال ترافیک به مراتب سریع‌تر از آنچه برنامه‌ریزی شده است مصرف می‌شود و بخشی از درخواست‌ها به سادگی مسدود می‌شود.
  • انتخاب نادرست نوع پروکسی. پروکسی‌های مقیم و موبایل معمولاً بر اساس حجم ترافیک (گیگابایت) هزینه‌گذاری می‌شوند، بر خلاف پروکسی‌های دیتاسنتر که بیشتر هزینه بر اساس تعداد IP یا زمان اجاره است. اگر پارسر بر روی مجموعه مقیم بدون کنترل تنظیم شده باشد — محدودیت به سرعت مصرف می‌شود.

ترکیب این عوامل باعث می‌شود که اسکریپتی که برای یک ماه کار طراحی شده است، بسته ترافیک را در یک جلسه شبانه پارسینگ 10-20 هزار کارت محصول مصرف کند.

چگونه ترافیک در انواع مختلف پروکسی محاسبه می‌شود

قبل از تنظیم محدودیت‌ها، مهم است که بفهمید دقیقاً برای چه چیزی پرداخت می‌کنید. انواع مختلف پروکسی به طور متفاوتی مصرف را محاسبه می‌کنند و این به طور مستقیم بر استراتژی صرفه‌جویی تأثیر می‌گذارد.

نوع پروکسی تعرفه‌گذاری ریسک مصرف اضافی کی استفاده شود
پروکسی‌های مقیم بر اساس حجم ترافیک (گیگابایت) بالا بدون محدودیت پارسینگ با دور زدن حفاظت ضد ربات مارکت‌پلیس‌ها
پروکسی‌های موبایل بر اساس حجم ترافیک یا زمان بالا، ترافیک گران‌تر پارسینگ نسخه‌های موبایل سایت‌ها، دور زدن مسدودیت‌های سخت
پروکسی‌های دیتاسنتر بر اساس تعداد IP / زمان اجاره پایین، ترافیک معمولاً نامحدود است پارسینگ انبوه بدون حفاظت سخت ضد ربات

اگر شما Wildberries یا Ozon را پارس می‌کنید، جایی که حفاظت از ربات‌ها به طور فعال کار می‌کند، پروکسی‌های مقیم یا موبایل تقریباً همیشه ضروری هستند — آدرس‌های دیتاسنتر به سرعت مسدود می‌شوند. اما به دلیل تعرفه‌گذاری بر اساس ترافیک، در اینجا به ویژه مهم است که محدودیت‌ها را از قبل تنظیم کنید.

چقدر ترافیک واقعاً برای پارسینگ نیاز است

برای تنظیم یک محدودیت مناسب، باید از اعداد واقعی شروع کنید، نه از احساسات. هزینه‌های تقریبی در عمل:

  • درخواست به API کارت محصول (JSON، بدون تصاویر): 5-30 کیلوبایت برای هر کارت. برای 10,000 کارت — حدود 50-300 مگابایت.
  • بارگذاری صفحه محصول از طریق مرورگر بدون سر با تصاویر: 1-3 مگابایت برای هر کارت. برای همان 10,000 کارت — 10-30 گیگابایت.
  • نظارت بر قیمت‌ها هر ساعت برای 1000 SKU: با درخواست‌های سبک — حدود 1-5 گیگابایت در روز، با بارگذاری کامل صفحات — 50-100 گیگابایت در روز.

تفاوت بین «پارسینگ سبک» و «پارسینگ سنگین» چندین برابر است. بنابراین اولین قدم برای صرفه‌جویی در ترافیک — غیرفعال کردن بارگذاری تصاویر، ویدئوها و اسکریپت‌های خارجی در جاهایی که ممکن است و کار کردن به طور مستقیم با API مارکت‌پلیس یا نسخه موبایل سایت است که وزن کمتری نسبت به نسخه دسکتاپ دارد.

محدودیت‌ها در مرورگرهای ضد شناسایی و مدیران پروکسی

برای کسانی که از طریق مرورگر ضد شناسایی (مانند Dolphin Anty، AdsPower، Multilogin، GoLogin، Octo Browser) یا مدیر پروکسی خود پارس می‌کنند، ساده‌ترین راه برای محدود کردن مصرف — تنظیم محدودیت‌ها در سطح پروفایل و حساب کاربری ارائه‌دهنده پروکسی است.

  1. به پنل کاربری ارائه‌دهنده پروکسی وارد شوید و بخش مدیریت ترافیک یا محدودیت‌ها برای زیر کاربران/پورت‌ها را پیدا کنید.
  2. یک زیر حساب یا پورت جداگانه برای پارسینگ ایجاد کنید — از همان مجموعه پروکسی که برای فارم کردن حساب‌ها در Instagram یا TikTok استفاده می‌شود، استفاده نکنید. تقسیم‌بندی بر اساس وظایف به سرعت نشان می‌دهد که ترافیک کجا می‌رود.
  3. محدودیت روزانه یا ساعتی برای ترافیک در این زیر حساب تنظیم کنید — به عنوان مثال، 5 گیگابایت در روز به جای مصرف کل بسته ماهانه در یک جلسه.
  4. در مرورگر ضد شناسایی، بارگذاری خودکار تصاویر را غیرفعال کنید برای پروفایل‌هایی که به طور خاص برای جمع‌آوری داده‌ها استفاده می‌شوند، نه برای مشاهده بصری صفحات.
  5. برنامه‌ریزی زمان‌بندی راه‌اندازی پروفایل‌ها را تنظیم کنید به گونه‌ای که پارسینگ به جای یک جلسه طولانی، در فواصل کوتاه با وقفه‌ها انجام شود — این خطر مسدودیت را کاهش می‌دهد و زمان می‌دهد تا مصرف ترافیک بین راه‌اندازی‌ها را پیگیری کنید.

این رویکرد به ویژه برای آژانس‌ها و فریلنسرهایی که همزمان چندین مارکت‌پلیس را پارس می‌کنند، مهم است: بدون تقسیم‌بندی بر اساس زیر حساب‌ها، درک اینکه کدام پروژه دقیقاً «ترافیک» را مصرف کرده دشوار است.

محدودیت ترافیک در سطح اسکریپت و API

اگر پارسر به طور مستقل با Python یا Node.js نوشته شده باشد، می‌توان و باید محدودیت‌ها را مستقیماً در کد گنجاند — این کنترل دقیق‌تری نسبت به تنظیمات رابط ارائه‌دهنده پروکسی می‌دهد.

مثال یک شمارنده ساده ترافیک در Python با استفاده از requests:

import requests

MAX_BYTES_PER_DAY = 5 * 1024 * 1024 * 1024  # محدودیت 5 گیگابایت در روز
used_bytes = 0

proxies = {
    "http": "http://user:pass@proxy_host:port",
    "https": "http://user:pass@proxy_host:port",
}

def safe_get(url):
    global used_bytes
    if used_bytes >= MAX_BYTES_PER_DAY:
        raise RuntimeError("محدودیت روزانه ترافیک به پایان رسیده است، پارسینگ متوقف شد")

    response = requests.get(url, proxies=proxies, timeout=10)
    used_bytes += len(response.content)
    return response

# مثال فراخوانی
resp = safe_get("https://card.wb.ru/cards/detail?nm=123456")
print("ترافیک مصرف شده:", round(used_bytes / 1024 / 1024, 2), "مگابایت")

منطق ساده است: اسکریپت حجم هر پاسخ را به بایت‌ها محاسبه می‌کند و به محض اینکه محدودیت تعیین شده رسید، متوقف می‌شود. این از وضعیتی که به دلیل خطا در حلقه یا تکرار بی‌پایان درخواست‌ها، اسکریپت «بسته» ترافیک ماهانه را در چند ساعت مصرف کند، محافظت می‌کند.

همچنین باید اضافه کرد:

  • تأخیر نمایی در هنگام خطاها (retry با backoff) — به جای تکرار فوری درخواست در صورت کپچا یا مسدودیت، اسکریپت یک فاصله افزایشی (5 ثانیه، 15 ثانیه، 60 ثانیه) را انتظار می‌کشد، که تعداد درخواست‌های بی‌فایده را کاهش می‌دهد.
  • محدودیت تعداد جریان‌های موازی — به عنوان مثال، حداکثر 10-20 اتصال همزمان از طریق مجموعه پروکسی، تا از مسدودیت‌ها جلوگیری شود و ترافیک بیهوده مصرف نشود.
  • غیرفعال کردن بارگذاری منابع در مرورگر بدون سر — اگر پارسینگ از طریق Selenium یا Puppeteer انجام می‌شود، در تنظیمات مرورگر می‌توان بارگذاری تصاویر، فونت‌ها و CSS را مسدود کرد و فقط پاسخ‌های HTML/JSON را باقی گذاشت.

نظارت بر مصرف در زمان واقعی

محدودیت بدون نظارت بدتر عمل می‌کند، زیرا شما فقط پس از توقف اسکریپت از مشکل مطلع می‌شوید. برای کنترل مصرف در حین کار:

  • در پنل کاربری ارائه‌دهنده پروکسی، اعلان‌هایی را برای رسیدن به 50%، 80% و 100% از بسته ماهانه ترافیک فعال کنید — بیشتر خدمات چنین هشدارهایی را از طریق ایمیل یا تلگرام پشتیبانی می‌کنند.
  • یک لاگ ساده در خود اسکریپت نگه دارید: حجم ترافیک را بر اساس ساعت در فایل یا پایگاه داده ثبت کنید تا اوج‌های مصرف را ببینید و به سرعت منبع مشکل را پیدا کنید.
  • ترافیک را بر اساس وظایف از طریق زیر حساب‌های جداگانه یا برچسب‌ها تقسیم کنید — جداگانه برای پارسینگ Wildberries، جداگانه برای Ozon، جداگانه برای Avito. این تحلیل را ساده‌تر می‌کند که کدام پروژه بیشتر مصرف می‌کند.
  • مصرف را با حجم داده‌های مورد انتظار مقایسه کنید: اگر برای 10,000 کارت 20 گیگابایت مصرف شده به جای 300 مگابایت محاسبه شده، به این معنی است که منابع اضافی بارگذاری می‌شوند یا درخواست‌های تکراری انجام می‌شوند.

چک لیست کنترل بودجه ترافیک

  • بارگذاری خودکار تصاویر و ویدئوها در پروفایل‌های پارسینگ غیرفعال شده است
  • درخواست مستقیم به API مارکت‌پلیس در جاهایی که ممکن است استفاده می‌شود، به جای بارگذاری کامل صفحه
  • محدودیت روزانه یا ساعتی برای ترافیک در زیر حساب پروکسی تنظیم شده است
  • پارسینگ به مجموعه‌های جداگانه پروکسی بر اساس پروژه‌ها تقسیم شده است (Wildberries، Ozon، Avito)
  • در اسکریپت شمارنده ترافیک با توقف در هنگام رسیدن به محدودیت پیاده‌سازی شده است
  • تأخیر و backoff در صورت کپچا یا مسدودیت به جای تکرار فوری تنظیم شده است
  • تعداد جریان‌های موازی پارسینگ محدود شده است
  • اعلان‌های مصرف ترافیک از ارائه‌دهنده پروکسی فعال شده است
  • لاگ مصرف ترافیک بر اساس ساعت برای تحلیل ناهنجاری‌ها نگهداری می‌شود

اشتباهات رایج مبتدیان

در عمل، بیشتر بسته‌های «سوخته» ترافیک به چندین اشتباه رایج مربوط می‌شود:

  • راه‌اندازی پارسینگ «در شب بدون نظارت» بدون محدودیت‌ها. اسکریپت به مدت 8-10 ساعت بدون توقف کار می‌کند و اگر در جایی حلقه درخواست‌های تکراری ایجاد شود، ترافیک به طور مداوم تا صبح مصرف می‌شود.
  • یک مجموعه پروکسی عمومی برای تمام وظایف. فارم کردن حساب‌ها در Instagram، تست تبلیغات در Facebook Ads و پارسینگ Ozon از یک ترافیک یکسان استفاده می‌کنند — نمی‌توان فهمید که کدام یک از آنها مصرف می‌شود.
  • نادیده گرفتن کپچا. به جای کاهش فرکانس درخواست‌ها در اولین نشانه‌های کپچا، اسکریپت با همان شدت به سایت حمله می‌کند و ترافیک را برای پاسخ‌های بی‌فایده با کد خطا مصرف می‌کند.
  • انتخاب پروکسی‌های مقیم در جایی که پروکسی‌های دیتاسنتر کافی هستند. اگر مارکت‌پلیس به شدت IP‌های دیتاسنتر را مسدود نکند، پرداخت اضافی برای ترافیک مجموعه مقیم توجیه‌پذیر نیست — برای اهداف کمتر محافظت‌شده، پروکسی‌های دیتاسنتر با مدل تعرفه‌گذاری دیگر مناسب هستند.
  • عدم اجرای آزمایشی. قبل از راه‌اندازی کامل پارسینگ بر روی هزاران کارت، بهتر است اسکریپت را بر روی 50-100 کارت اجرا کنید و مصرف واقعی ترافیک را اندازه‌گیری کنید تا بر اساس آن برای کل حجم پیش‌بینی کنید.

نتیجه‌گیری

ترافیک برای پارسینگ «می‌سوزد» نه به دلیل حجم داده‌ها، بلکه به دلیل عدم کنترل: تصاویر اضافی، درخواست‌های تکراری در زمان مسدودیت‌ها، جریان‌های موازی بدون محدودیت و مجموعه عمومی پروکسی برای تمام وظایف. راه‌حل — تقسیم ترافیک بر اساس پروژه‌ها، تنظیم محدودیت‌های روزانه در سطح حساب پروکسی، گنجاندن شمارنده مصرف در خود اسکریپت و تنظیم نظارت با اعلان‌ها تا زمانی که بسته واقعاً تمام شود.

اگر شما مارکت‌پلیس‌هایی با حفاظت فعال ضد ربات مانند Wildberries یا Ozon را پارس می‌کنید، توصیه می‌کنیم از پروکسی‌های مقیم برای دور زدن مسدودیت‌ها استفاده کنید و به طور اضافی IP‌های موبایل برای حساس‌ترین سناریوها نسبت به حفاظت ضد ربات — اما در هر دو مورد، حتماً محدودیت‌های ترافیک را از قبل تنظیم کنید تا بسته ماهانه در یک جلسه شبانه مصرف نشود.