جمع خصائص المنتجات من الأسواق هو مهمة حيوية للبائعين والمحللين ومجمعي الأسعار. تقوم 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 بسبب عدم وجود بعض المعلمات.
- أنماط السلوك - يقوم الروبوت بفتح بطاقات المنتجات بفواصل زمنية متساوية (على سبيل المثال، كل ثانيتين بالضبط)، ولا يقوم بتمرير الصفحة، ولا يحرك الماوس. هذا يميزه عن الشخص الحقيقي.
عواقب الحظر: حظر مؤقت لعنوان 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 و Beeline و MegaFon). النوع الأكثر موثوقية لتجاوز الحماية، لكنه مكلف وبطيء. استخدمه فقط للمهام الحرجة حيث لا يمكن تحمل الحظر. التكلفة: من 50-150 دولار لكل IP في الشهر مع تدوير.
بروكسي سكنية أم مراكز بيانات: ماذا تختار لمهمتك
يعتمد اختيار نوع البروكسي على ثلاثة عوامل: حجم الجمع، مستوى حماية المنصة والميزانية. دعونا نستعرض سيناريوهات استخدام محددة.
متى تناسب بروكسي مراكز البيانات
السيناريو 1: اختبار جهاز جمع البيانات
أنت تقوم بتطوير جهاز جمع بيانات جديد وتتحقق من منطق استخراج البيانات. تحتاج إلى جمع 100-500 منتج للتصحيح. في هذه الحالة، البروكسي السكنية ستكون تكلفة زائدة. استخدم 5-10 IP من مراكز البيانات وقم بعمل 50-100 طلب من كل منها في الساعة. سيكون ذلك كافياً للاختبار بدون حظر.
السيناريو 2: جمع بيانات من منصات بدون حماية
الأسواق الإقليمية الصغيرة، لوحات الإعلانات مثل Avito (في بعض الفئات)، المتاجر الإلكترونية على OpenCart غالباً ما لا تحتوي على أنظمة مكافحة الروبوتات القوية. هنا تعمل مراكز البيانات بشكل مستقر بشرط وجود حمل معتدل (حتى 200 طلب في الساعة من IP).
السيناريو 3: ميزانية محدودة وكميات صغيرة
إذا كنت بحاجة لجمع 5,000-10,000 منتج في اليوم، وكانت الميزانية محدودة، جرب مراكز البيانات مع تدوير عدواني (تغيير IP كل 50-100 طلب). نعم، سيكون هناك المزيد من الحظر، لكن مع الإعداد الصحيح لمنطق إعادة المحاولة (إعادة الطلب مع IP جديد) سيعمل ذلك.
متى تحتاج إلى بروكسي سكنية
السيناريو 1: جمع بيانات Wildberries و Ozon
تستخدم هذه المنصات Cloudflare و DataDome وأنظمة مكافحة الروبوتات الخاصة بها. ستحصل على CAPTCHA أو حظر بعد 20-50 طلب من مراكز البيانات. تسمح البروكسي السكنية مع تدوير كل 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 في وضع "تحت الهجوم")، جمع البيانات مع خطر عالٍ لحظر الحساب، جمع بيانات المنافسين الذين يتتبعون جمع البيانات.
فواصل التدوير الموصى بها للمنصات الشائعة
| المنصة | نوع البروكسي | فترة التدوير | التأخير بين الطلبات |
|---|---|---|---|
| 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
حل المشكلة: استخدم المكتبات لوضع التخفي:
- 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: بدلاً من المحتوى، ترى صفحة "Checking your browser..." مع تأخير 5 ثوانٍ. في الكود، هذا هو تحدي JavaScript، الذي يتحقق من المتصفح.
كيف تتجاوز:
- FlareSolverr - خدمة بروكسي تحل تحدي Cloudflare تلقائيًا. ترسل له URL، ويعيد لك الكوكيز للتجاوز. تعمل في 70-80% من الحالات.
- Playwright مع الانتظار - تقوم بتحميل الصفحة في متصفح غير مرئي، تنتظر 10-15 ثانية (حتى يتم تنفيذ JS)، تستخرج الكوكيز وتستخدمها في طلبات HTTP العادية. يوفر الموارد: المتصفح مطلوب فقط للحصول على الكوكيز، ثم تجمع البيانات عبر requests.
- بروكسي سكنية + متصفح التخفي - التركيبة تعطي 95%+ من النجاح في التجاوز. ترى Cloudflare IP الحقيقي للمستخدم وبصمة المتصفح الصحيحة.
مهم: تقوم Cloudflare بتحديث الحماية باستمرار. ما كان يعمل في ديسمبر 2024 قد لا يعمل في مارس 2025. دائمًا احتفظ بخطة بديلة: حل يدوي لـ CAPTCHA عبر خدمات 2Captcha/AntiCaptcha أو الانتقال إلى API السوق (إذا كان متاحًا).
المستوى 4: محاكاة سلوك المستخدم
تقوم أنظمة مكافحة الروبوتات المتقدمة بتتبع أنماط السلوك. يقوم المستخدم الحقيقي بتمرير الصفحة، ويحرك الماوس، وأحيانًا يعود للخلف. يفتح الروبوت بطاقات المنتجات بفاصل مثالي قدره 2.000 ثانية.
كيف تحاكي:
- ت randomization التأخيرات - بدلاً من 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) | مجاني | متوسطة (متصفحات ثقيلة) | المبرمجون، المواقع المعقدة التي تستخدم JavaScript |
إعداد خطوة بخطوة للبروكسي في جهاز جمع البيانات
دعونا نلقي نظرة على إعداد البروكسي في أدوات شائعة. هذه التعليمات مناسبة لجمع البيانات من أي أسواق، وليس فقط الروسية.
الإعداد في Octoparse
الخطوة 1: افتح Octoparse وأنشئ مهمة جمع بيانات جديدة. أدخل URL الصفحة الرئيسية (على سبيل المثال، فئة المنتجات على Wildberries).
الخطوة 2: انتقل إلى القائمة "Settings" → "Advanced Settings" → "Proxy". اختر "Use custom proxy".
الخطوة 3: أضف البروكسي بالتنسيق:
http://username:password@proxy-server.com:8080
socks5://username:password@proxy-server.com:1080
الخطوة 4: قم بتمكين خيار "Rotate proxy" واضبط فترة التدوير. بالنسبة لـ Wildberries، يُوصى بـ "Rotate on every 50 requests" أو "Rotate every 10 minutes".
الخطوة 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;
}
// استخدم الدالة لجمع البيانات
scrapeWithProxy('https://example.com/product-page').then(data => {
console.log(data);
});