Python Scrapy में प्रॉक्सी सेटअप और रोटेट कैसे करें
अपडेट किया गया:
Scrapy के एसिंक्रोनस Twisted इंजन में प्राथमिकता 750 पर चलने वाला एक इन-बिल्ट HttpProxyMiddleware शामिल है, जो request.meta['proxy'] को सौंपे गए http://user:pass@ip:port स्ट्रिंग्स को स्वचालित रूप से पार्स करता है। प्राथमिकता 740 पर केवल 10 पंक्तियों का कस्टम Downloader Middleware लिखकर, आपके स्पाइडर VinaProxy के असीमित स्टैटिक IP पूल के बीच स्वचालित रूप से रोटेट कर सकते हैं।
request.meta['proxy'] = 'http://user:pass@ip:port'- 1 IP₫40,000
- 5+ IP₫35,000
- 10+ IP₫25,000
- 20+ IP₫25,000
- 50+ IP₫25,000
- 100+ IP₫25,000
- 200+ IP₫25,000
- 500+ IP₫25,000
- 1000+ IP₫22,000
- 2000+ IP₫20,000
- 1 IP₫40,000
- 5+ IP₫35,000
- 10+ IP₫25,000
- 20+ IP₫25,000
- 50+ IP₫25,000
- 100+ IP₫25,000
- 200+ IP₫25,000
- 500+ IP₫25,000
- 1000+ IP₫22,000
- 2000+ IP₫20,000
Scrapy प्रॉक्सी मिडलवेयर निष्पादन क्रम और समवर्ती दर सेटिंग्स
चूँकि इन-बिल्ट HttpProxyMiddleware प्रॉक्सी URL से user:pass हटाने और Proxy-Authorization हेडर एन्कोड करने के लिए प्राथमिकता 750 पर चलता है, इसलिए request.meta['proxy'] सेट करने वाले किसी भी कस्टम मिडलवेयर को कम संख्या (जैसे 740) पर चलना चाहिए:
| Scrapy सेटिंग | अनुशंसित मान | तकनीकी उद्देश्य |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | निर्दिष्ट VinaProxy प्रॉक्सी के माध्यम से अनुरोध रूट करता है |
| मिडलवेयर प्राथमिकता | 740 (750 से पहले) | यह सुनिश्चित करता है कि HttpProxyMiddleware प्रमाणीकरण हेडर एन्कोड करे |
CONCURRENT_REQUESTS_PER_IP | 2 से 4 | HTTP 429 ब्लॉक से बचने के लिए प्रति प्रॉक्सी IP समवर्ती सॉकेट सीमित करता है |
AUTOTHROTTLE_ENABLED | True | लक्षित सर्वर विलंबता के आधार पर क्रॉल विलंब को गतिशील रूप से अनुकूलित करता है |
उच्च-मात्रा Scrapy क्रॉलिंग के लिए सर्वोत्तम अभ्यास
- मिडलवेयर के
from_crawler()में अपनी VinaProxy प्रॉक्सी सूची लोड करें औरprocess_request()के अंदरrequest.meta['proxy'] = random.choice(self.proxies)सेट करें DOWNLOAD_DELAY = 1.0के साथRANDOMIZE_DOWNLOAD_DELAY = Trueसक्षम करें ताकि प्रत्येक IP का अनुरोध अंतराल रोबोटिक न लगे- पुनः प्रयास (
429या503) की स्थिति में, अनुरोध को फिर से कतारबद्ध करने से पहले अपने पूल से एक अलग प्रॉक्सी चुनें
स्टेप बाय स्टेप
- 1
अपने प्रॉक्सी पूल को http://user:pass@ip:port में बदलें
तैयार URL स्ट्रिंग प्राप्त करने के लिए अपनी VinaProxy सूची हमारे प्रॉक्सी फॉर्मेट कनवर्टर में पेस्ट करें।
- 2
middlewares.py में ProxyPoolMiddleware बनाएँ
process_request(self, request, spider)कोrequest.meta['proxy'] = random.choice(self.proxies)सेट करने के लिए परिभाषित करें। - 3
settings.py में प्राथमिकता 740 पर पंजीकृत करें
DOWNLOADER_MIDDLEWARESके तहत'myproject.middlewares.ProxyPoolMiddleware': 740जोड़ें औरCONCURRENT_REQUESTS_PER_IP = 2सेट करें। - 4
scrapy shell या crawl कमांड से परीक्षण करें
प्रॉक्सी रोटेशन और प्रमाणीकरण सत्यापित करने के लिए
https://vinaproxy.com/api/my-ipपर एक परीक्षण अनुरोध चलाएँ।
अक्सर पूछे जाने वाले प्रश्न
प्राथमिकता 800 पर सेट करने पर कस्टम Scrapy प्रॉक्सी मिडलवेयर विफल क्यों हुआ?
Scrapy का अंतर्निहित HttpProxyMiddleware प्राथमिकता 750 पर चलता है। यदि आपका मिडलवेयर 800 (750 के बाद) पर चलता है, तो क्रेडेंशियल कभी भी Proxy-Authorization हेडर में परिवर्तित नहीं होते हैं। अपने मिडलवेयर की प्राथमिकता हमेशा 750 से कम (जैसे 740) रखें।
क्या Scrapy प्रत्येक प्रॉक्सी के साथ लगातार कनेक्शन खुला रखता है?
हाँ। Twisted का कनेक्शन पूल प्रत्येक प्रॉक्सी समापन बिंदु पर स्थायी TCP keep-alive कनेक्शन बनाए रखता है।
क्या लाखों पेजों के Scrapy कार्य के लिए VinaProxy प्रॉक्सी में डेटा सीमा होती है?
नहीं। VinaProxy के सभी डेडिकेटेड IPv4 और स्टैटिक ISP प्लान में असीमित मासिक बैंडविड्थ शामिल है।
असीमित स्टैटिक IP पूल के साथ अपने Scrapy स्पाइडर का विस्तार करें
7 देशों में तत्काल सक्रियण के साथ थोक में डेडिकेटेड IPv4 और स्टैटिक ISP प्रॉक्सी।
Scrapy प्रॉक्सी खरीदें