Python Scrapy-da proksilarni sozlash va rotatsiya qilish
Updated:
Scrapy-ning asinxron Twisted dvigateli request.meta['proxy'] ga tayinlangan http://user:pass@ip:port qatorlarini tahlil qiluvchi o‘rnatilgan HttpProxyMiddleware (750 ustuvorlikda) komponentini o‘z ichiga oladi. 740 ustuvorlikdagi 10 qatorli maxsus Downloader Middleware yozish orqali spayderlaringiz cheksiz trafikli VinaProxy statik IP-lar puli bo‘ylab avtomatik rotatsiya qila oladi.
request.meta['proxy'] = 'http://user:pass@ip:port'- 1 ta IP40 000 ₫
- 5+ ta IP35 000 ₫
- 10+ ta IP25 000 ₫
- 20+ ta IP25 000 ₫
- 50+ ta IP25 000 ₫
- 100+ ta IP25 000 ₫
- 200+ ta IP25 000 ₫
- 500+ ta IP25 000 ₫
- 1000+ ta IP22 000 ₫
- 2000+ ta IP20 000 ₫
- 1 ta IP40 000 ₫
- 5+ ta IP35 000 ₫
- 10+ ta IP25 000 ₫
- 20+ ta IP25 000 ₫
- 50+ ta IP25 000 ₫
- 100+ ta IP25 000 ₫
- 200+ ta IP25 000 ₫
- 500+ ta IP25 000 ₫
- 1000+ ta IP22 000 ₫
- 2000+ ta IP20 000 ₫
Scrapy proksi middleware tartibi va bir vaqtning o‘zidagi so‘rovlar sozlamalari
HttpProxyMiddleware proksi URL manzilidan user:pass qismini ajratib olish va Proxy-Authorization sarlavhasini kodlash uchun 750 tartibida ishlagani sababli, request.meta['proxy'] ni o‘rnatuvchi har qanday maxsus middleware undan pastroq raqamda (masalan, 740) ishlashi kerak:
| Scrapy sozlamasi | Tavsiya etilgan qiymat | Maqsadi |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | So‘rovni ko‘rsatilgan VinaProxy proksisi orqali yo‘naltiradi |
| Middleware ustuvorligi | 740 (750 dan oldin) | HttpProxyMiddleware komponenti user:pass sarlavhasini kodlashini ta’minlaydi |
CONCURRENT_REQUESTS_PER_IP | 2 dan 4 gacha | HTTP 429 xatosining oldini olish uchun har bir proksi IP-ga bir vaqtning o‘zidagi soketlar sonini cheklaydi |
AUTOTHROTTLE_ENABLED | True | Kechikish vaqtiga qarab krolling oralig‘ini dinamik ravishda moslashtiradi |
Katta hajmdagi Scrapy krollingi uchun eng yaxshi amaliyotlar
from_crawler()ichida VinaProxy proksilari ro‘yxatini yuklang vaprocess_request()ichidarequest.meta['proxy'] = random.choice(self.proxies)ni tayinlang- Har bir IP bo‘yicha so‘rovlar oralig‘i robotga o‘xshab qolmasligi uchun
DOWNLOAD_DELAY = 1.0bilan birgaRANDOMIZE_DOWNLOAD_DELAY = Trueni yoqing - Qayta urinishda (
429yoki503), so‘rovni qayta navbatga qo‘yishdan oldin pulingizdan boshqa proksini tanlang
Bosqichma-bosqich
- 1
Proksilar pulingizni http://user:pass@ip:port formatiga keltiring
URL qatorlarini olish uchun VinaProxy ro‘yxatingizni Proxy Format Converter vositamizga joylashtiring.
- 2
middlewares.py faylida ProxyPoolMiddleware yarating
request.meta['proxy'] = random.choice(self.proxies)ni o‘rnatish uchunprocess_request(self, request, spider)funksiyasini aniqlang. - 3
settings.py faylida 740 ustuvorligi bilan ro‘yxatdan o‘tkazing
DOWNLOADER_MIDDLEWARESostiga'myproject.middlewares.ProxyPoolMiddleware': 740ni qo‘shing vaCONCURRENT_REQUESTS_PER_IP = 2ni o‘rnating. - 4
scrapy shell yoki scrapy crawl bilan sinab ko‘ring
Rotatsiya va autentifikatsiyani tekshirish uchun
https://vinaproxy.com/api/my-ipmanziliga test so‘rovini yuboring.
Ko‘p so‘raladigan savollar
Nima uchun maxsus Scrapy proksi middleware 800 ustuvorligiga o‘rnatilganda ishlamadi?
Scrapy-ning o‘rnatilgan HttpProxyMiddleware komponenti 750 ustuvorligida ishlaydi. Agar sizning middleware komponentingiz 800 da (750 dan keyin) ishlasa, kiritilgan user:pass ma’lumotlari Proxy-Authorization sarlavhasiga aylantirilmaydi. Har doim middleware ustuvorligini 750 dan pastroq (masalan, 740) qilib belgilang.
Scrapy har bir proksi bilan doimiy ulanishlarni ochiq saqlaydimi?
Ha. Twisted ulanishlar puli har bir proksi manzili uchun doimiy keep-alive ulanishlarini saqlab turadi.
Ko‘p million sahifali Scrapy vazifalari uchun VinaProxy proksilari cheksiz trafikka egami?
Ha. Barcha Dedicated IPv4 va Static ISP tariflari oylik cheksiz o‘tkazish qobiliyatini o‘z ichiga oladi.
Cheksiz statik IP pullari bilan Scrapy spayderlaringizni kengaytiring
7 ta mamlakat bo‘ylab bir zumda ulgurji Dedicated IPv4 va Static ISP proksilari.
Scrapy proksilarini sotib olish