← Back to Blog

بناء عناكب زحف قوية باستخدام Scrapy و Rotating Proxies

عندما تحتاج لجمع ملايين الصفحات، السكربتات البسيطة لن تكفي. أنت بحاجة لـ Scrapy. ولكن السرعة العالية لـ Scrapy تجعلها سهلة الكشف والحظر. الحل هو استخدام Middleware مخصص لتدوير البروكسيات مع كل طلب.

تثبيت مكتبة التدوير

بدلاً من كتابة الكود من الصفر، سنستخدم مكتبة scrapy-rotating-proxies الشهيرة.
pip install scrapy-rotating-proxies

تعديل ملف الإعدادات (settings.py)

أضف البروكسيات وقم بتفعيل الـ Middleware في ملف إعدادات مشروعك:


# settings.py

ROTATING_PROXY_LIST = [
    'proxy1.com:8000',
    'proxy2.com:8031',
    'user:pass@proxy3.com:8080',
]

# تفعيل الـ Middleware
DOWNLOADER_MIDDLEWARES = {
    'rotating_proxies.middlewares.RotatingProxyMiddleware': 610,
    'rotating_proxies.middlewares.BanDetectionMiddleware': 620,
}

# إعدادات كشف الحظر (Ban Detection)
# إذا واجه الزاحف هذه الأكواد أو النصوص، سيقوم بتغيير البروكسي وإعادة المحاولة
ROTATING_PROXY_BAN_POLICY = 'rotating_proxies.policy.BanDetectionPolicy'
                    

استراتيجيات الزحف الذكي

  • Concurrency: لا ترفع عدد الطلبات المتزامنة (CONCURRENT_REQUESTS) كثيراً إذا كان عدد البروكسيات لديك محدوداً.
  • Auto-Throttle: فعل إضافة AUTOTHROTTLE_ENABLED لجعل Scrapy يبطئ السرعة تلقائياً إذا زاد زمن استجابة الخادم.
  • User-Agent: استخدم User-Agent Rotation جنباً إلى جنب مع البروكسي.