Чӣ тавр дар Python Scrapy проксиҳоро танзим ва ротатсия кардан мумкин аст
Updated:
Муҳаррики асинхронии 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 ₫
Тартиби middleware-и прокси ва танзимоти дархостҳои ҳамзамон дар Scrapy
Азбаски HttpProxyMiddleware барои хориҷ кардани user:pass аз URL-и прокси ва рамзгузории сарлавҳаи Proxy-Authorization бо тартиби 750 кор мекунад, ҳар як middleware-и фармоишӣ, ки request.meta['proxy']-ро муайян мекунад, бояд бо рақами хурдтар (масалан, 740) кор кунад:
| Танзимоти Scrapy | Қимати тавсияшаванда | Мақсад |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | Дархостро тавассути проксии муайяншудаи VinaProxy равона мекунад |
| Middleware Priority | 740 (пеш аз 750) | Кафолат медиҳад, ки HttpProxyMiddleware сарлавҳаи user:pass-ро рамзгузорӣ мекунад |
CONCURRENT_REQUESTS_PER_IP | 2 то 4 | Барои пешгирӣ аз HTTP 429 пайвастҳои ҳамзамонро барои ҳар як IP-и прокси маҳдуд мекунад |
AUTOTHROTTLE_ENABLED | True | Таваққуфи ҷамъоварии маълумотро вобаста ба таъхири сервер динамикӣ мутобиқ месозад |
Таҷрибаҳои беҳтарин барои ҷамъоварии ҳаҷми бузурги маълумот дар Scrapy
- Рӯйхати проксиҳои VinaProxy-и худро дар
from_crawler()бор кунед ва дар дохилиprocess_request()сатриrequest.meta['proxy'] = random.choice(self.proxies)-ро таъин кунед RANDOMIZE_DOWNLOAD_DELAY = True-ро дар якҷоягӣ боDOWNLOAD_DELAY = 1.0фаъол созед, то фосилаи байни дархостҳо барои ҳар як IP ҳеҷ гоҳ роботмонанд ба назар нарасад- Ҳангоми кӯшиши дубора (
429ё503), пеш аз дубора ба навбат гузоштани дархост, аз ҳавзи худ проксии дигарро интихоб кунед
Қадам ба қадам
- 1
Ҳавзи проксии худро дар формати http://user:pass@ip:port омода кунед
Рӯйхати VinaProxy-и худро ба Proxy Format Converter гузоред, то сатрҳои URL-ро дастрас намоед.
- 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 ё scrapy crawl санҷед
Барои санҷиши ротатсия ва аутентификатсия дархости озмоиширо ба
https://vinaproxy.com/api/my-ipиҷро намоед.
Саволҳои зиёд такроршаванда
Чаро middleware-и фармоишии прокси дар Scrapy бо афзалияти 800 кор накард?
HttpProxyMiddleware-и дарунсохти Scrapy бо афзалияти 750 кор мекунад. Агар middleware-и шумо бо афзалияти 800 (пас аз 750) кор кунад, маълумоти мушаххаси воридшавии user:pass ба сарлавҳаи Proxy-Authorization табдил дода намешавад. Ҳамеша афзалияти middleware-и худро аз 750 камтар гузоред (масалан, 740).
Оё Scrapy пайвастҳои доимиро бо ҳар як прокси боз нигоҳ медорад?
Бале. Ҳавзи пайвастҳои Twisted пайвастҳои доимии keep-alive-ро барои ҳар як нуқтаи ниҳоии прокси нигоҳ медорад.
Оё проксиҳои VinaProxy барои вазифаҳои бисёрмиллионсаҳифагии Scrapy бемаҳдуд мебошанд?
Бале. Ҳамаи тарифҳои Dedicated IPv4 ва Static ISP трафики номаҳдуди моҳонаро дар бар мегиранд.
Спайдерҳои Scrapy-и худро бо ҳавзҳои статикии бемаҳдуди IP васеъ намоед
Проксиҳои яклухти фаврии Dedicated IPv4 ва Static ISP дар 7 кишвар.
Харидани проксиҳо барои Scrapy