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

پروکسی برای استخراج ویژگی‌های محصولات: چگونه داده‌ها را از بازارهای آنلاین بدون مسدودسازی جمع‌آوری کنیم

راهنمای جامع برای انتخاب و تنظیم پروکسی برای استخراج ویژگی‌های محصولات از بازارهای آنلاین: انواع پروکسی، چرخش IP، دور زدن سیستم‌های ضد ربات Wildberries و Ozon.

📅۶ بهمن ۱۴۰۴
```html

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

چرا بازارها پارس کردن را مسدود می‌کنند و این چگونه کار می‌کند

بازارهای مدرن میلیون‌ها روبل به دلیل پارس کردن از دست می‌دهند: رقبای محصولات را کپی می‌کنند، جمع‌آورندگان ترافیک را می‌ربایند و بار روی سرورها افزایش می‌یابد. به همین دلیل Wildberries، Ozon، یاندکس مارکت و سایر پلتفرم‌ها حفاظت چند لایه‌ای را برای جلوگیری از جمع‌آوری خودکار داده‌ها پیاده‌سازی کرده‌اند.

چگونه بازارها پارس کردن را شناسایی می‌کنند:

  • فرکانس درخواست‌ها از یک IP — اگر از یک آدرس بیش از 100 درخواست در دقیقه بیاید، این نشانه واضحی از ربات است. یک کاربر عادی در این مدت 5-10 کارت محصول را مشاهده می‌کند.
  • عدم وجود JavaScript — پارسرهای ساده با استفاده از requests یا curl کد JS را اجرا نمی‌کنند که قیمت‌ها و ویژگی‌ها را بارگذاری می‌کند. سایت می‌بیند که محتوا بدون رندر کردن درخواست می‌شود.
  • User-Agent و هدرها — هدرهای پیش‌فرض کتابخانه‌ها (مانند "python-requests/2.28.0") به سرعت ربات را شناسایی می‌کنند. عدم وجود هدرهای Accept-Language و Referer نیز مشکوک است.
  • اثر انگشت مرورگر — سیستم‌های پیشرفته (Cloudflare، Kasada، DataDome) Canvas، WebGL، فونت‌ها و افزونه‌های مرورگر را تحلیل می‌کنند. مرورگرهای بدون سر مانند Puppeteer به راحتی به دلیل عدم وجود برخی پارامترها شناسایی می‌شوند.
  • الگوهای رفتاری — ربات کارت‌های محصولات را با فاصله‌های یکسان (به عنوان مثال، دقیقاً هر 2 ثانیه) باز می‌کند، صفحه را اسکرول نمی‌کند و ماوس را حرکت نمی‌دهد. این او را از یک انسان زنده متمایز می‌کند.

عواقب مسدود شدن: مسدودیت موقت IP به مدت 1-24 ساعت، CAPTCHA برای هر درخواست، مسدودیت کامل دامنه IP دیتاسنتر. برای کسب‌وکار این به معنای توقف جمع‌آوری داده‌ها و از دست دادن مزیت رقابتی است.

یک مورد واقعی: جمع‌آورنده قیمت Wildberries را با 10 IP دیتاسنتر پارس کرد و از هر کدام 500 درخواست در ساعت انجام داد. پس از 3 روز، کل دامنه /24 مسدود دائمی شد — مجبور شد پروویدر پروکسی را تغییر دهد و به IP‌های مسکونی با چرخش برود.

مقایسه انواع پروکسی برای پارس کردن محصولات

برای پارس کردن ویژگی‌های محصولات، سه نوع پروکسی اصلی استفاده می‌شود. هر کدام مزایا و محدودیت‌های خاص خود را بسته به حجم داده‌ها، بودجه و الزامات سرعت دارند.

نوع پروکسی سرعت ریسک مسدودیت هزینه کی استفاده کنیم
پروکسی دیتاسنتر بالا (50-200 میلی‌ثانیه) بالا پایین پارس کردن حجم‌های کوچک (تا 10,000 محصول در روز)، تست کردن پارسر
پروکسی‌های مسکونی متوسط (200-800 میلی‌ثانیه) پایین بالا (بر اساس ترافیک) پارس کردن Wildberries، Ozon با حفاظت از ربات‌ها، حجم‌های بزرگ داده‌ها
پروکسی‌های موبایل متوسط (300-1000 میلی‌ثانیه) بسیار پایین بسیار بالا پارس کردن با حداکثر حفاظت، دور زدن مسدودیت‌های سخت، پروژه‌های بحرانی

پروکسی دیتاسنتر — اینها آدرس‌های IP سرورهای موجود در دیتاسنترها (AWS، Hetzner، OVH) هستند. آنها سریع و ارزان هستند، اما بازارها به راحتی آنها را با استفاده از پایگاه‌های ASN شناسایی می‌کنند. برای پارس کردن کاتالوگ‌های کوچک (تا 10,000 محصول در روز) یا پلتفرم‌هایی که حفاظت جدی ندارند مناسب هستند. هزینه: از 1-3 دلار برای هر IP در ماه.

پروکسی‌های مسکونی — اینها IP کاربران خانگی هستند که به طور قانونی از طریق SDK در برنامه‌ها به دست آمده‌اند. بازارها آنها را به عنوان خریداران عادی در نظر می‌گیرند. برای پارس کردن Wildberries، Ozon، یاندکس مارکت در حجم‌های بالا ایده‌آل هستند. هزینه: از 5-15 دلار برای 1 گیگابایت ترافیک (تقریباً 10,000-30,000 درخواست).

پروکسی‌های موبایل — IP اپراتورهای موبایل (MTS، بی‌لاین، مگافون). این نوع مطمئن‌ترین برای دور زدن حفاظت است، اما گران و کند است. فقط برای وظایف بحرانی که در آن مسدودیت غیرقابل قبول است استفاده کنید. هزینه: از 50-150 دلار برای هر IP در ماه با چرخش.

پروکسی‌های مسکونی یا دیتاسنتر: کدام را برای وظیفه خود انتخاب کنیم

انتخاب نوع پروکسی به سه عامل بستگی دارد: حجم پارس کردن، سطح حفاظت پلتفرم و بودجه. بیایید سناریوهای خاص استفاده را بررسی کنیم.

کی پروکسی دیتاسنتر مناسب است

سناریو 1: تست کردن پارسر
شما در حال توسعه یک پارسر جدید هستید و منطق استخراج داده‌ها را بررسی می‌کنید. نیاز به پارس کردن 100-500 محصول برای اشکال‌زدایی دارید. در این صورت پروکسی‌های مسکونی هزینه اضافی هستند. 5-10 IP دیتاسنتر بگیرید و از هر کدام 50-100 درخواست در ساعت انجام دهید. این برای تست بدون مسدودیت کافی است.

سناریو 2: پارس کردن پلتفرم‌های بدون حفاظت
بازارهای منطقه‌ای کوچک، تابلوهای اعلانات مانند Avito (در برخی دسته‌ها)، فروشگاه‌های اینترنتی بر روی OpenCart اغلب حفاظت جدی ضد ربات ندارند. در اینجا دیتاسنترها به شرط بار متوسط (تا 200 درخواست در ساعت از IP) به طور پایدار کار می‌کنند.

سناریو 3: بودجه محدود و حجم‌های کوچک
اگر نیاز به پارس کردن 5,000-10,000 محصول در روز دارید و بودجه محدود است، سعی کنید از دیتاسنترها با چرخش تهاجمی (تغییر IP هر 50-100 درخواست) استفاده کنید. بله، مسدودیت‌ها بیشتر خواهد بود، اما با تنظیم صحیح منطق retry (تکرار درخواست با IP جدید) این کار می‌کند.

کی پروکسی‌های مسکونی نیاز است

سناریو 1: پارس کردن Wildberries و Ozon
این پلتفرم‌ها از Cloudflare، DataDome و سیستم‌های ضد ربات خود استفاده می‌کنند. از دیتاسنترها پس از 20-50 درخواست CAPTCHA یا مسدودیت دریافت خواهید کرد. پروکسی‌های مسکونی با چرخش هر 5-10 دقیقه اجازه می‌دهند صدها هزار محصول بدون مشکل پارس شوند. یک مشتری تمام کاتالوگ Wildberries (بیش از 20 میلیون محصول) را در یک هفته پارس کرد و از یک مجموعه 1000 IP مسکونی استفاده کرد.

سناریو 2: پارس کردن با احراز هویت
برخی از ویژگی‌های محصولات (قیمت‌های عمده، موجودی در انبارها) فقط برای کاربران احراز هویت شده در دسترس هستند. اگر از طریق حساب کاربری پارس می‌کنید، استفاده از دیتاسنترها به مسدود شدن حساب منجر می‌شود. پروکسی‌های مسکونی اقدام‌های کاربر واقعی را شبیه‌سازی می‌کنند و ریسک مسدودیت را کاهش می‌دهند.

سناریو 3: هدف‌گذاری جغرافیایی
قیمت‌ها و موجودی محصولات در Wildberries، Ozon، یاندکس مارکت به منطقه کاربر بستگی دارد. برای جمع‌آوری داده‌ها در مسکو، سن‌پترزبورگ و یکتربورگ به طور همزمان، به پروکسی‌های مسکونی با انتخاب شهر نیاز دارید. دیتاسنترها کنترل دقیق جغرافیایی را امکان‌پذیر نمی‌کنند.

فرمول انتخاب نوع پروکسی:

  • حجم < 10,000 محصول در روز + عدم وجود حفاظت سخت = دیتاسنترها
  • حجم > 10,000 محصول در روز + Wildberries/Ozon = پروکسی‌های مسکونی
  • پارس کردن با احراز هویت + ریسک مسدودیت حساب = پروکسی‌های مسکونی
  • نیاز به هدف‌گذاری جغرافیایی در شهرهای روسیه = پروکسی‌های مسکونی
  • پروژه بحرانی + عدم تحمل به مسدودیت‌ها = پروکسی‌های موبایل

تنظیم چرخش IP: فواصل و استراتژی‌ها

چرخش IP — تغییر خودکار پروکسی سرور پس از تعداد مشخصی درخواست یا زمان معین است. تنظیم صحیح چرخش کلید پارس پایدار بدون مسدودیت است.

انواع چرخش پروکسی

1. چرخش بر اساس زمان (Time-based rotation)
IP در فواصل ثابت تغییر می‌کند: 5 دقیقه، 10 دقیقه، 30 دقیقه. این ساده‌ترین روش است، اما موثرترین نیست. اگر شما 200 درخواست در 5 دقیقه انجام دهید و محدودیت پلتفرم 100 درخواست از IP باشد، باز هم مسدود خواهید شد.

کی استفاده کنیم: برای پروکسی‌های مسکونی با بار کم (تا 50 درخواست در IP). به عنوان مثال، پارس کردن Wildberries با فاصله 3-5 ثانیه بین درخواست‌ها — چرخش هر 10 دقیقه بهینه خواهد بود.

2. چرخش بر اساس تعداد درخواست‌ها (Request-based rotation)
IP پس از N درخواست تغییر می‌کند: 50، 100، 200. این دقیق‌تر از چرخش زمانی است، اما نیاز به پیگیری شمارنده درخواست‌ها در کد پارسر دارد.

کی استفاده کنیم: برای دیتاسنترها و پارس کردن تهاجمی. به عنوان مثال، شما می‌دانید که Ozon پس از 80 درخواست از IP مسدود می‌کند — چرخش را هر 70 درخواست با احتیاط تنظیم کنید.

3. چرخش بر اساس هر درخواست (Per-request rotation)
هر درخواست از طریق یک IP جدید انجام می‌شود. حداکثر حفاظت در برابر مسدودیت‌ها، اما گران‌ترین استراتژی برای پروکسی‌های مسکونی (مصرف ترافیک به دلیل ایجاد اتصالات جدید افزایش می‌یابد).

کی استفاده کنیم: برای دور زدن سخت‌ترین حفاظت‌ها (Cloudflare در حالت "Under Attack")، پارس کردن با ریسک بالای مسدودیت حساب، جمع‌آوری داده‌های رقبایی که پارس کردن را پیگیری می‌کنند.

فواصل چرخش پیشنهادی برای پلتفرم‌های محبوب

پلتفرم نوع پروکسی فاصله چرخش تاخیر بین درخواست‌ها
Wildberries پروکسی‌های مسکونی هر 5-10 دقیقه یا 50 درخواست 2-4 ثانیه
Ozon پروکسی‌های مسکونی هر 7-12 دقیقه یا 60 درخواست 3-5 ثانیه
یاندکس مارکت پروکسی‌های مسکونی هر 10-15 دقیقه یا 80 درخواست 2-3 ثانیه
Avito (دسته محصولات) دیتاسنترها هر 15-20 دقیقه یا 100 درخواست 1-2 ثانیه
AliExpress پروکسی‌های مسکونی هر 3-5 دقیقه یا 30 درخواست 4-6 ثانیه

نکته مهم: این اعداد نتیجه تست در سال 2024 هستند. بازارها به طور مداوم حفاظت خود را به‌روزرسانی می‌کنند، بنابراین توصیه می‌شود با تنظیمات محافظه‌کارانه (کمتر درخواست، بیشتر تاخیر) شروع کنید و به تدریج بار را افزایش دهید و درصد مسدودیت‌ها را پیگیری کنید.

استراتژی چرخش "هوشمند"

به جای فواصل ثابت، از چرخش تطبیقی بر اساس پاسخ‌های سرور استفاده کنید:

  • HTTP 429 (بیش از حد درخواست) — تغییر فوری IP و افزودن این IP به لیست سیاه به مدت 30-60 دقیقه.
  • HTTP 403 (ممنوع) یا CAPTCHA — تغییر IP و افزایش تاخیر بین درخواست‌ها به میزان 50%.
  • HTTP 503 (سرویس در دسترس نیست) — ممکن است مشکل از پروکسی نباشد، بلکه به دلیل بارگذاری سایت باشد. توقف 30-60 ثانیه بدون تغییر IP.
  • درخواست‌های موفق متوالی > 100 — می‌توانید کمی تاخیر را کاهش دهید یا تعداد درخواست‌ها را قبل از چرخش افزایش دهید.

این منطق در کد پارسر پیاده‌سازی می‌شود و می‌تواند تا 30-40% ترافیک پروکسی را صرفه‌جویی کند و از چرخش‌های غیرضروری جلوگیری کند.

دور زدن سیستم‌های ضد ربات Wildberries، Ozon و یاندکس مارکت

بازارهای مدرن از حفاظت چند لایه‌ای استفاده می‌کنند: از بررسی ساده User-Agent تا اثر انگشت پیشرفته مرورگر. تنها پروکسی‌ها کافی نیستند — به یک استراتژی جامع برای دور زدن نیاز است.

سطح 1: هدرهای HTTP صحیح

حداقل مجموعه هدرهایی که باید پارسر شما ارسال کند:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Cache-Control: max-age=0

نکات حیاتی:

  • User-Agent باید با مرورگر واقعی مطابقت داشته باشد. از نسخه‌های به‌روز Chrome 120+، Firefox 121+ استفاده کنید. از نسخه‌های قدیمی (Chrome 90) استفاده نکنید — این یک علامت خطر است.
  • Accept-Language باید "ru-RU" برای پلتفرم‌های روسی باشد. اگر با هدر "en-US" پارس می‌کنید، سایت عدم تطابق را درک می‌کند (IP از روسیه، اما زبان انگلیسی).
  • هدرهای Sec-Fetch-* از Chrome 76+ ظاهر شده‌اند و برای سایت‌های مدرن الزامی هستند. عدم وجود آنها پارسر قدیمی را نشان می‌دهد.

سطح 2: اجرای JavaScript

Wildberries و Ozon قیمت‌ها، ویژگی‌ها و موجودی‌ها را از طریق JavaScript پس از بارگذاری صفحه بارگذاری می‌کنند. اگر پارسر شما با requests/curl فقط HTML را دانلود کند، صفحه خالی یا یک صفحه خطا دریافت خواهد کرد.

راه حل: از مرورگرهای بدون سر استفاده کنید — Puppeteer (Node.js)، Playwright (Python/Node.js)، Selenium. آنها به طور کامل صفحه را رندر می‌کنند، JS را اجرا می‌کنند و HTML نهایی را دریافت می‌کنند.

مشکل مرورگرهای بدون سر: سایت‌ها به راحتی آنها را با پارامترهای navigator.webdriver === true، عدم وجود افزونه‌ها، اندازه‌های خاص Canvas شناسایی می‌کنند. درصد شناسایی Chrome بدون سر حدود 80-90% است.

راه حل مشکل: از کتابخانه‌ها برای حالت استلث استفاده کنید:

  • puppeteer-extra-plugin-stealth (Node.js) — Puppeteer را به عنوان Chrome معمولی مخفی می‌کند و بیش از 30 پارامتر اثر انگشت را اصلاح می‌کند.
  • undetected-chromedriver (Python) — نسخه اصلاح شده Selenium ChromeDriver که توسط اکثر سیستم‌های ضد ربات شناسایی نمی‌شود.
  • playwright-stealth (Python) — مشابه برای Playwright با پشتیبانی از Firefox و WebKit.

سطح 3: دور زدن Cloudflare و DataDome

Wildberries از Cloudflare Bot Management استفاده می‌کند، Ozon از DataDome. این سیستم‌ها نه تنها IP و هدرها را تحلیل می‌کنند، بلکه رفتار را نیز بررسی می‌کنند: سرعت اسکرول، حرکات ماوس، زمان بارگذاری صفحه.

نشانه‌های Cloudflare Challenge: به جای محتوا، صفحه "Checking your browser..." را با تاخیر 5 ثانیه مشاهده می‌کنید. در کد این یک چالش JavaScript است که مرورگر را بررسی می‌کند.

چگونه دور بزنیم:

  • FlareSolverr — سرویس پروکسی که به طور خودکار Cloudflare Challenge را حل می‌کند. شما URL را به آن ارسال می‌کنید و آن کوکی‌ها را برای دور زدن برمی‌گرداند. در 70-80% موارد کار می‌کند.
  • Playwright با انتظار — صفحه را در مرورگر بدون سر بارگذاری کنید، 10-15 ثانیه صبر کنید (تا JS اجرا شود)، کوکی‌ها را استخراج کنید و از آنها در درخواست‌های HTTP معمولی استفاده کنید. این منابع را صرفه‌جویی می‌کند: مرورگر فقط برای دریافت کوکی‌ها نیاز است، بعداً از requests برای پارس کردن استفاده کنید.
  • پروکسی‌های مسکونی + مرورگر استلث — این ترکیب بیش از 95% موفقیت در دور زدن را فراهم می‌کند. Cloudflare IP واقعی کاربر و اثر انگشت صحیح مرورگر را می‌بیند.

مهم: Cloudflare به طور مداوم حفاظت خود را به‌روزرسانی می‌کند. آنچه در دسامبر 2024 کار می‌کرد ممکن است در مارس 2025 کار نکند. همیشه یک برنامه پشتیبان داشته باشید: حل دستی CAPTCHA از طریق سرویس‌های 2Captcha/AntiCaptcha یا تغییر به API بازار (اگر در دسترس باشد).

سطح 4: شبیه‌سازی رفتار کاربر

سیستم‌های ضد ربات پیشرفته الگوهای رفتاری را پیگیری می‌کنند. یک کاربر واقعی صفحه را اسکرول می‌کند، ماوس را حرکت می‌دهد و گاهی به عقب برمی‌گردد. ربات کارت‌های محصولات را با فاصله ایده‌آل 2.000 ثانیه باز می‌کند.

چگونه شبیه‌سازی کنیم:

  • تصادفی‌سازی تاخیرها — به جای 3 ثانیه ثابت از random.uniform(2.5, 5.0) استفاده کنید. تاخیرهای طولانی نادر (15-30 ثانیه) را اضافه کنید تا حواس کاربر را پرت کند.
  • اسکرول کردن صفحه — در Puppeteer/Playwright اسکرول را قبل از استخراج داده‌ها اضافه کنید: await page.evaluate(() => window.scrollBy(0, 500)).
  • حرکات ماوس — کتابخانه ghost-cursor برای Puppeteer مسیرهای واقع‌گرایانه حرکت ماوس را تولید می‌کند.
  • انتقال از طریق جستجو — کارت‌های محصولات را به طور مستقیم از طریق URL باز نکنید. ابتدا به صفحه اصلی بروید، جستجو کنید و روی محصول در نتایج کلیک کنید. این طبیعی به نظر می‌رسد.

ابزارهای محبوب برای پارس کردن با پشتیبانی از پروکسی

برای پارس کردن ویژگی‌های محصولات نیازی به نوشتن کد از ابتدا نیست. ابزارهای آماده با رابط بصری، پشتیبانی از پروکسی و دور زدن خودکار حفاظت وجود دارند.

Octoparse — پارسر بدون کد

توضیحات: برنامه دسکتاپ برای Windows/Mac با سازنده بصری پارسرها. شما بر روی عناصر صفحه (نام محصول، قیمت، ویژگی‌ها) کلیک می‌کنید و برنامه به طور خودکار قوانین استخراج را ایجاد می‌کند.

پشتیبانی از پروکسی: داخلی. در تنظیمات، لیست پروکسی را مشخص می‌کنید و برنامه به طور خودکار آنها را چرخش می‌دهد. از HTTP، HTTPS، SOCKS5 پشتیبانی می‌کند. یکپارچگی با ارائه‌دهندگان Bright Data، Smartproxy وجود دارد.

مزایا: نیازی به کد نیست، با سایت‌های JavaScript کار می‌کند، برنامه‌ریز وظایف داخلی، صادرات به Excel/CSV/JSON.
معایب: اشتراک پولی از 75 دلار در ماه، کندتر از کد Python، محدودیت در تعداد صفحات در نسخه رایگان.

کی استفاده کنیم: برای پروژه‌های کوچک (تا 50,000 محصول)، اگر شما برنامه‌نویس نیستید یا به یک پروتوتایپ سریع نیاز دارید.

ParseHub — پارسر ابری

توضیحات: مشابه Octoparse، اما در ابر کار می‌کند. شما پارسر را در برنامه دسکتاپ تنظیم می‌کنید و بر روی سرورهای ParseHub اجرا می‌شود. برای وظایف طولانی (پارس کردن بیش از 100,000 محصول) مناسب است.

پشتیبانی از پروکسی: فقط در طرح‌های پولی (از 149 دلار در ماه). می‌توانید لیست پروکسی خود را بارگذاری کنید یا از IP‌های مسکونی داخلی ParseHub استفاده کنید.

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

Scrapy (Python) — برای برنامه‌نویسان

توضیحات: فریم‌ورکی برای ایجاد پارسرها در Python. انعطاف‌پذیرترین و سریع‌ترین گزینه — می‌توانید میلیون‌ها محصول را در روز پارس کنید. نیاز به دانش متوسط Python دارد.

پشتیبانی از پروکسی: از طریق middleware. راه‌حل‌های محبوب: scrapy-rotating-proxies (چرخش از لیست)، scrapy-proxy-pool (یکپارچگی با API ارائه‌دهندگان). تنظیم آن 10-15 دقیقه طول می‌کشد.

مزایا: رایگان، بسیار سریع (درخواست‌های غیرهمزمان)، کنترل کامل بر منطق، جامعه بزرگ.
معایب: نیاز به نوشتن کد، مشکلات با سایت‌های JavaScript (نیاز به یکپارچگی با Splash یا Playwright).

کی استفاده کنیم: برای پروژه‌های جدی با حجم 100,000+ محصول در روز، اگر برنامه‌نویس در تیم دارید.

Apify — بازار پارسرهای آماده

توضیحات: پلتفرمی با هزاران پارسر آماده (که "اکتورها" نامیده می‌شوند) برای سایت‌های محبوب. راه‌حل‌های آماده برای Amazon، eBay، AliExpress وجود دارد. برای بازارهای روسی انتخاب کمتری وجود دارد، اما می‌توان توسعه را سفارش داد.

پشتیبانی از پروکسی: در تمام اکتورها داخلی است. Apify پروکسی‌های مسکونی خود را ارائه می‌دهد (پرداخت بر اساس ترافیک) یا می‌توانید پروکسی‌های خود را متصل کنید.

مزایا: راه‌حل‌های آماده، اجرای ابری، API برای اتوماسیون، پروکسی‌های داخلی.
معایب: گران (از 49 دلار در ماه + هزینه پروکسی)، وابستگی به پلتفرم، محدودیت در سفارشی‌سازی.

مقایسه ابزارها

ابزار نیاز به کد دارد؟ قیمت سرعت برای چه کسانی
Octoparse خیر از 75 دلار در ماه متوسط بازاریاب‌ها، تحلیلگران بدون برنامه‌نویسی
ParseHub خیر از 149 دلار در ماه متوسط همان کسانی که می‌خواهند اجرای ابری داشته باشند
Scrapy بله (Python) رایگان بسیار بالا برنامه‌نویسان، حجم‌های بزرگ داده
Apify خیر (اکتورها آماده) از 49 دلار در ماه + هزینه پروکسی بالا کسب‌وکار، نیاز به راه‌حل‌های آماده
Puppeteer/Playwright بله (JS/Python) رایگان متوسط (مرورگرهای سنگین) برنامه‌نویسان، سایت‌های پیچیده JS

تنظیم گام به گام پروکسی در پارسر

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

تنظیم در Octoparse

گام 1: Octoparse را باز کنید و یک وظیفه پارس جدید ایجاد کنید. URL صفحه شروع را وارد کنید (به عنوان مثال، دسته محصولات در Wildberries).

گام 2: به منوی "Settings" → "Advanced Settings" → "Proxy" بروید. "استفاده از پروکسی سفارشی" را انتخاب کنید.

گام 3: پروکسی را به فرمت زیر اضافه کنید:

http://username:password@proxy-server.com:8080
socks5://username:password@proxy-server.com:1080

گام 4: گزینه "Rotate proxy" را فعال کنید و فاصله چرخش را تنظیم کنید. برای Wildberries توصیه می‌شود "چرخش در هر 50 درخواست" یا "چرخش هر 10 دقیقه".

گام 5: روی "Test Proxy" کلیک کنید — Octoparse در دسترسی هر پروکسی را بررسی می‌کند. پروکسی‌های غیرعملی را از لیست حذف کنید.

گام 6: در بخش "Speed" تاخیر بین درخواست‌ها را تنظیم کنید: 2-4 ثانیه برای پروکسی‌های مسکونی، 3-5 ثانیه برای دیتاسنترها.

تنظیم در Scrapy (Python)

گام 1: کتابخانه برای چرخش پروکسی را نصب کنید:

pip install scrapy-rotating-proxies

گام 2: یک فایل proxies.txt با لیست پروکسی‌ها (هر کدام در یک خط) ایجاد کنید:

http://user:pass@1.2.3.4:8080
http://user:pass@5.6.7.8:8080
socks5://user:pass@9.10.11.12:1080

گام 3: در فایل settings.py پروژه Scrapy خود، موارد زیر را اضافه کنید:

ROTATING_PROXY_LIST_PATH = 'proxies.txt'

DOWNLOADER_MIDDLEWARES = {
    'rotating_proxies.middlewares.RotatingProxyMiddleware': 610,
    'rotating_proxies.middlewares.BanDetectionMiddleware': 620,
}

# تاخیر بین درخواست‌ها (به ثانیه)
DOWNLOAD_DELAY = 3

# تصادفی‌سازی تاخیر (±50%)
RANDOMIZE_DOWNLOAD_DELAY = True

# درخواست‌های همزمان (نه بیشتر از 16 برای پروکسی‌های مسکونی)
CONCURRENT_REQUESTS = 8

گام 4: Scrapy به طور خودکار پروکسی‌ها را در هر درخواست چرخش می‌دهد. اگر پروکسی خطا برگرداند (HTTP 403، 429، زمان‌بر)، به عنوان "بد" علامت‌گذاری می‌شود و به طور موقت از چرخش حذف می‌شود.

تنظیم در Puppeteer (Node.js)

گام 1: Puppeteer و پلاگین برای حالت استلث را نصب کنید:

npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth

گام 2: یک اسکریپت با پشتیبانی از پروکسی ایجاد کنید:

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

const proxyList = [
  'http://user:pass@proxy1.com:8080',
  'http://user:pass@proxy2.com:8080'
];

let currentProxyIndex = 0;

async function scrapeWithProxy(url) {
  const proxy = proxyList[currentProxyIndex];
  currentProxyIndex = (currentProxyIndex + 1) % proxyList.length;

  const browser = await puppeteer.launch({
    headless: true,
    args: [`--proxy-server=${proxy}`]
  });

  const page = await browser.newPage();
  
  // احراز هویت پروکسی (در صورت نیاز)
  await page.authenticate({
    username: 'user',
    password: 'pass'
  });

  await page.goto(url, { waitUntil: 'networkidle2' });
  
  // استخراج داده‌ها
  const data = await page.evaluate(() => {
    return {
      title: document.querySelector('.product-title')?.innerText,
      price: document.querySelector('.product-price')?.innerText,
    };
  });

  await browser.close();
  return data;
}

گام 3: تابع scrapeWithProxy را با URL مورد نظر خود فراخوانی کنید و داده‌ها را استخراج کنید.

```