Proxyk beállítása és rotálása Python Scrapyben
Updated:
A Scrapy aszinkron Twisted motorja egy beépített HttpProxyMiddleware-t tartalmaz (750-es prioritáson), amely feldolgozza a request.meta['proxy'] értékhez rendelt http://user:pass@ip:port formátumú karakterláncokat. Egy mindössze 10 soros egyéni Downloader Middleware megírásával a 740-es prioritáson a spiderjei automatikusan rotálhatnak a korlátlan forgalmú VinaProxy statikus IP-készletben.
request.meta['proxy'] = 'http://user:pass@ip:port'- 1 IP40 000 VND
- 5+ IP35 000 VND
- 10+ IP25 000 VND
- 20+ IP25 000 VND
- 50+ IP25 000 VND
- 100+ IP25 000 VND
- 200+ IP25 000 VND
- 500+ IP25 000 VND
- 1000+ IP22 000 VND
- 2000+ IP20 000 VND
- 1 IP40 000 VND
- 5+ IP35 000 VND
- 10+ IP25 000 VND
- 20+ IP25 000 VND
- 50+ IP25 000 VND
- 100+ IP25 000 VND
- 200+ IP25 000 VND
- 500+ IP25 000 VND
- 1000+ IP22 000 VND
- 2000+ IP20 000 VND
Scrapy proxy middleware sorrend és párhuzamossági beállítások
Mivel a HttpProxyMiddleware a 750-es prioritási számmal fut a user:pass eltávolításához a proxy URL-ből és a Proxy-Authorization fejléc kódolásához, a request.meta['proxy'] értékét beállító egyéni middleware-eknek alacsonyabb számmal (például 740) kell futniuk:
| Scrapy beállítás | Ajánlott érték | Cél |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | A kérést a megadott VinaProxy proxyn keresztül irányítja |
| Middleware prioritás | 740 (750 előtt) | Biztosítja, hogy a HttpProxyMiddleware kódolja a user:pass fejlécet |
CONCURRENT_REQUESTS_PER_IP | 2 és 4 között | Korlátozza az egyidejű socketek számát proxy IP-nként a HTTP 429 elkerülése érdekében |
AUTOTHROTTLE_ENABLED | True | Dinamikusan igazítja a letöltési késleltetést a céloldal válaszideje alapján |
Bevált gyakorlatok nagy volumenű Scrapy adatgyűjtéshez
- Töltse be a VinaProxy proxylistát a
from_crawler()metódusban, és rendelje hozzá arequest.meta['proxy'] = random.choice(self.proxies)értéket aprocess_request()függvényben - Engedélyezze a
RANDOMIZE_DOWNLOAD_DELAY = Truebeállítást aDOWNLOAD_DELAY = 1.0mellett, hogy az IP-nkénti kérések időközei soha ne tűnjenek robotszerűnek - Újrapróbálkozáskor (
429vagy503) válasszon egy másik proxyt a készletből, mielőtt újra sorba állítja a kérést
Lépésről lépésre
- 1
Formázza a proxykészletet http://user:pass@ip:port formátumra
Illessze be VinaProxy listáját a Proxy formátum konvertáló eszközünkbe az URL-karakterláncok előállításához.
- 2
Hozzon létre egy ProxyPoolMiddleware-t a middlewares.py fájlban
Definiálja a
process_request(self, request, spider)metódust arequest.meta['proxy'] = random.choice(self.proxies)beállításához. - 3
Regisztrálja 740-es prioritással a settings.py fájlban
Adja hozzá a
'myproject.middlewares.ProxyPoolMiddleware': 740sort aDOWNLOADER_MIDDLEWARESalá, és állítsa be aCONCURRENT_REQUESTS_PER_IP = 2értéket. - 4
Tesztelje a scrapy shell vagy a scrapy crawl paranccsal
Futtasson egy tesztkérést a
https://vinaproxy.com/api/my-ipcímre a rotáció és a hitelesítés ellenőrzéséhez.
Gyakran ismételt kérdések
Miért hibásodott meg az egyéni Scrapy proxy middleware-em 800-as prioritásra állítva?
A Scrapy beépített HttpProxyMiddleware-e a 750-es prioritáson fut. Ha a saját middleware a 800-as szinten fut (a 750 után), a beágyazott user:pass hitelesítési adatok soha nem konvertálódnak Proxy-Authorization fejléccé. Mindig 750 alá állítsa a middleware prioritását (például 740-re).
A Scrapy nyitva tartja az állandó kapcsolatokat minden egyes proxyhoz?
Igen. A Twisted kapcsolatkészlete perzisztens keep-alive kapcsolatokat tart fenn proxy-végpontonként.
Korlátlan forgalmúak a VinaProxy proxyk a többmillió oldalas Scrapy feladatokhoz?
Igen. Minden Dedicated IPv4 és Static ISP csomag korlátlan havi sávszélességet tartalmaz.
Méretezze Scrapy spidereit korlátlan statikus IP-készletekkel
Azonnali, tömeges Dedicated IPv4 és Static ISP proxyk 7 országban.
Scrapy proxyk vásárlása