Python Scrapy'de proxy kurulumu ve rotasyonu nasıl yapılır
Updated:
Scrapy'nin asenkron Twisted motoru, request.meta['proxy'] değerine atanan http://user:pass@ip:port dizelerini ayrıştıran yerleşik bir HttpProxyMiddleware (750 önceliğinde) içerir. 740 önceliğinde 10 satırlık özel bir Downloader Middleware yazmak, örümceklerinizin kotasız VinaProxy statik IP havuzu genelinde otomatik olarak rotasyon yapmasını sağlar.
request.meta['proxy'] = 'http://user:pass@ip:port'- 1 IP₫40.000
- 5+ IP₫35.000
- 10+ IP₫25.000
- 20+ IP₫25.000
- 50+ IP₫25.000
- 100+ IP₫25.000
- 200+ IP₫25.000
- 500+ IP₫25.000
- 1000+ IP₫22.000
- 2000+ IP₫20.000
- 1 IP₫40.000
- 5+ IP₫35.000
- 10+ IP₫25.000
- 20+ IP₫25.000
- 50+ IP₫25.000
- 100+ IP₫25.000
- 200+ IP₫25.000
- 500+ IP₫25.000
- 1000+ IP₫22.000
- 2000+ IP₫20.000
Scrapy proxy middleware sıralaması ve eşzamanlılık ayarları
HttpProxyMiddleware, proxy URL'sinden user:pass bilgisini ayıklamak ve Proxy-Authorization üstbilgisini kodlamak için 750 sırasında çalıştığından, request.meta['proxy'] değerini ayarlayan özel ara yazılımların daha düşük bir sırada (ör. 740) çalışması gerekir:
| Scrapy Ayarı | Önerilen Değer | Amaç |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | İsteği belirtilen VinaProxy proxy'si üzerinden yönlendirir |
| Middleware Önceliği | 740 (750 öncesi) | HttpProxyMiddleware bileşeninin user:pass üstbilgisini kodlamasını sağlar |
CONCURRENT_REQUESTS_PER_IP | 2 ila 4 | HTTP 429 hatasını önlemek için proxy IP'si başına eşzamanlı soket sayısını sınırlar |
AUTOTHROTTLE_ENABLED | True | Tarama gecikmesini hedef gecikme süresine göre dinamik olarak uyarlar |
Yüksek hacimli Scrapy taramaları için en iyi uygulamalar
- VinaProxy proxy listenizi
from_crawler()içinde yükleyin veprocess_request()içinderequest.meta['proxy'] = random.choice(self.proxies)atamasını yapın - IP başına istek aralıklarının asla yapay görünmemesi için
DOWNLOAD_DELAY = 1.0ile birlikteRANDOMIZE_DOWNLOAD_DELAY = Trueayarını etkinleştirin - Yeniden denemelerde (
429veya503), isteği tekrar kuyruğa almadan önce havuzunuzdan farklı bir proxy seçin
Adım adım
- 1
Proxy havuzunuzu http://user:pass@ip:port olarak biçimlendirin
URL dizelerini almak için VinaProxy listenizi Proxy Format Dönüştürücü aracımıza yapıştırın.
- 2
middlewares.py içinde bir ProxyPoolMiddleware oluşturun
request.meta['proxy'] = random.choice(self.proxies)atamasını yapmak içinprocess_request(self, request, spider)fonksiyonunu tanımlayın. - 3
settings.py içinde 740 önceliğiyle kaydedin
DOWNLOADER_MIDDLEWARESaltına'myproject.middlewares.ProxyPoolMiddleware': 740ekleyin veCONCURRENT_REQUESTS_PER_IP = 2olarak ayarlayın. - 4
scrapy shell veya scrapy crawl ile test edin
Rotasyonu ve kimlik doğrulamasını doğrulamak için
https://vinaproxy.com/api/my-ipadresine bir test isteği gönderin.
Sıkça sorulan sorular
Özel Scrapy proxy middleware bileşeni 800 önceliğine ayarlandığında neden başarısız oldu?
Scrapy'nin yerleşik HttpProxyMiddleware bileşeni 750 önceliğinde çalışır. Ara yazılımınız 800 önceliğinde (750 sonrasında) çalışırsa, satır içi user:pass kimlik bilgileri hiçbir zaman Proxy-Authorization üstbilgisine dönüştürülmez. Ara yazılım önceliğinizi her zaman 750 değerinin altında (740 gibi) ayarlayın.
Scrapy her proxy için kalıcı bağlantıları açık tutar mı?
Evet. Twisted'ın bağlantı havuzu, proxy uç noktası başına kalıcı keep-alive bağlantılarını sürdürür.
VinaProxy proxyleri milyonlarca sayfalık Scrapy işleri için kotasız mıdır?
Evet. Tüm Dedicated IPv4 ve Static ISP planları sınırsız aylık bant genişliği içerir.
Kotasız statik IP havuzlarıyla Scrapy örümceklerinizi ölçeklendirin
7 ülkede anında toplu Dedicated IPv4 ve Static ISP proxyleri.
Scrapy Proxy Satın Al