በPython Scrapy ውስጥ ፕሮክሲዎችን እንዴት ማዋቀር እና ማሽከርከር እንደሚቻል
Updated:
የScrapy አሲንክሮነስ Twisted ሞተር ለrequest.meta['proxy'] የተሰጡትን የhttp://user:pass@ip:port ጽሑፎች የሚተነትን አብሮ የተሰራ HttpProxyMiddleware (ቅድሚያ 750) አለው። በቅድሚያ 740 ላይ ባለ 10 መስመር ብጁ Downloader Middleware መጻፍ ሸረሪቶችዎ (spiders) ያልተገደበ የVinaProxy ስታቲክ IP ስብስብ ላይ በራስ-ሰር እንዲሽከረከሩ ያስችላቸዋል።
request.meta['proxy'] = 'http://user:pass@ip:port'- 1 IP₫40,000
- 5+ IPs₫35,000
- 10+ IPs₫25,000
- 20+ IPs₫25,000
- 50+ IPs₫25,000
- 100+ IPs₫25,000
- 200+ IPs₫25,000
- 500+ IPs₫25,000
- 1000+ IPs₫22,000
- 2000+ IPs₫20,000
- 1 IP₫40,000
- 5+ IPs₫35,000
- 10+ IPs₫25,000
- 20+ IPs₫25,000
- 50+ IPs₫25,000
- 100+ IPs₫25,000
- 200+ IPs₫25,000
- 500+ IPs₫25,000
- 1000+ IPs₫22,000
- 2000+ IPs₫20,000
የScrapy ፕሮክሲ middleware ቅደም ተከተል እና የተጓዳኝ ጥያቄዎች ቅንብሮች
HttpProxyMiddleware ከፕሮክሲ URL ላይ user:pass ለማስወገድ እና የProxy-Authorization ራስጌን ኢንኮድ ለማድረግ በቅደም ተከተል 750 ላይ ስለሚሰራ፣ request.meta['proxy'] የሚያዘጋጅ ማንኛውም ብጁ middleware በዝቅተኛ ቁጥር (ለምሳሌ 740) መከናወን አለበት፡
| የScrapy ቅንብር | የሚመከር እሴት | ዓላማ |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | ጥያቄውን በተጠቀሰው የVinaProxy ፕሮክሲ በኩል ይመራል |
| የMiddleware ቅድሚያ | 740 (ከ750 በፊት) | HttpProxyMiddleware የuser:pass ራስጌን ኢንኮድ ማድረጉን ያረጋግጣል |
CONCURRENT_REQUESTS_PER_IP | ከ2 እስከ 4 | የHTTP 429 ስህተትን ለማስወገድ በአንድ ፕሮክሲ IP የሚደረጉ ተጓዳኝ ሶኬቶችን ይገድባል |
AUTOTHROTTLE_ENABLED | True | በዒላማው መዘግየት (latency) ላይ በመመስረት የዳሰሳ መዘግየትን በተለዋዋጭነት ያስተካክላል |
ለከፍተኛ መጠን የScrapy ዳሰሳዎች ምርጥ ተሞክሮዎች
- የVinaProxy ፕሮክሲ ዝርዝርዎን በ
from_crawler()ውስጥ ይጫኑ እና በprocess_request()ውስጥrequest.meta['proxy'] = random.choice(self.proxies)ይመድቡ - በአንድ IP የሚደረጉ የጥያቄ ክፍተቶች የሮቦት እንዳይመስሉ
DOWNLOAD_DELAY = 1.0ከሚለው ጋርRANDOMIZE_DOWNLOAD_DELAY = Trueያንቁ - በድጋሚ ሙከራ ወቅት (
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የሙከራ ጥያቄ ያሂዱ።
ተደጋግመው የሚጠየቁ ጥያቄዎች
ብጁ የScrapy ፕሮክሲ middleware ወደ ቅድሚያ 800 ሲዋቀር ለምን አልሰራም?
የScrapy አብሮ የተሰራ HttpProxyMiddleware በቅድሚያ 750 ላይ ይሰራል። የእርስዎ middleware በ800 (ከ750 በኋላ) የሚሰራ ከሆነ፣ በውስጡ ያሉት የuser:pass ምስክርነቶች በጭራሽ ወደ Proxy-Authorization ራስጌ አይቀየሩም። ሁልጊዜ የmiddleware ቅድሚያዎን ከ750 በታች (እንደ 740) ያዘጋጁ።
Scrapy ለእያንዳንዱ ፕሮክሲ ቋሚ ግንኙነቶችን (persistent connections) ክፍት አድርጎ ያቆያል?
አዎ። የTwisted የግንኙነት ስብስብ (connection pool) ለእያንዳንዱ ፕሮክሲ የመጨረሻ ነጥብ ቋሚ የkeep-alive ግንኙነቶችን ይጠብቃል።
የVinaProxy ፕሮክሲዎች ለብዙ ሚሊዮን ገጾች የScrapy ስራዎች ያልተገደቡ ናቸው?
አዎ። ሁሉም Dedicated IPv4 እና Static ISP ፕላኖች ያልተገደበ ወርሃዊ ባንድዊድዝ ያካትታሉ።
የScrapy ሸረሪቶችዎን ባልተገደቡ የስታቲክ IP ስብስቦች ያሳድጉ
በ7 አገሮች ውስጥ ፈጣን የጅምላ Dedicated IPv4 እና Static ISP ፕሮክሲዎች።
የScrapy ፕሮክሲዎችን ይግዙ