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

راهنمای جامع پروکسی‌ها برای خزش وب و استخراج داده

در این مقاله: خواهید آموخت که چرا پروکسی‌ها در سال ۲۰۲۵ به ابزاری ضروری برای وب اسکرپینگ تبدیل شده‌اند، سیستم‌های ضد ربات مدرن (Cloudflare، DataDome) چگونه کار می‌کنند، چه نوع پروکسی‌هایی بهتر هستند...

📅۲۳ آبان ۱۴۰۴

در این مقاله: خواهید آموخت که چرا پراکسی‌ها در سال ۲۰۲۵ به ابزاری ضروری برای وب اسکرپینگ تبدیل شده‌اند، سیستم‌های ضد ربات مدرن (مانند Cloudflare، DataDome) چگونه کار می‌کنند، کدام انواع پراکسی برای استخراج داده‌ها مناسب‌تر هستند، و چگونه پراکسی مناسب را برای وظایف خود انتخاب کنید. این مطالب بر اساس داده‌های به‌روز و تجربه عملی استوار است.

🎯 چرا پراکسی برای استخراج داده‌ها ضروری است

وب اسکرپینگ (Web Scraping) به معنای جمع‌آوری خودکار داده‌ها از وب‌سایت‌ها است. در سال ۲۰۲۵، این فناوری برای کسب‌وکارها حیاتی است: پایش قیمت رقبا، جمع‌آوری داده برای یادگیری ماشین، تجمیع محتوا و تحلیل بازار. اما وب‌سایت‌های مدرن به شدت در برابر ربات‌ها محافظت می‌شوند و بدون پراکسی، استخراج داده‌های مؤثر تقریباً غیرممکن است.

دلایل اصلی استفاده از پراکسی

🚫 دور زدن مسدودسازی‌های IP

وب‌سایت‌ها تعداد درخواست‌ها از هر آدرس IP را ردیابی می‌کنند. در صورت عبور از حد مجاز (معمولاً ۱۰ تا ۱۰۰ درخواست در دقیقه)، مسدود می‌شوید. پراکسی‌ها به شما اجازه می‌دهند درخواست‌ها را بین تعداد زیادی آدرس IP توزیع کنید و نامرئی بمانید.

🌍 دسترسی جغرافیایی

بسیاری از وب‌سایت‌ها محتوا را بر اساس کشور کاربر نمایش می‌دهند. برای استخراج داده‌های جهانی، به پراکسی‌هایی از کشورهای مختلف نیاز دارید. برای مثال، برای پایش قیمت آمازون در آمریکا، به IPهای آمریکایی نیاز دارید.

⚡ پردازش موازی

بدون پراکسی، شما به یک IP و درخواست‌های متوالی محدود هستید. با یک استخر (Pool) پراکسی می‌توانید صدها درخواست موازی ارسال کنید و سرعت استخراج داده را ۱۰ تا ۱۰۰ برابر افزایش دهید. این برای حجم بالای داده حیاتی است.

🔒 ناشناس ماندن و امنیت

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

⚠️ چه اتفاقی بدون پراکسی می‌افتد

  • مسدودسازی فوری — IP شما پس از ۵۰ تا ۱۰۰ درخواست مسدود می‌شود
  • CAPTCHA در هر مرحله — مجبور به حل دستی کپچاها خواهید شد
  • داده‌های ناقص — فقط بخش محدودی از داده‌ها را دریافت می‌کنید
  • سرعت پایین — یک IP مساوی است با درخواست‌های متوالی
  • تشخیص ربات — وب‌سایت‌های مدرن اتوماسیون را فوراً شناسایی می‌کنند

🌐 چشم‌انداز وب اسکرپینگ در سال ۲۰۲۵

صنعت وب اسکرپینگ در سال ۲۰۲۵ شاهد تغییرات بی‌سابقه‌ای است. از یک سو، تقاضا برای داده‌ها به صورت نمایی در حال رشد است — مدل‌های هوش مصنوعی به مجموعه داده‌های آموزشی نیاز دارند و کسب‌وکارها به تحلیل بلادرنگ (real-time) نیازمندند. از سوی دیگر، سیستم‌های دفاعی پیچیده‌تر می‌شوند.

روندهای کلیدی ۲۰۲۵

۱. سیستم‌های ضد ربات مبتنی بر هوش مصنوعی

یادگیری ماشین اکنون الگوهای رفتاری را تحلیل می‌کند: حرکت ماوس، سرعت اسکرول، زمان بین کلیک‌ها. سیستم‌هایی مانند DataDome ربات‌ها را با دقت ۹۹.۹۹٪ در کمتر از ۲ میلی‌ثانیه شناسایی می‌کنند.

  • تحلیل سیگنال‌های سمت کاربر (client-side) و سمت سرور (server-side)
  • اثر انگشت رفتاری (Behavioral fingerprinting)
  • نرخ خطای مثبت کاذب (False positive rate) کمتر از ۰.۰۱٪

۲. حفاظت چند لایه

وب‌سایت‌ها دیگر تنها به یک فناوری متکی نیستند. مدیریت ربات Cloudflare ترکیبی از چالش‌های JS، اثر انگشت TLS، پایگاه‌های داده اعتبار IP و تحلیل رفتاری است. دور زدن همزمان همه لایه‌ها کار دشواری است.

۳. محدودیت نرخ (Rate Limiting) به عنوان استاندارد

تقریباً هر وب‌سایت بزرگی از محدودیت نرخ استفاده می‌کند — محدود کردن تعداد درخواست‌ها از یک منبع در یک دوره زمانی. محدودیت‌های معمول: ۱۰ تا ۱۰۰ درخواست در دقیقه برای APIهای عمومی، ۱ تا ۵ درخواست در ثانیه برای صفحات معمولی. محدودیت نرخ چالش‌برانگیز (Challenge rate-limiting) در صورت عبور از آستانه‌ها، کپچا اعمال می‌کند.

آمار بازار

شاخص ۲۰۲۳ ۲۰۲۵ تغییر
وب‌سایت‌های دارای حفاظت ضد ربات ۴۳٪ ۷۸٪ +۳۵٪
نرخ موفقیت بدون پراکسی ۲۵٪ ۸٪ -۱۷٪
میانگین محدودیت نرخ (درخواست در دقیقه) ۱۵۰ ۶۰ -۶۰٪
قیمت پراکسی‌های با کیفیت $۵-۱۲/گیگابایت $۱.۵-۴/گیگابایت -۵۰٪

🛡️ سیستم‌های ضد ربات مدرن

درک نحوه کار سیستم‌های ضد ربات برای اسکرپینگ موفق حیاتی است. در سال ۲۰۲۵، دفاع‌ها از مسدودسازی‌های ساده IP به سیستم‌های چند لایه پیچیده با یادگیری ماشین تغییر یافته‌اند.

روش‌های تشخیص ربات

اعتبار IP (IP Reputation)

پایگاه‌های داده IPهای پراکسی شناخته شده (IPهای دیتاسنتر به راحتی شناسایی می‌شوند). آدرس‌های IP بر اساس شماره سیستم مستقل (ASN)، سابقه سوءاستفاده و نوع (مسکونی/دیتاسنتر) طبقه‌بندی می‌شوند.

اثر انگشت TLS/HTTP

تحلیل دست‌دهی TLS (اثر انگشت JA3)، ترتیب هدرهای HTTP، و نسخه‌های پروتکل. ربات‌ها اغلب از کتابخانه‌های استاندارد با الگوهای مشخص استفاده می‌کنند.

چالش‌های جاوا اسکریپت (JavaScript Challenges)

اجرای محاسبات پیچیده JS در مرورگر. کلاینت‌های ساده HTTP (requests، curl) قادر به اجرای JS نیستند. نیاز به مرورگرهای بدون رابط کاربری (headless browsers) مانند Puppeteer یا Selenium است.

تحلیل رفتاری (Behavioral Analysis)

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

سطوح مسدودسازی

۱. محدودیت‌های نرم (Soft Restrictions)

  • اعمال CAPTCHA
  • کاهش سرعت پاسخ‌ها
  • پنهان کردن بخشی از داده‌ها

۲. مسدودسازی‌های متوسط

  • HTTP 403 Forbidden
  • HTTP 429 Too Many Requests
  • مسدودسازی موقت IP (۱ تا ۲۴ ساعت)

۳. بن‌های سخت (Hard Bans)

  • مسدودسازی دائمی IP
  • مسدودسازی کل زیرشبکه (C-Class)
  • اضافه شدن به لیست‌های سیاه جهانی

☁️ Cloudflare، DataDome و سایر محافظت‌ها

برترین پلتفرم‌های ضد ربات

مدیریت ربات Cloudflare

محبوب‌ترین محافظت — مورد استفاده در بیش از ۲۰٪ از وب‌سایت‌های اینترنت. ترکیبی از تکنیک‌های متعدد:

  • چالش JS — Cloudflare Turnstile (جایگزین reCAPTCHA)
  • اثر انگشت TLS — اثر انگشت‌های JA3/JA4
  • هوش IP — پایگاه داده‌ای از پراکسی‌های شناخته شده
  • امتیازدهی رفتاری — تحلیل اسکرول/ماوس/زمان‌بندی
  • محدودیت نرخ — محدودیت‌های تطبیقی بر اساس رفتار

دور زدن: نیاز به پراکسی‌های مسکونی/موبایل با کیفیت + مرورگر بدون رابط کاربری با اثر انگشت‌های صحیح + رفتار شبیه انسان.

DataDome

محافظت مبتنی بر هوش مصنوعی با تمرکز بر یادگیری ماشین. تصمیم‌گیری در کمتر از ۲ میلی‌ثانیه با دقت ۹۹.۹۹٪.

  • مدل‌های ML — آموزش دیده بر روی پتابایت‌ها داده
  • سیگنال‌های کاربر و سرور — تحلیل دو طرفه
  • تحلیل ASN IP — ارزیابی اعتبار بر اساس ASN
  • تناوب درخواست (Request cadence) — تحلیل فرکانس و الگوهای درخواست
  • آنتروپی هدر (Header entropy) — تشخیص ناهنجاری در هدرها

نرخ خطای مثبت کاذب: کمتر از ۰.۰۱٪ — سیستم بسیار دقیقی است، اما نسبت به پراکسی‌ها تهاجمی عمل می‌کند.

PerimeterX (HUMAN)

تحلیل رفتاری مبتنی بر بیومتریک. ردیابی حرکات کوچک ماوس، فشار روی صفحه لمسی، و الگوهای ناوبری.

Imperva (Incapsula)

سطح حفاظتی سازمانی (Enterprise). در وب‌سایت‌های مالی و دولتی استفاده می‌شود. دور زدن آن بدون پراکسی‌های مسکونی پریمیوم بسیار دشوار است.

⏱️ محدودیت نرخ (Rate Limiting) و تشخیص الگو

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

انواع محدودیت نرخ

۱. پنجره ثابت (Fixed Window)

محدودیت ثابت در یک بازه زمانی مشخص. مثلاً: ۱۰۰ درخواست در دقیقه. در ساعت ۱۰:۰۰:۰۰ شمارنده صفر می‌شود.

پنجره ۱۰:۰۰-۱۰:۰۱: حداکثر ۱۰۰ درخواست
پنجره ۱۰:۰۱-۱۰:۰۲: شمارنده صفر می‌شود

۲. پنجره لغزان (Sliding Window)

پنجره لغزان. درخواست‌های N ثانیه گذشته از لحظه فعلی محاسبه می‌شوند. روشی دقیق‌تر و منصفانه‌تر.

۳. سطل توکن (Token Bucket)

شما یک "سطل توکن" دارید (مثلاً ۱۰۰ عدد). هر درخواست یک توکن مصرف می‌کند. توکن‌ها با نرخ X در ثانیه بازیابی می‌شوند. این روش امکان انفجارهای کوتاه فعالیت را فراهم می‌کند.

🎯 استراتژی‌های دور زدن محدودیت نرخ

  • چرخش پراکسی (Proxy Rotation) — هر IP محدودیت خود را دارد، از یک استخر استفاده می‌کنیم
  • افزودن تأخیر — شبیه‌سازی رفتار انسانی (۰.۵ تا ۳ ثانیه بین درخواست‌ها)
  • تصادفی‌سازی فواصل — نه دقیقاً ۱ ثانیه، بلکه ۰.۸ تا ۱.۵ ثانیه به صورت تصادفی
  • احترام به robots.txt — رعایت Crawl-delay
  • توزیع بار — اسکرپینگ در چند رشته با IPهای مختلف

🔄 انواع پراکسی برای اسکرپینگ

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

🏢

پراکسی‌های دیتاسنتر (Datacenter)

IPهایی از دیتاسنترها (AWS، Google Cloud، OVH). سریع و ارزان هستند، اما به راحتی توسط وب‌سایت‌ها شناسایی می‌شوند.

✅ مزایا:

  • ارزان‌ترین (۱.۵ تا ۳ دلار در گیگابایت)
  • سرعت بالا (بیش از ۱۰۰ مگابیت بر ثانیه)
  • IPهای پایدار

❌ معایب:

  • به راحتی قابل تشخیص هستند (ASN مشخص است)
  • نرخ مسدودسازی بالا (۵۰-۸۰٪)
  • برای وب‌سایت‌های پیچیده مناسب نیستند

مناسب برای: وب‌سایت‌های ساده بدون حفاظت، APIها، پروژه‌های داخلی

🏠

پراکسی‌های مسکونی (Residential)

IPهای کاربران خانگی واقعی از طریق ISPها (ارائه دهندگان خدمات اینترنت). شبیه کاربران عادی به نظر می‌رسند.

✅ مزایا:

  • معتبر به نظر می‌رسند
  • نرخ مسدودسازی پایین (۱۰-۲۰٪)
  • استخرهای IP عظیم (میلیون‌ها)
  • هدف‌گیری جغرافیایی بر اساس کشور

❌ معایب:

  • گران‌تر (۲.۵ تا ۱۰ دلار در گیگابایت)
  • سرعت کمتر (۵ تا ۵۰ مگابیت بر ثانیه)
  • IPهای ناپایدار (ممکن است تغییر کنند)

مناسب برای: تجارت الکترونیک، شبکه‌های اجتماعی، وب‌سایت‌های دارای حفاظت، پایش SEO

📱

پراکسی‌های موبایل (Mobile)

IPهای اپراتورهای موبایل (3G/4G/5G). قابل اعتمادترین‌ها هستند، زیرا هزاران کاربر پشت یک IP مشترک هستند.

✅ مزایا:

  • تقریباً مسدود نمی‌شوند (نرخ بن ~۵٪)
  • IP مشترک (هزاران کاربر پشت یک IP)
  • ایده‌آل برای منابع با حفاظت شدید
  • چرخش خودکار IP

❌ معایب:

  • گران‌ترین (۳ تا ۱۵ دلار در گیگابایت)
  • کندتر از مسکونی‌ها
  • استخر IP محدود

مناسب برای: اینستاگرام، تیک‌تاک، بانک‌ها، حداکثر حفاظت

⚔️ مقایسه: دیتاسنتر در مقابل مسکونی در مقابل موبایل

مقایسه جزئیات

پارامتر دیتاسنتر مسکونی موبایل
نرخ موفقیت ۲۰-۵۰٪ ۸۰-۹۰٪ ۹۵٪+
سرعت ۱۰۰+ مگابیت بر ثانیه ۱۰-۵۰ مگابیت بر ثانیه ۵-۳۰ مگابیت بر ثانیه
قیمت/گیگابایت ۱.۵-۳ دلار ۲.۵-۸ دلار ۳-۱۲ دلار
اندازه استخر ۱۰ هزار تا ۱۰۰ هزار ۱۰ میلیون تا ۱۰۰ میلیون ۱ میلیون تا ۱۰ میلیون
قابلیت تشخیص بالا پایین بسیار پایین
هدف‌گیری جغرافیایی کشور/شهر کشور/شهر/ISP کشور/اپراتور
بهترین کاربرد برای APIها، وب‌سایت‌های ساده تجارت الکترونیک، SEO شبکه‌های اجتماعی، حفاظت شدید

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

🎯 نحوه انتخاب پراکسی برای وظایف

ماتریس انتخاب پراکسی

معیارهای انتخاب:

۱. سطح حفاظت وب‌سایت هدف

  • بدون حفاظت: پراکسی دیتاسنتر
  • حفاظت پایه (محدودیت نرخ): دیتاسنتر با چرخش
  • حفاظت متوسط (Cloudflare Basic): پراکسی مسکونی
  • حفاظت بالا (Cloudflare Pro، DataDome): پراکسی مسکونی پریمیوم
  • حداکثر حفاظت (PerimeterX، شبکه‌های اجتماعی): پراکسی موبایل

۲. حجم داده

  • کمتر از ۱۰ گیگابایت/ماه: هر نوع پراکسی
  • ۱۰-۱۰۰ گیگابایت/ماه: پراکسی مسکونی یا دیتاسنتر ارزان
  • ۱۰۰-۱۰۰۰ گیگابایت/ماه: ترکیب دیتاسنتر + مسکونی
  • بیش از ۱ ترابایت/ماه: دیتاسنتر حجمی + مسکونی انتخابی

۳. بودجه

  • تا ۱۰۰ دلار/ماه: پراکسی دیتاسنتر
  • ۱۰۰-۵۰۰ دلار/ماه: پراکسی مسکونی
  • ۵۰۰-۲۰۰۰ دلار/ماه: مسکونی پریمیوم + موبایل برای وظایف حیاتی
  • بیش از ۲۰۰۰ دلار/ماه: استخرهای ترکیبی بر اساس وظیفه

۴. الزامات جغرافیایی

  • بدون محدودیت جغرافیایی: هر نوع پراکسی
  • کشور خاص: پراکسی مسکونی با هدف‌گیری جغرافیایی
  • شهر/منطقه خاص: پراکسی مسکونی پریمیوم
  • ISP خاص: پراکسی مسکونی با هدف‌گیری ISP

✅ مثال‌های کاربردی

پایش قیمت آمازون/ای‌بی

توصیه: پراکسی‌های مسکونی از کشور مورد نظر
چرا: حفاظت متوسط + محتوای جغرافیایی + حجم داده بالا

جمع‌آوری داده از اینستاگرام/تیک‌تاک

توصیه: پراکسی‌های موبایل
چرا: حفاظت ضد ربات تهاجمی + پلتفرم موبایل

پارس کردن سایت‌های خبری

توصیه: پراکسی‌های دیتاسنتر با چرخش
چرا: معمولاً بدون حفاظت جدی + حجم بالا

پایش سئو گوگل

توصیه: پراکسی‌های مسکونی از کشورهای مختلف
چرا: خروجی جغرافیایی + تشخیص IP دیتاسنتر

💰 تحلیل هزینه پراکسی برای اسکرپینگ

محاسبه صحیح بودجه پراکسی، کلید سودآوری پروژه است. بیایید سناریوهای واقعی را بررسی کرده و هزینه‌ها را محاسبه کنیم.

محاسبه ترافیک

فرمول محاسبه

ترافیک ماهانه = تعداد صفحات × اندازه صفحه × ضریب سربار (Overhead)

  • میانگین اندازه صفحه HTML: ۵۰-۲۰۰ کیلوبایت
  • با تصاویر/CSS/JS: ۵۰۰ کیلوبایت تا ۲ مگابایت
  • ضریب سربار: ۱.۲ تا ۱.۵ برابر (برای تلاش مجدد، ریدایرکت‌ها)
  • نقاط پایانی API: معمولاً ۱ تا ۵۰ کیلوبایت

مثال‌های محاسبه

سناریو ۱: پارس کردن محصولات آمازون

صفحه در روز: ۱۰,۰۰۰
اندازه صفحه: ~۱۵۰ کیلوبایت
حجم ماهانه: ۱۰,۰۰۰ × ۱۵۰ کیلوبایت × ۳۰ × ۱.۳ = ۵۸.۵ گیگابایت
نوع پراکسی: مسکونی
هزینه: ۵۸.۵ گیگابایت × ۲.۷ دلار = ۱۵۸ دلار/ماه

سناریو ۲: پایش سئو گوگل

کلمات کلیدی: ۱,۰۰۰
بررسی در روز: ۱ بار
اندازه SERP: ~۸۰ کیلوبایت
حجم ماهانه: ۱,۰۰۰ × ۸۰ کیلوبایت × ۳۰ × ۱.۲ = ۲.۸ گیگابایت
نوع پراکسی: مسکونی (کشورهای مختلف)
هزینه: ۲.۸ گیگابایت × ۲.۷ دلار = ۷.۶ دلار/ماه

سناریو ۳: پارس کردن انبوه اخبار

مقاله در روز: ۵۰,۰۰۰
اندازه مقاله: ~۳۰ کیلوبایت (فقط متن)
حجم ماهانه: ۵۰,۰۰۰ × ۳۰ کیلوبایت × ۳۰ × ۱.۲ = ۵۴ گیگابایت
نوع پراکسی: دیتاسنتر (سایت‌های ساده)
هزینه: ۵۴ گیگابایت × ۱.۵ دلار = ۸۱ دلار/ماه

بهینه‌سازی هزینه‌ها

۱. ذخیره نتایج (Caching)

HTML را به صورت محلی ذخیره کنید و تجزیه و تحلیل مجدد را بدون درخواست‌های جدید انجام دهید. تا ۵۰٪ در ترافیک صرفه‌جویی می‌شود.

۲. استفاده از API در صورت امکان

نقاط پایانی API معمولاً فقط JSON (۱ تا ۵۰ کیلوبایت) را به جای HTML کامل (بیش از ۲۰۰ کیلوبایت) برمی‌گردانند. صرفه‌جویی ۸۰-۹۰٪.

۳. مسدود کردن تصاویر

در Puppeteer/Selenium بارگذاری تصاویر، ویدئوها و فونت‌ها را مسدود کنید. صرفه‌جویی ۶۰-۷۰٪ در ترافیک.

۴. پارس کردن فقط داده‌های جدید

از چک‌سام‌ها (checksums) یا تایم‌استمپ‌ها برای تشخیص تغییرات استفاده کنید. صفحات تغییر نکرده را دوباره پارس نکنید.

💡 نکته حرفه‌ای: استراتژی ترکیبی

از ۷۰-۸۰٪ پراکسی‌های دیتاسنتر ارزان برای پارس کردن انبوه سایت‌های ساده استفاده کنید، و ۲۰-۳۰٪ پراکسی‌های مسکونی را برای سایت‌های پیچیده با حفاظت بالا نگه دارید. این کار نسبت قیمت به کیفیت را بهینه می‌کند. به عنوان مثال: برای پارس کردن ۱۰۰ هزار صفحه، از دیتاسنتر برای ۸۰ هزار صفحه ساده (۱۲0 دلار) و از مسکونی برای ۲۰ هزار صفحه محافظت شده (۵۴ دلار) استفاده کنید. مجموع: ۱۷۴ دلار به جای ۲۷۰ دلار (صرفه‌جویی ۳۵٪).

با ProxyCove اسکرپینگ را آغاز کنید!

با کد تبلیغاتی ARTHELLO ثبت‌نام کنید، موجودی خود را شارژ کنید و ۱.۳ دلار هدیه بگیرید!

ادامه در بخش ۲: استراتژی‌های چرخش IP، تنظیم پراکسی در پایتون (requests، Scrapy)، Puppeteer و Selenium، مثال‌های کد عملی برای وظایف واقعی اسکرپینگ با ProxyCove.

در این بخش: استراتژی‌های چرخش آدرس IP، جلسات چرخشی (Rotating Sessions) در مقابل جلسات ثابت (Sticky Sessions)، تنظیم پراکسی در پایتون Requests، تنظیم Scrapy با پراکسی، Puppeteer و پراکسی، Selenium با پراکسی (پایتون). مثال‌های کد کامل برای وظایف واقعی اسکرپینگ با ProxyCove.

🔄 استراتژی‌های چرخش آدرس IP

چرخش پراکسی (Proxy Rotation) تکنیک کلیدی برای اسکرپینگ موفق است. یک استراتژی چرخش مناسب می‌تواند نرخ موفقیت (Success Rate) را از ۲۰٪ به ۹۵٪ افزایش دهد. در سال ۲۰۲۵، چندین رویکرد اثبات شده وجود دارد.

استراتژی‌های اصلی

۱. چرخش برای هر درخواست

هر درخواست HTTP از طریق یک IP جدید ارسال می‌شود. حداکثر ناشناس بودن، اما ممکن است برای مدیریت سشن‌ها مشکل ایجاد کند.

مناسب برای:

  • پارس کردن لیست محصولات
  • جمع‌آوری صفحات استاتیک
  • بررسی دسته‌ای URLها
  • اسکرپینگ SERP گوگل

۲. جلسات ثابت (Sticky Sessions)

یک IP برای کل سشن کاربر (۱۰ تا ۳۰ دقیقه) استفاده می‌شود. رفتار کاربر واقعی را شبیه‌سازی می‌کند.

مناسب برای:

  • فرآیندهای چند مرحله‌ای (ورود به سیستم → داده‌ها)
  • تکمیل فرم‌ها
  • مدیریت حساب‌ها
  • سبدهای خرید تجارت الکترونیک

۳. چرخش بر اساس زمان

تغییر IP هر N دقیقه یا پس از N درخواست. تعادلی بین پایداری و ناشناس بودن.

مناسب برای:

  • جلسات پارس طولانی
  • فراخوانی API با محدودیت نرخ
  • پایش بلادرنگ

۴. چرخش هوشمند (AI-driven)

الگوریتم تصمیم می‌گیرد که چه زمانی IP را بر اساس پاسخ‌های سرور (429، 403) و الگوهای موفقیت تغییر دهد.

مناسب برای:

  • سیستم‌های ضد ربات پیچیده
  • پارس تطبیقی
  • کارایی بالا

💡 توصیه‌ها در انتخاب

  • برای سرعت بالا: چرخش در هر درخواست + استخر بزرگ پراکسی
  • برای سایت‌های پیچیده: جلسات ثابت + شبیه‌سازی رفتار
  • برای فراخوانی API: چرخش بر اساس زمان با رعایت محدودیت نرخ
  • برای شبکه‌های اجتماعی: جلسات ثابت + پراکسی موبایل (حداقل ۱۰ دقیقه برای هر IP)

⚖️ جلسات چرخشی در مقابل جلسات ثابت

مقایسه جزئی

معیار پراکسی‌های چرخشی جلسات ثابت
تغییر IP هر درخواست یا بر اساس زمان ۱۰-۳۰ دقیقه برای هر IP
ذخیره کوکی‌ها ❌ خیر ✅ بله
سرعت پارس کردن بسیار بالا متوسط
دور زدن محدودیت نرخ عالی ضعیف
فرآیندهای چند مرحله‌ای مناسب نیست ایده‌آل
مصرف پراکسی کارآمد متوسط (نگهداری طولانی‌تر)
قابلیت تشخیص پایین پایین
هزینه برای حجم یکسان پایین‌تر بالاتر (نگهداری طولانی‌تر)

🎯 حکم نهایی: از پراکسی‌های چرخشی برای استخراج داده‌های استاتیک انبوه استفاده کنید. از جلسات ثابت برای کار با حساب‌های کاربری، فرم‌ها و فرآیندهای چند مرحله‌ای استفاده کنید. ProxyCove از هر دو حالت پشتیبانی می‌کند!

🐍 تنظیم پراکسی در پایتون Requests

Requests محبوب‌ترین کتابخانه برای درخواست‌های HTTP در پایتون است. تنظیم پراکسی تنها به ۲ خط کد نیاز دارد.

تنظیمات پایه

مثال ساده

import requests # پراکسی ProxyCove (اطلاعات خود را جایگزین کنید) proxy = { "http": "http://username:password@gate.proxycove.com:8080", "https": "http://username:password@gate.proxycove.com:8080" } # ارسال درخواست از طریق پراکسی response = requests.get("https://httpbin.org/ip", proxies=proxy) print(response.json()) # IP سرور پراکسی نمایش داده می‌شود

✅ به جای username:password، اعتبار ProxyCove خود را وارد کنید

چرخش پراکسی از لیست

import requests import random # لیست پراکسی‌های ProxyCove (یا سایر ارائه‌دهندگان) proxies_list = [ "http://user1:pass1@gate.proxycove.com:8080", "http://user2:pass2@gate.proxycove.com:8080", "http://user3:pass3@gate.proxycove.com:8080", ] def get_random_proxy(): proxy_url = random.choice(proxies_list) return {"http": proxy_url, "https": proxy_url} # پارس کردن ۱۰۰ صفحه با چرخش urls = [f"https://example.com/page/{i}" for i in range(1, 101)] for url in urls: proxy = get_random_proxy() try: response = requests.get(url, proxies=proxy, timeout=10) print(f"✅ {url}: {response.status_code}") except Exception as e: print(f"❌ {url}: {str(e)}")

مدیریت خطا و تلاش مجدد (Retry)

import requests from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry # تنظیم استراتژی تلاش مجدد retry_strategy = Retry( total=3, # ۳ تلاش backoff_factor=1, # تأخیر بین تلاش‌ها status_forcelist=[429, 500, 502, 503, 504], ) adapter = HTTPAdapter(max_retries=retry_strategy) session = requests.Session() session.mount("http://", adapter) session.mount("https://", adapter) # پراکسی proxy = { "http": "http://username:password@gate.proxycove.com:8080", "https": "http://username:password@gate.proxycove.com:8080" } # درخواست با تلاش مجدد خودکار response = session.get( "https://example.com", proxies=proxy, timeout=15 )

🕷️ تنظیم Scrapy با پراکسی

Scrapy یک فریم‌ورک قدرتمند برای اسکرپینگ در مقیاس بزرگ است. این فریم‌ورک از middleware برای چرخش خودکار پراکسی پشتیبانی می‌کند.

روش ۱: تنظیمات پایه

settings.py

# settings.py # استفاده از متغیر محیطی برای پراکسی import os http_proxy = os.getenv('HTTP_PROXY', 'http://user:pass@gate.proxycove.com:8080') # Scrapy به طور خودکار از متغیر http_proxy استفاده می‌کند DOWNLOADER_MIDDLEWARES = { 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110, } # تنظیمات اضافی برای سازگاری بهتر CONCURRENT_REQUESTS = 16 # درخواست‌های موازی DOWNLOAD_DELAY = 0.5 # تأخیر بین درخواست‌ها (ثانیه) RANDOMIZE_DOWNLOAD_DELAY = True # تصادفی‌سازی تأخیر

روش ۲: Middleware سفارشی با چرخش

# middlewares.py import random from scrapy import signals class ProxyRotationMiddleware: def __init__(self): self.proxies = [ 'http://user1:pass1@gate.proxycove.com:8080', 'http://user2:pass2@gate.proxycove.com:8080', 'http://user3:pass3@gate.proxycove.com:8080', ] def process_request(self, request, spider): # انتخاب پراکسی تصادفی برای هر درخواست proxy = random.choice(self.proxies) request.meta['proxy'] = proxy spider.logger.info(f'Using proxy: {proxy}') # settings.py DOWNLOADER_MIDDLEWARES = { 'myproject.middlewares.ProxyRotationMiddleware': 100, 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110, }

روش ۳: scrapy-rotating-proxies (توصیه می‌شود)

# نصب pip install scrapy-rotating-proxies # settings.py ROTATING_PROXY_LIST = [ 'http://user1:pass1@gate.proxycove.com:8080', 'http://user2:pass2@gate.proxycove.com:8080', 'http://user3:pass3@gate.proxycove.com:8080', ] DOWNLOADER_MIDDLEWARES = { 'rotating_proxies.middlewares.RotatingProxyMiddleware': 610, 'rotating_proxies.middlewares.BanDetectionMiddleware': 620, } # تنظیمات برای تشخیص بن‌ها ROTATING_PROXY_BAN_POLICY = 'rotating_proxies.policy.BanDetectionPolicy' ROTATING_PROXY_PAGE_RETRY_TIMES = 5

✅ به طور خودکار پراکسی‌های فعال را ردیابی کرده و موارد مسدود شده را حذف می‌کند

🎭 Puppeteer و پراکسی

Puppeteer یک مرورگر کروم بدون رابط کاربری (headless) برای اتوماسیون جاوا اسکریپت است. برای دور زدن چالش‌های JS (Cloudflare، DataDome) ضروری است.

Node.js + Puppeteer

مثال پایه

const puppeteer = require('puppeteer'); (async () => { // تنظیم پراکسی ProxyCove const browser = await puppeteer.launch({ headless: true, args: [ '--proxy-server=gate.proxycove.com:8080', '--no-sandbox', '--disable-setuid-sandbox' ] }); const page = await browser.newPage(); // احراز هویت (در صورت نیاز پراکسی به لاگین/رمز عبور) await page.authenticate({ username: 'your_username', password: 'your_password' }); // پارس کردن صفحه await page.goto('https://example.com'); const content = await page.content(); console.log(content); await browser.close(); })();

your_username و your_password را با اعتبار ProxyCove خود جایگزین کنید

چرخش پراکسی در Puppeteer

const puppeteer = require('puppeteer'); const proxies = [ { server: 'gate1.proxycove.com:8080', username: 'user1', password: 'pass1' }, { server: 'gate2.proxycove.com:8080', username: 'user2', password: 'pass2' }, { server: 'gate3.proxycove.com:8080', username: 'user3', password: 'pass3' } ]; async function scrapeWithProxy(url, proxyConfig) { const browser = await puppeteer.launch({ headless: true, args: [`--proxy-server=${proxyConfig.server}`] }); const page = await browser.newPage(); await page.authenticate({ username: proxyConfig.username, password: proxyConfig.password }); await page.goto(url, { waitUntil: 'networkidle2' }); const data = await page.evaluate(() => document.body.innerText); await browser.close(); return data; } // استفاده از پراکسی‌های مختلف برای صفحات مختلف (async () => { const urls = ['https://example.com/page1', 'https://example.com/page2']; for (let i = 0; i < urls.length; i++) { const proxy = proxies[i % proxies.length]; // چرخش const data = await scrapeWithProxy(urls[i], proxy); console.log(`Page ${i + 1}:`, data.substring(0, 100)); } })();

افزونه‌های ضد تشخیص puppeteer-extra

// npm install puppeteer-extra puppeteer-extra-plugin-stealth const puppeteer = require('puppeteer-extra'); const StealthPlugin = require('puppeteer-extra-plugin-stealth'); // پلاگین، نشانه‌های مرورگر headless را پنهان می‌کند puppeteer.use(StealthPlugin()); (async () => { const browser = await puppeteer.launch({ headless: true, args: ['--proxy-server=gate.proxycove.com:8080'] }); const page = await browser.newPage(); await page.authenticate({ username: 'user', password: 'pass' }); // اکنون سایت‌ها متوجه ربات بودن نمی‌شوند! await page.goto('https://example.com'); await browser.close(); })();

✅ پلاگین Stealth نشانه‌هایی مانند webdriver، اشیاء chrome و سایر نشانه‌های اتوماسیون را پنهان می‌کند

🤖 Selenium با پراکسی (پایتون)

Selenium ابزار کلاسیک برای اتوماسیون مرورگر است. از مرورگرهای Chrome، Firefox و غیره پشتیبانی می‌کند.

Chrome + Selenium

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

from selenium import webdriver from selenium.webdriver.chrome.options import Options # تنظیم Chrome با پراکسی chrome_options = Options() chrome_options.add_argument('--headless') # بدون رابط گرافیکی chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') # پراکسی ProxyCove proxy = "gate.proxycove.com:8080" chrome_options.add_argument(f'--proxy-server={proxy}') # ایجاد درایور driver = webdriver.Chrome(options=chrome_options) # پارس کردن صفحه driver.get('https://httpbin.org/ip') print(driver.page_source) driver.quit()

پراکسی با احراز هویت (selenium-wire)

# pip install selenium-wire from seleniumwire import webdriver from selenium.webdriver.chrome.options import Options # تنظیم پراکسی با نام کاربری/رمز عبور seleniumwire_options = { 'proxy': { 'http': 'http://username:password@gate.proxycove.com:8080', 'https': 'http://username:password@gate.proxycove.com:8080', 'no_proxy': 'localhost,127.0.0.1' } } chrome_options = Options() chrome_options.add_argument('--headless') # درایور با پراکسی احراز هویت شده driver = webdriver.Chrome( options=chrome_options, seleniumwire_options=seleniumwire_options ) driver.get('https://example.com') print(driver.title) driver.quit()

✅ selenium-wire از پراکسی‌های دارای username:password پشتیبانی می‌کند (Selenium معمولی پشتیبانی نمی‌کند)

چرخش پراکسی در Selenium

from seleniumwire import webdriver from selenium.webdriver.chrome.options import Options import random # لیست پراکسی‌ها proxies = [ 'http://user1:pass1@gate.proxycove.com:8080', 'http://user2:pass2@gate.proxycove.com:8080', 'http://user3:pass3@gate.proxycove.com:8080', ] def create_driver_with_proxy(proxy_url): seleniumwire_options = { 'proxy': { 'http': proxy_url, 'https': proxy_url, } } chrome_options = Options() chrome_options.add_argument('--headless') driver = webdriver.Chrome( options=chrome_options, seleniumwire_options=seleniumwire_options ) return driver # پارس کردن چند صفحه با پراکسی‌های مختلف urls = ['https://example.com/1', 'https://example.com/2', 'https://example.com/3'] for url in urls: proxy = random.choice(proxies) driver = create_driver_with_proxy(proxy) try: driver.get(url) print(f"✅ {url}: {driver.title}") except Exception as e: print(f"❌ {url}: {str(e)}") finally: driver.quit()

📚 کتابخانه‌های چرخش پراکسی

scrapy-rotating-proxies

چرخش خودکار برای Scrapy با تشخیص بن.

pip install scrapy-rotating-proxies

requests-ip-rotator

چرخش از طریق API Gateway آمازون (IPهای رایگان).

pip install requests-ip-rotator

proxy-requests

پوششی برای requests با قابلیت چرخش و بررسی.

pip install proxy-requests

puppeteer-extra-plugin-proxy

پلاگینی برای Puppeteer با قابلیت چرخش پراکسی.

npm install puppeteer-extra-plugin-proxy

💻 مثال‌های کد کامل

مثال: پارس کردن آمازون با چرخش

import requests from bs4 import BeautifulSoup import random import time # پراکسی‌های ProxyCove PROXIES = [ {"http": "http://user1:pass1@gate.proxycove.com:8080", "https": "http://user1:pass1@gate.proxycove.com:8080"}, {"http": "http://user2:pass2@gate.proxycove.com:8080", "https": "http://user2:pass2@gate.proxycove.com:8080"}, ] # User Agents برای چرخش USER_AGENTS = [ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36', ] def scrape_amazon_product(asin): url = f"https://www.amazon.com/dp/{asin}" proxy = random.choice(PROXIES) headers = {'User-Agent': random.choice(USER_AGENTS)} try: response = requests.get(url, proxies=proxy, headers=headers, timeout=15) if response.status_code == 200: soup = BeautifulSoup(response.content, 'html.parser') # پارس کردن داده‌ها title = soup.find('span', {'id': 'productTitle'}) price = soup.find('span', {'class': 'a-price-whole'}) return { 'asin': asin, 'title': title.text.strip() if title else 'N/A', 'price': price.text.strip() if price else 'N/A', } except Exception as e: print(f"Error for {asin}: {str(e)}") return None # پارس کردن لیست محصولات asins = ['B08N5WRWNW', 'B07XJ8C8F5', 'B09G9FPHY6'] for asin in asins: product = scrape_amazon_product(asin) if product: print(f"✅ {product['title']}: {product['price']}") time.sleep(random.uniform(2, 5)) # تأخیر شبیه انسان

مثال: اسپایدر Scrapy با پراکسی

# spider.py import scrapy class ProductSpider(scrapy.Spider): name = 'products' start_urls = ['https://example.com/products'] custom_settings = { 'ROTATING_PROXY_LIST': [ 'http://user1:pass1@gate.proxycove.com:8080', 'http://user2:pass2@gate.proxycove.com:8080', ], 'DOWNLOADER_MIDDLEWARES': { 'rotating_proxies.middlewares.RotatingProxyMiddleware': 610, 'rotating_proxies.middlewares.BanDetectionMiddleware': 620, }, 'DOWNLOAD_DELAY': 1, 'CONCURRENT_REQUESTS': 8, } def parse(self, response): for product in response.css('div.product'): yield { 'name': product.css('h2.title::text').get(), 'price': product.css('span.price::text').get(), 'url': response.urljoin(product.css('a::attr(href)').get()), } # صفحه بعدی next_page = response.css('a.next::attr(href)').get() if next_page: yield response.follow(next_page, self.parse)

آماده‌اید با ProxyCove اسکرپ کنید؟

پراکسی‌های مسکونی، موبایل و دیتاسنتر برای هر وظیفه‌ای. با کد تبلیغاتی ARTHELLO موجودی خود را شارژ کنید و ۱.۳ دلار هدیه بگیرید!

بهترین قیمت‌های پراکسی برای اسکرپینگ ۲۰۲۵:

🎁 از کد تبلیغاتی ARTHELLO هنگام اولین شارژ استفاده کنید و ۱.۳ دلار اضافی به حساب خود دریافت نمایید

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

در بخش نهایی: بهترین شیوه‌های وب اسکرپینگ ۲۰۲۵، استراتژی‌های اجتناب از بن شدن، جنبه‌های قانونی پارس کردن (GDPR، CCPA)، موارد استفاده واقعی و توصیه‌های نهایی برای اسکرپینگ موفق را بررسی خواهیم کرد.

✨ بهترین شیوه‌های وب اسکرپینگ ۲۰۲۵

اسکرپینگ موفق در سال ۲۰۲۵ ترکیبی از مهارت‌های فنی، ابزارهای مناسب و رویکرد اخلاقی است. پیروی از بهترین شیوه‌ها نرخ موفقیت را از ۳۰٪ به ۹۰٪+ افزایش می‌دهد.

قوانین طلایی پارس کردن

۱. احترام به robots.txt

فایل robots.txt مشخص می‌کند کدام بخش‌های سایت قابل پارس کردن هستند. رعایت این قوانین نشانه یک اسکرپر اخلاقی است.

User-agent: *
Crawl-delay: 10
Disallow: /admin/
Disallow: /api/private/

✅ Crawl-delay را رعایت کنید و مسیرهای ممنوعه را پارس نکنید

۲. افزودن تأخیر

یک انسان در هر ثانیه ۱۰۰ درخواست ارسال نمی‌کند. رفتار طبیعی را شبیه‌سازی کنید.

  • ۰.۵ تا ۲ ثانیه بین درخواست‌ها برای سایت‌های ساده
  • ۲ تا ۵ ثانیه برای سایت‌های دارای حفاظت
  • ۵ تا ۱۰ ثانیه برای داده‌های حساس
  • تصادفی‌سازی تأخیرها (نه دقیقاً ۱ ثانیه!)

۳. چرخش User-Agent

استفاده از یک User-Agent یکسان برای درخواست‌های زیاد، پرچم قرمزی برای سیستم‌های ضد ربات است.

USER_AGENTS = [
  'Mozilla/5.0 (Windows NT 10.0) Chrome/120.0',
  'Mozilla/5.0 (Macintosh) Safari/17.0',
  'Mozilla/5.0 (X11; Linux) Firefox/121.0',
]

۴. مدیریت خطاها

شبکه ناپایدار است. پراکسی‌ها از کار می‌افتند. سایت‌ها 503 برمی‌گردانند. همیشه از منطق تلاش مجدد (retry logic) استفاده کنید.

  • ۳ تا ۵ تلاش با وقفه نمایی (exponential backoff)
  • ثبت خطاها
  • استفاده از پراکسی جایگزین در صورت بن شدن
  • ذخیره پیشرفت

۵. استفاده از سشن‌ها (Sessions)

سشن‌های Requests کوکی‌ها را ذخیره می‌کنند، اتصالات TCP را مجدداً استفاده می‌کنند (سریع‌تر)، و هدرها را مدیریت می‌کنند.

session = requests.Session()
session.headers.update({...})

۶. ذخیره نتایج

دوباره یک چیز را پارس نکنید. HTML یا نتایج را در فایل‌ها یا پایگاه داده ذخیره کنید تا تحلیل مجدد بدون درخواست جدید انجام شود.

شبیه‌سازی رفتار انسانی

چه چیزی انسان‌ها انجام می‌دهند در مقابل ربات‌ها

رفتار انسان ربات (بد) ربات (خوب)
سرعت درخواست‌ها ۱-۵ ثانیه بین کلیک‌ها ۱۰۰/ثانیه ۰.۵-۳ ثانیه (تصادفی)
User-Agent مرورگر واقعی Python-requests/2.28 Chrome 120 (چرخشی)
هدرهای HTTP ۱۵-۲۰ هدر ۳-۵ هدر مجموعه کامل
جاوا اسکریپت همیشه اجرا می‌شود اجرا نمی‌شود مرورگر بدون رابط کاربری
کوکی‌ها ذخیره می‌شوند نادیده گرفته می‌شوند مدیریت می‌شوند

🎯 توصیه‌ها در مورد هدرها

headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en-US,en;q=0.9', 'Accept-Encoding': 'gzip, deflate, br', 'DNT': '1', 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1', 'Sec-Fetch-Dest': 'document', 'Sec-Fetch-Mode': 'navigate', 'Sec-Fetch-Site': 'none', 'Cache-Control': 'max-age=0', }

🛡️ چگونه از بن شدن جلوگیری کنیم

بن شدن بزرگترین چالش در پارس کردن است. سیستم‌های تشخیص در سال ۲۰۲۵ بسیار هوشمند شده‌اند و نیاز به رویکردی جامع دارند.

استراتژی دفاع چند سطحی

⚠️ نشانه‌هایی که باعث بن شدن شما می‌شوند

  • اعتبار IP — ASN پراکسی شناخته شده یا IP دیتاسنتر
  • محدودیت نرخ — درخواست‌های زیاد در مدت زمان کوتاه
  • الگوهای رفتاری — فواصل زمانی یکسان بین درخواست‌ها
  • عدم اجرای JS — چالش‌های مرورگر انجام نمی‌شوند
  • اثر انگشت TLS — کتابخانه‌های requests/curl اثر انگشت‌های مشخصی دارند
  • اثر انگشت HTTP/2 — ترتیب هدرها اتوماسیون را لو می‌دهد
  • اثر انگشت‌های WebGL/Canvas — برای مرورگرهای بدون رابط کاربری

✅ نحوه دور زدن تشخیص

۱. استفاده از پراکسی‌های با کیفیت

  • مسکونی/موبایل برای سایت‌های پیچیده
  • استخر IP بزرگ (بیش از ۱۰۰۰ برای چرخش)
  • هدف‌گیری جغرافیایی بر اساس کشور مورد نیاز
  • جلسات ثابت برای فرآیندهای چند مرحله‌ای

۲. مرورگرهای بدون رابط کاربری با ضد تشخیص

  • puppeteer-extra-stealth — نشانه‌های headless را پنهان می‌کند
  • Playwright Stealth — معادل آن برای Playwright
  • undetected-chromedriver — برای Selenium پایتون
  • تصادفی‌سازی اثر انگشت‌ها — WebGL، Canvas، فونت‌ها

۳. چرخش هوشمند و محدودیت نرخ

  • حداکثر ۵ تا ۱۰ درخواست در دقیقه از یک IP
  • تصادفی‌سازی تأخیرها (نه فواصل ثابت)
  • چرخش تطبیقی — تغییر IP هنگام تشخیص محدودیت نرخ (403/429)
  • وقفه شبانه — شبیه‌سازی خواب کاربر

۴. مجموعه کامل هدرها

  • ۱۵ تا ۲۰ هدر HTTP واقع‌گرایانه
  • زنجیره ارجاع‌دهنده (Referer chain)
  • Accept-Language بر اساس جغرافیای پراکسی
  • هدرهای Sec-CH-UA برای Chrome

💡 نکته حرفه‌ای: رویکرد ترکیبی

برای حداکثر کارایی، این موارد را ترکیب کنید: پراکسی‌های مسکونی + Puppeteer-stealth + چرخش هوشمند + هدرهای کامل + تأخیرهای ۲ تا ۵ ثانیه. این ترکیب نرخ موفقیت ۹۵٪+ را حتی در سایت‌های بسیار محافظت شده تضمین می‌کند.

🇪🇺 GDPR و حفاظت از داده‌ها

GDPR (مقررات عمومی حفاظت از داده‌ها) سخت‌گیرانه‌ترین قانون حفاظت از داده در جهان است. جریمه‌ها تا ۲۰ میلیون یورو یا ۴٪ از گردش مالی جهانی می‌رسد.

الزامات کلیدی GDPR برای اسکرپینگ

مبنای قانونی (Lawful Basis)

برای پردازش داده‌های شخصی به مبنای قانونی نیاز دارید:

  • رضایت (Consent) — تقریباً برای پارس کردن غیرممکن است
  • منافع مشروع (Legitimate Interest) — ممکن است مناسب باشد، اما نیاز به توجیه دارد
  • الزام قانونی — برای انطباق

حداقل‌سازی داده (Data Minimization)

فقط داده‌های ضروری را جمع‌آوری کنید. همه چیز را به صورت "فقط در صورت نیاز" پارس نکنید. ایمیل‌ها، تلفن‌ها، آدرس‌ها — فقط در صورتی که واقعاً مورد نیاز باشند.

محدودیت هدف (Purpose Limitation)

از داده‌ها فقط برای هدف اعلام شده استفاده کنید. اگر برای تحلیل بازار پارس کردید — نمی‌توانید آن را به عنوان پایگاه ایمیل بفروشید.

حق فراموش شدن (Right to be Forgotten)

افراد می‌توانند درخواست حذف داده‌هایشان را داشته باشند. باید رویه‌ای برای رسیدگی به این درخواست‌ها داشته باشید.

🚨 ریسک‌های بالا بر اساس GDPR

  • پارس کردن ایمیل‌ها برای اسپم — جریمه تضمین شده
  • جمع‌آوری داده‌های بیومتریک (عکس چهره) — داده‌های بسیار حساس
  • داده‌های کودکان — حفاظت تشدید شده
  • داده‌های پزشکی — به شدت ممنوع بدون مبنای قانونی خاص

💡 توصیه: اگر داده‌های اتحادیه اروپا را پارس می‌کنید، با وکیل مشورت کنید. GDPR شوخی نیست. برای امنیت، از داده‌های شخصی اجتناب کرده و بر روی حقایق، قیمت‌ها و محصولات تمرکز کنید.

🎯 موارد استفاده واقعی

💰

پایش قیمت رقبا

وظیفه: ردیابی قیمت‌ها در آمازون/ای‌بی برای قیمت‌گذاری پویا.

راه حل: پراکسی مسکونی آمریکا + Scrapy + MongoDB. پارس کردن ۱۰,۰۰۰ محصول ۲ بار در روز. نرخ موفقیت ۹۲٪.

پراکسی: مسکونی ۲۰۰ دلار/ماه

بازگشت سرمایه: افزایش ۱۵٪ در سود

📊

پایش سئو رتبه‌بندی

وظیفه: ردیابی رتبه سایت در گوگل برای ۱۰۰۰ کلمه کلیدی در کشورهای مختلف.

راه حل: پراکسی مسکونی ۲۰ کشور + Python requests + PostgreSQL. جمع‌آوری روزانه SERP.

پراکسی: مسکونی ۱۵۰ دلار/ماه

جایگزین: API سرویس‌های SEO (۵۰۰+ دلار/ماه)

🤖

جمع‌آوری داده برای مدل‌های ML

وظیفه: جمع‌آوری ۱۰ میلیون مقاله خبری برای آموزش مدل NLP.

راه حل: پراکسی دیتاسنتر + Scrapy توزیع شده + ذخیره‌سازی S3. رعایت robots.txt و تأخیرها.

پراکسی: دیتاسنتر ۸۰ دلار/ماه

زمان: ۲ ماه جمع‌آوری

📱

پارس کردن اینستاگرام/تیک‌تاک

وظیفه: پایش ذکر نام برند در شبکه‌های اجتماعی برای تحلیل بازاریابی.

راه حل: پراکسی موبایل + Puppeteer-stealth + صف Redis. جلسات ثابت ۱۰ دقیقه‌ای برای هر IP.

پراکسی: موبایل ۳۰۰ دلار/ماه

نرخ موفقیت: ۹۶٪

🏠

تجمیع‌کننده املاک

وظیفه: جمع‌آوری آگهی‌ها از ۵۰ سایت املاک برای مقایسه.

راه حل: ترکیب پراکسی دیتاسنتر + مسکونی + Scrapy + Elasticsearch. به‌روزرسانی هر ۶ ساعت.

پراکسی: ترکیبی ۱۲۰ دلار/ماه

حجم: ۵۰۰ هزار آگهی/روز

📈

داده‌های مالی

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

راه حل: پراکسی مسکونی پریمیوم + Python asyncio + TimescaleDB. به‌روزرسانی بلادرنگ.

پراکسی: پریمیوم ۴۰۰ دلار/ماه

تأخیر (Latency): <۱۰۰ میلی‌ثانیه حیاتی است

📊 پایش و تحلیل

معیارهای کلیدی اسکرپینگ

۹۵٪+

نرخ موفقیت

پاسخ‌های HTTP 200

<۵٪

نرخ بن

پاسخ‌های 403/429

۲-۳ ثانیه

میانگین زمان پاسخ

تأخیر پراکسی

۰.۰۵ دلار

هزینه برای ۱۰۰۰ صفحه

هزینه پراکسی

ابزارهای پایش

  • Prometheus + Grafana — متریک‌ها در زمان واقعی
  • ELK Stack — لاگ‌برداری و تحلیل
  • Sentry — ردیابی خطاها
  • داشبورد سفارشی — نرخ موفقیت، سلامت پراکسی، هزینه‌ها

🔧 حل مشکلات رایج

خطاها و راه‌حل‌های متداول

❌ HTTP 403 Forbidden

دلیل: IP مسدود شده یا به عنوان پراکسی شناسایی شده است

راه حل: تغییر به پراکسی مسکونی/موبایل، افزودن هدرهای واقع‌گرایانه، استفاده از مرورگر بدون رابط کاربری

❌ HTTP 429 Too Many Requests

دلیل: تجاوز از محدودیت نرخ

راه حل: افزایش تأخیرها (۳ تا ۵ ثانیه)، چرخش مکرر پراکسی‌ها، کاهش درخواست‌های موازی

❌ CAPTCHA در هر درخواست

دلیل: سایت اتوماسیون را تشخیص می‌دهد

راه حل: Puppeteer-stealth، پراکسی موبایل، جلسات ثابت، تأخیر بیشتر

❌ محتوای خالی / جاوا اسکریپت بارگذاری نمی‌شود

دلیل: سایت از رندر پویا استفاده می‌کند

راه حل: استفاده از Selenium/Puppeteer به جای requests، انتظار برای بارگذاری JS

❌ سرعت پایین پارس کردن

دلیل: درخواست‌های متوالی

راه حل: استفاده از ناهمگام‌سازی (asyncio، aiohttp)، درخواست‌های موازی، پراکسی بیشتر

🚀 تکنیک‌های پیشرفته پارس کردن

برای توسعه‌دهندگان با تجربه

۱. پنهان‌سازی اثر انگشت HTTP/2

سیستم‌های ضد ربات مدرن، ترتیب فریم‌ها و هدرهای HTTP/2 را تحلیل می‌کنند. کتابخانه‌هایی مانند curl-impersonate می‌توانند در سطح TLS/HTTP، مرورگرهای خاصی را تقلید کنند.

# استفاده از curl-impersonate برای تقلید کامل از Chrome curl_chrome116 --proxy http://user:pass@gate.proxycove.com:8080 https://example.com

۲. الگوریتم‌های هوشمند چرخش پراکسی

نه فقط چرخش تصادفی، بلکه الگوریتم‌های هوشمند:

  • کمتر استفاده شده (LRU): استفاده از پراکسی‌هایی که اخیراً استفاده نشده‌اند
  • وزن‌دهی بر اساس نرخ موفقیت: استفاده بیشتر از پراکسی‌هایی با نرخ موفقیت بالا
  • خوشه‌بندی جغرافیایی: گروه‌بندی درخواست‌ها به یک سایت از طریق پراکسی‌های یک کشور
  • تعدیل تطبیقی: کاهش خودکار سرعت در صورت تشخیص محدودیت نرخ

۳. ضبط و حل CAPTCHA

هنگامی که CAPTCHA اجتناب‌ناپذیر است، از این موارد استفاده کنید:

  • API 2Captcha: حل از طریق انسان‌های واقعی (۰.۵ تا ۳ دلار برای هر ۱۰۰۰ کپچا)
  • hCaptcha-solver: راه‌حل‌های هوش مصنوعی برای کپچاهای ساده
  • Audio CAPTCHA: تشخیص از طریق تبدیل گفتار به متن
  • reCAPTCHA v3: دور زدن تحلیل رفتاری دشوارتر است و نیاز به پراکسی مسکونی + stealth دارد

۴. معماری اسکرپینگ توزیع شده

برای پروژه‌های بزرگ (بیش از ۱ میلیون صفحه/روز):

  • الگوی Master-Worker: صف مرکزی وظایف (Redis، RabbitMQ)
  • Kubernetes pods: مقیاس‌بندی افقی اسکرپرها
  • پایگاه‌های داده توزیع شده: Cassandra، MongoDB برای ذخیره‌سازی
  • صف پیام: پردازش ناهمگام نتایج
  • پشته پایش: Prometheus + Grafana برای متریک‌ها

💎 مدیریت پراکسی در سطح سازمانی

برای تیم‌های بزرگ و پروژه‌های عظیم، موارد زیر را پیاده‌سازی کنید:

  • استخر پراکسی متمرکز: مدیریت واحد پراکسی‌ها برای همه پروژه‌ها
  • بررسی سلامت: بررسی خودکار کارایی پراکسی‌ها
  • تشخیص بن با ML: مدل‌های یادگیری ماشین برای تشخیص IPهای مسدود شده
  • ردیابی هزینه: محاسبه هزینه‌ها بر اساس پروژه و تیم
  • دروازه API: API داخلی برای دریافت پراکسی

🎯 نتایج و توصیه‌ها

📝 توصیه‌های نهایی ۲۰۲۵

۱. انتخاب پراکسی

سایت‌های ساده: پراکسی دیتاسنتر (۱.۵ دلار/گیگابایت)
تجارت الکترونیک، سئو: پراکسی مسکونی (۲.۷ دلار/گیگابایت)
شبکه‌های اجتماعی، بانک‌ها: پراکسی موبایل (۳.۸ دلار/گیگابایت)
ترکیبی: ۸۰٪ دیتاسنتر + ۲۰٪ مسکونی برای بهینه‌سازی هزینه

۲. ابزارها

Python requests: برای APIها و صفحات ساده
Scrapy: برای اسکرپینگ در مقیاس بزرگ (بیش از ۱ میلیون صفحه)
Puppeteer/Selenium: برای سایت‌های سنگین JS
افزونه‌های Stealth: برای دور زدن تشخیص، ضروری هستند

۳. استراتژی چرخش

چرخشی (Rotating): برای انتخاب داده‌های انبوه
ثابت (Sticky): برای کار با حساب‌ها و فرم‌ها
تأخیرها: ۲ تا ۵ ثانیه تصادفی
محدودیت نرخ: حداکثر ۱۰ درخواست در دقیقه از یک IP

۴. جنبه‌های قانونی

• فقط داده‌های عمومی را پارس کنید
• به robots.txt احترام بگذارید
• از داده‌های شخصی (ریسک GDPR) اجتناب کنید
• برای پروژه‌های تجاری با وکیل مشورت کنید

۵. ProxyCove — انتخاب ایده‌آل

• تمام انواع پراکسی: موبایل، مسکونی، دیتاسنتر
• هر دو حالت: Rotating و Sticky sessions
• پوشش جغرافیایی ۱۹۵+ کشور
• پرداخت بر اساس مصرف (بدون هزینه اشتراک)
• پشتیبانی ۲۴/۷ به زبان فارسی

🏆 مزایای ProxyCove برای اسکرپینگ

🌍

۱۹۵+ کشور

پوشش جهانی

۹۹.۹٪ Uptime

پایداری بالا

🔄

چرخش خودکار

چرخش داخلی

👨‍💼

پشتیبانی ۲۴/۷

همیشه در دسترس

💰

پرداخت به ازای مصرف

بدون هزینه اشتراک

🔐

احراز هویت IP/Login

احراز هویت انعطاف‌پذیر

با ProxyCove اسکرپینگ موفق را آغاز کنید!

با کد تبلیغاتی ARTHELLO ثبت‌نام کنید، موجودی خود را شارژ کنید و ۱.۳ دلار هدیه بگیرید. بدون هزینه اشتراک — فقط برای ترافیک مصرفی پرداخت کنید!

ثبت‌نام در ProxyCove →

بهترین قیمت‌های پراکسی برای وب اسکرپینگ ۲۰۲۵:

🎁 از کد تبلیغاتی ARTHELLO هنگام اولین شارژ استفاده کنید و ۱.۳ دلار اضافی به حساب خود دریافت نمایید

با تشکر از توجه شما! امیدواریم این راهنما به شما در ساخت یک سیستم وب اسکرپینگ مؤثر در سال ۲۰۲۵ کمک کند. موفق باشید در پارس کردن! 🚀