كيفية إعداد وتدوير البروكسيات في Python Scrapy
آخر تحديث:
يتضمن محرك Twisted غير المتزامن في Scrapy مكونًا مدمجًا HttpProxyMiddleware (يعمل عند الأولوية 750) يقوم تلقائيًا بتحليل نصوص العناوين http://user:pass@ip:port المسندة إلى request.meta['proxy']. بكتابة برمجية وسيطة مخصصة (Downloader Middleware) مكونة من 10 أسطر عند الأولوية 740، يمكن لعناكب الكشط لديك التبديل التلقائي بين مجموعة من عناوين IP الثابتة وغير المحدودة من VinaProxy.
request.meta['proxy'] = 'http://user:pass@ip:port'- 1 IP40,000 ₫
- 5+ IP35,000 ₫
- 10+ IP25,000 ₫
- 20+ IP25,000 ₫
- 50+ IP25,000 ₫
- 100+ IP25,000 ₫
- 200+ IP25,000 ₫
- 500+ IP25,000 ₫
- 1000+ IP22,000 ₫
- 2000+ IP20,000 ₫
- 1 IP40,000 ₫
- 5+ IP35,000 ₫
- 10+ IP25,000 ₫
- 20+ IP25,000 ₫
- 50+ IP25,000 ₫
- 100+ IP25,000 ₫
- 200+ IP25,000 ₫
- 500+ IP25,000 ₫
- 1000+ IP22,000 ₫
- 2000+ IP20,000 ₫
ترتيب البرمجيات الوسيطة وإعدادات التزامن في Scrapy
نظرًا لأن HttpProxyMiddleware يعمل عند الأولوية 750 لإزالة user:pass من رابط البروكسي وترميز ترويسة Proxy-Authorization، فإن أي برمجية وسيطة تضبط request.meta['proxy'] يجب أن تعمل برقم أولوية أقل (مثل 740):
| إعداد Scrapy | القيمة الموصى بها | الوظيفة والهدف التقني |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | يوجه الطلب عبر عقدة بروكسي VinaProxy المحددة |
| أولوية البرمجية الوسيطة | 740 (قبل 750) | يضمن قيام HttpProxyMiddleware بترميز ترويسة المصادقة بنجاح |
CONCURRENT_REQUESTS_PER_IP | 2 إلى 4 | يحدد عدد المقابس المتزامنة لكل عنوان IP لتجنب حظر HTTP 429 |
AUTOTHROTTLE_ENABLED | True | يكيف تأخير الزحف ديناميكيًا بناءً على زمن استجابة الخادم الهدف |
أفضل الممارسات لعمليات الزحف الكبيرة في Scrapy
- قم بتحميل قائمة بروكسيات VinaProxy في
from_crawler()وقم بتعيينrequest.meta['proxy'] = random.choice(self.proxies)داخل دالةprocess_request() - فعّل
RANDOMIZE_DOWNLOAD_DELAY = TrueبجانبDOWNLOAD_DELAY = 1.0حتى لا تظهر فترات الطلبات لكل IP بنمط آلي متكرر - عند مواجهة أخطاء تتطلب إعادة المحاولة (
429أو503)، اختر بروكسي مختلفاً من مجموعتك قبل إعادة إدراج الطلب في قائمة الانتظار
خطوة بخطوة
- 1
نسق قائمة البروكسي كروابط http://user:pass@ip:port
الصق قائمتك من VinaProxy في أداة تحويل تنسيق البروكسي للحصول على روابط جاهزة.
- 2
أنشئ ProxyPoolMiddleware في ملف middlewares.py
قم بتعريف
process_request(self, request, spider)لتعيينrequest.meta['proxy'] = random.choice(self.proxies). - 3
سجل البرمجية بالأولوية 740 في settings.py
أضف
'myproject.middlewares.ProxyPoolMiddleware': 740تحتDOWNLOADER_MIDDLEWARESواضبطCONCURRENT_REQUESTS_PER_IP = 2. - 4
اختبر باستخدام scrapy shell أو أمر الزحف
أرسل طلباً تجريبياً إلى
https://vinaproxy.com/api/my-ipللتحقق من سلامة التدوير والمصادقة.
الأسئلة الشائعة
لماذا فشلت برمجية البروكسي المخصصة في Scrapy عندما ضبطت أولويتها على 800؟
يعمل المكون المدمج HttpProxyMiddleware عند الأولوية 750. إذا عملت البرمجية عند 800 (بعد 750)، فلن يتم تحويل user:pass إلى ترويسة Proxy-Authorization. اضبط الأولوية دائمًا على رقم أقل من 750 (مثل 740).
هل يحافظ Scrapy على اتصالات مستمرة مفتوحة مع كل خادم بروكسي؟
نعم. يحافظ مجمع اتصالات Twisted على اتصالات TCP keep-alive مستمرة لكل نقطة نهاية بروكسي لتقليل زمن المصافحة.
هل تخضع بروكسيات VinaProxy لحدود البيانات في مهام Scrapy التي تتضمن ملايين الصفحات؟
لا. تشمل جميع خطط IPv4 المخصصة و ISP الثابتة من VinaProxy نطاقاً ترددياً غير محدود شهرياً.
وسع نطاق عناكب Scrapy بمجموعات عناوين IP ثابتة غير محدودة
بروكسيات Dedicated IPv4 و Static ISP بالجملة في 7 دول مع تسليم فوري.
شراء بروكسيات Scrapy