څنګه په Python Scrapy کې پروکسي تنظیم او څرخوو
Updated:
د Scrapy اسینکرونس Twisted انجن یو جوړ شوی HttpProxyMiddleware (په لومړیتوب 750 کې) لري چې هغه http://user:pass@ip:port سټرېنګونه تحلیلوي چې request.meta['proxy'] ته ټاکل شوي وي. په لومړیتوب 740 کې د 10 کرښو دودیز Downloader Middleware لیکل ستاسو سپایډرانو ته اجازه ورکوي چې په اوتومات ډول د VinaProxy د نامحدودو سټاټیک IP ګانو په پول کې وڅرخي.
request.meta['proxy'] = 'http://user:pass@ip:port'- 1 IP₫ ۴۰٬۰۰۰
- 5+ IPs₫ ۳۵٬۰۰۰
- 10+ IPs₫ ۲۵٬۰۰۰
- 20+ IPs₫ ۲۵٬۰۰۰
- 50+ IPs₫ ۲۵٬۰۰۰
- 100+ IPs₫ ۲۵٬۰۰۰
- 200+ IPs₫ ۲۵٬۰۰۰
- 500+ IPs₫ ۲۵٬۰۰۰
- 1000+ IPs₫ ۲۲٬۰۰۰
- 2000+ IPs₫ ۲۰٬۰۰۰
- 1 IP₫ ۴۰٬۰۰۰
- 5+ IPs₫ ۳۵٬۰۰۰
- 10+ IPs₫ ۲۵٬۰۰۰
- 20+ IPs₫ ۲۵٬۰۰۰
- 50+ IPs₫ ۲۵٬۰۰۰
- 100+ IPs₫ ۲۵٬۰۰۰
- 200+ IPs₫ ۲۵٬۰۰۰
- 500+ IPs₫ ۲۵٬۰۰۰
- 1000+ IPs₫ ۲۲٬۰۰۰
- 2000+ IPs₫ ۲۰٬۰۰۰
د Scrapy د پروکسي middleware ترتیب او د هممهالۍ تنظیمات
څرنګه چې HttpProxyMiddleware په 750 ترتیب چلیږي ترڅو د پروکسي URL څخه user:pass لرې کړي او د Proxy-Authorization سرلیک کوډ کړي، هر هغه دودیز middleware چې request.meta['proxy'] تنظیموي باید په ټیټه شمېره (د بېلګې په توګه 740) پرمخ ولاړ شي:
| د Scrapy تنظیم | وړاندیز شوی ارزښت | موخه |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | غوښتنه د مشخص شوي VinaProxy پروکسي له لارې لېږدوي |
| د Middleware لومړیتوب | 740 (تر 750 وړاندې) | ډاډ ورکوي چې HttpProxyMiddleware د user:pass سرلیک کوډ کوي |
CONCURRENT_REQUESTS_PER_IP | 2 تر 4 | د هر پروکسي IP هممهاله ساکټونه محدودوي ترڅو د HTTP 429 څخه مخنیوی وشي |
AUTOTHROTTLE_ENABLED | True | د هدف ځنډ (latency) پراساس د کرول ځنډ په متحرک ډول برابروي |
د لوړ حجم لرونکو Scrapy کرولونو لپاره غوره لارښوونې
- خپل د VinaProxy پروکسي لست په
from_crawler()کې پورته کړئ او د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په وړاندې ازمایښتي غوښتنه پرمخ بوځئ.
ډېرې پوښتل کېدونکې پوښتنې
ولې زما دودیز د Scrapy پروکسي middleware هغه وخت ناکام شو چې په لومړیتوب 800 کې تنظیم شو؟
د Scrapy خپل جوړ شوی HttpProxyMiddleware په لومړیتوب 750 کې چلیږي. که ستاسو middleware په 800 کې (تر 750 وروسته) پرمخ ولاړ شي، نو دننه شوي user:pass معلومات هېڅکله د Proxy-Authorization په سرلیک نه بدلیږي. تل د خپل middleware لومړیتوب له 750 څخه ټیټ (لکه 740) وټاکئ.
ایا Scrapy هر پروکسي ته تلپاتې اړیکې پرانیستې ساتي؟
هو. د Twisted د پیوستون پول د هر پروکسي پایلې لپاره تلپاتې keep-alive اړیکې ساتي.
ایا د VinaProxy پروکسیان د څو میلیونه پاڼو لرونکو Scrapy کارونو لپاره نامحدود دي؟
هو. ټول Dedicated IPv4 او Static ISP پلانونه میاشتنۍ نامحدوده بینډویډت لري.
خپل Scrapy سپایډران د نامحدودو سټاټیک IP پولونو په مرسته پراخ کړئ
په 7 هېوادونو کې فوري په لویه کچه Dedicated IPv4 او Static ISP پروکسیان.
د Scrapy پروکسیان وپېرئ