Kif tikkonfigura u ddawwar proxies fi Scrapy ta' Python
Updated:
Il-magna asinkrona Twisted ta' Scrapy tinkludi HttpProxyMiddleware integrat (bi prijorità 750) li jipproċessa stringi ta' http://user:pass@ip:port assenjati lil request.meta['proxy']. Billi tikteb Downloader Middleware personalizzat ta' 10 linji bi prijorità 740, l-ispiders tiegħek jistgħu jdawru awtomatikament bejn pool ta' IPs statiċi ta' VinaProxy bla limitu.
request.meta['proxy'] = 'http://user:pass@ip:port'- IP 1₫40,000
- 5+ IPs₫35,000
- 10+ IPs₫25,000
- 20+ IPs₫25,000
- 50+ IPs₫25,000
- 100+ IPs₫25,000
- 200+ IPs₫25,000
- 500+ IPs₫25,000
- 1000+ IPs₫22,000
- 2000+ IPs₫20,000
- IP 1₫40,000
- 5+ IPs₫35,000
- 10+ IPs₫25,000
- 20+ IPs₫25,000
- 50+ IPs₫25,000
- 100+ IPs₫25,000
- 200+ IPs₫25,000
- 500+ IPs₫25,000
- 1000+ IPs₫22,000
- 2000+ IPs₫20,000
L-ordni tal-middleware tal-proxy fi Scrapy u s-settings tal-konkorrenza
Billi HttpProxyMiddleware jaħdem fl-ordni 750 biex ineħħi user:pass mill-URL tal-proxy u jikkodifika l-header Proxy-Authorization, kwalunkwe middleware personalizzat li jissettja request.meta['proxy'] għandu jaħdem b'numru aktar baxx (eż., 740):
| Setting ta' Scrapy | Valur Rakkomandat | Għan |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | Jidderieġi t-talba mill-proxy speċifikat ta' VinaProxy |
| Prijorità tal-Middleware | 740 (qabel 750) | Jiżgura li HttpProxyMiddleware jikkodifika l-header ta' user:pass |
CONCURRENT_REQUESTS_PER_IP | 2 sa 4 | Jillimita s-sockets simultanji għal kull IP ta' proxy biex jiġi evitat HTTP 429 |
AUTOTHROTTLE_ENABLED | True | Jadatta b'mod dinamiku d-dewmien tal-crawling skont il-latenza fil-mira |
L-aħjar prattiki għal crawls ta' volum kbir fi Scrapy
- Għabbi l-lista tal-proxies ta' VinaProxy tiegħek f'
from_crawler()u assenjarequest.meta['proxy'] = random.choice(self.proxies)ġewwaprocess_request() - Attiva
RANDOMIZE_DOWNLOAD_DELAY = Trueflimkien ma'DOWNLOAD_DELAY = 1.0sabiex l-intervalli tat-talbiet għal kull IP qatt ma jidhru robotiċi - F'każ ta' attentat mill-ġdid (
429jew503), agħżel proxy differenti mill-pool tiegħek qabel ma terġa' tqiegħed it-talba fil-kju
Pass pass
- 1
Ifformattja l-pool tal-proxies tiegħek bħala http://user:pass@ip:port
Ippejstja l-lista ta' VinaProxy tiegħek fil-Proxy Format Converter tagħna biex tikseb stringi ta' URL.
- 2
Oħloq ProxyPoolMiddleware f'middlewares.py
Iddefinixxi
process_request(self, request, spider)biex tissettjarequest.meta['proxy'] = random.choice(self.proxies). - 3
Irreġistra bi prijorità 740 f'settings.py
Żid
'myproject.middlewares.ProxyPoolMiddleware': 740taħtDOWNLOADER_MIDDLEWARESu ssettjaCONCURRENT_REQUESTS_PER_IP = 2. - 4
Ittestja bi scrapy shell jew scrapy crawl
Ħaddem talba ta' prova kontra
https://vinaproxy.com/api/my-ipbiex tivverifika r-rotazzjoni u l-awtentikazzjoni.
Mistoqsijiet frekwenti
Għaliex il-middleware personalizzat tal-proxy fi Scrapy falla meta ġie ssettjat bi prijorità 800?
L-HttpProxyMiddleware integrat ta' Scrapy jaħdem bi prijorità 750. Jekk il-middleware tiegħek jaħdem fi 800 (wara 750), il-kredenzjali inline ta' user:pass qatt ma jiġu kkonvertiti f'header Proxy-Authorization. Dejjem issettja l-prijorità tal-middleware tiegħek taħt 750 (bħal 740).
Scrapy iżomm konnessjonijiet persistenti miftuħa għal kull proxy?
Iva. Il-pool ta' konnessjonijiet ta' Twisted iżomm konnessjonijiet persistenti keep-alive għal kull endpoint ta' proxy.
Il-proxies ta' VinaProxy huma bla limitu għal xogħlijiet ta' Scrapy b'miljuni ta' paġni?
Iva. Il-pjanijiet kollha ta' Dedicated IPv4 u Static ISP jinkludu bandwidth ta' kull xahar bla limitu.
Kabbar l-ispiders tiegħek fi Scrapy b'pools ta' IP statiċi bla limitu
Proxies Dedicated IPv4 u Static ISP bl-ingrossa b'attivazzjoni immedjata f'7 pajjiżi.
Ixtri Proxies għal Scrapy