Python Scrapy मा प्रोक्सीहरू कसरी सेटअप र रोटेट गर्ने
Updated:
Scrapy को asynchronous Twisted इन्जिनमा एक इन-बिल्ट HttpProxyMiddleware (प्राथमिकता 750 मा) समावेश छ जसले request.meta['proxy'] मा तोकिएका http://user:pass@ip:port स्ट्रिङहरू पार्स गर्दछ। प्राथमिकता 740 मा 10-लाइनको कस्टम Downloader Middleware लेख्दा तपाईंका स्पाइडरहरू अनमिटर्ड VinaProxy स्ट्याटिक IP हरूको पूलमा स्वचालित रूपमा रोटेट हुन सक्छन्।
request.meta['proxy'] = 'http://user:pass@ip:port'- 1 IP₫ ४०,०००
- 5+ IP हरू₫ ३५,०००
- 10+ IP हरू₫ २५,०००
- 20+ IP हरू₫ २५,०००
- 50+ IP हरू₫ २५,०००
- 100+ IP हरू₫ २५,०००
- 200+ IP हरू₫ २५,०००
- 500+ IP हरू₫ २५,०००
- 1000+ IP हरू₫ २२,०००
- 2000+ IP हरू₫ २०,०००
- 1 IP₫ ४०,०००
- 5+ IP हरू₫ ३५,०००
- 10+ IP हरू₫ २५,०००
- 20+ IP हरू₫ २५,०००
- 50+ IP हरू₫ २५,०००
- 100+ IP हरू₫ २५,०००
- 200+ IP हरू₫ २५,०००
- 500+ IP हरू₫ २५,०००
- 1000+ IP हरू₫ २२,०००
- 2000+ IP हरू₫ २०,०००
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 ले user:pass हेडर इन्कोड गर्छ भन्ने सुनिश्चित गर्दछ |
CONCURRENT_REQUESTS_PER_IP | 2 देखि 4 | HTTP 429 बाट बच्न प्रति प्रोक्सी IP एकैसाथ चल्ने सकेटहरू सीमित गर्दछ |
AUTOTHROTTLE_ENABLED | True | लक्षित विलम्बता (latency) को आधारमा क्रल ढिलाइलाई गतिशील रूपमा अनुकूलन गर्दछ |
उच्च-भोल्युम 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 सूची हाम्रो Proxy Format Converter मा टाँस्नुहोस्।
- 2
middlewares.py मा ProxyPoolMiddleware सिर्जना गर्नुहोस्
request.meta['proxy'] = random.choice(self.proxies)सेट गर्नprocess_request(self, request, spider)परिभाषित गर्नुहोस्। - 3
settings.py मा प्राथमिकता 740 मा दर्ता गर्नुहोस्
DOWNLOADER_MIDDLEWARESअन्तर्गत'myproject.middlewares.ProxyPoolMiddleware': 740थप्नुहोस् रCONCURRENT_REQUESTS_PER_IP = 2सेट गर्नुहोस्। - 4
scrapy shell वा scrapy crawl मार्फत परीक्षण गर्नुहोस्
रोटेसन र प्रमाणीकरण प्रमाणित गर्न
https://vinaproxy.com/api/my-ipमा परीक्षण अनुरोध चलाउनुहोस्।
बारम्बार सोधिने प्रश्नहरू
प्राथमिकता 800 मा सेट गर्दा मेरो कस्टम Scrapy प्रोक्सी मिडलवेयर किन असफल भयो?
Scrapy को इन-बिल्ट HttpProxyMiddleware प्राथमिकता 750 मा चल्छ। यदि तपाईंको मिडलवेयर 800 (750 पछि) मा चल्छ भने, इनलाइन user:pass प्रमाणहरू कहिल्यै Proxy-Authorization हेडरमा रूपान्तरण हुँदैनन्। सधैं आफ्नो मिडलवेयरको प्राथमिकता 750 भन्दा तल (जस्तै 740) सेट गर्नुहोस्।
के Scrapy ले प्रत्येक प्रोक्सीमा लगातार (persistent) जडानहरू खुला राख्छ?
हो। Twisted को जडान पूलले प्रति प्रोक्सी अन्त्यविन्दु लगातार keep-alive जडानहरू कायम राख्छ।
के लाखौं पृष्ठहरू भएका Scrapy कार्यहरूका लागि VinaProxy प्रोक्सीहरू अनमिटर्ड छन्?
हो। सबै Dedicated IPv4 र Static ISP योजनाहरूमा असीमित मासिक ब्यान्डविथ समावेश छ।
अनमिटर्ड स्ट्याटिक IP पूलहरूको साथ आफ्ना Scrapy स्पाइडरहरू विस्तार गर्नुहोस्
7 देशहरूमा तत्काल बल्क Dedicated IPv4 र Static ISP प्रोक्सीहरू।
Scrapy प्रोक्सीहरू किन्नुहोस्