Si të konfiguroni dhe alternoni proxy në Python Scrapy
Updated:
Motori asinkron Twisted i Scrapy përfshin një HttpProxyMiddleware të integruar (me prioritet 750) që analizon vargjet http://user:pass@ip:port të caktuara te request.meta['proxy']. Krijimi i një Downloader Middleware të personalizuar me 10 rreshta në prioritetin 740 u lejon spiders tuaj të alternojnë automatikisht një grup IP-sh statike të pakufizuara nga 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 ₫
Renditja e middleware të proxy në Scrapy & cilësimet e njëkohshmërisë
Meqenëse HttpProxyMiddleware ekzekutohet në rendin 750 për të hequr user:pass nga URL-ja e proxy-t dhe për të koduar titullin Proxy-Authorization, çdo middleware i personalizuar që cakton request.meta['proxy'] duhet të ekzekutohet me një numër më të ulët (p.sh., 740):
| Cilësimi i Scrapy | Vlera e rekomanduar | Qëllimi |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | Dërgon kërkesën përmes proxy-t të specifikuar të VinaProxy |
| Middleware Priority | 740 (before 750) | Siguron që HttpProxyMiddleware të kodojë titullin user:pass |
CONCURRENT_REQUESTS_PER_IP | 2 deri në 4 | Kufizon lidhjet e njëkohshme për çdo IP proxy për të shmangur HTTP 429 |
AUTOTHROTTLE_ENABLED | True | Përshtat në mënyrë dinamike vonesën e skanimit bazuar në vonesën e synuar |
Praktikat më të mira për skanime me volum të lartë në Scrapy
- Ngarkoni listën tuaj të proxy-ve VinaProxy në
from_crawler()dhe caktonirequest.meta['proxy'] = random.choice(self.proxies)brendaprocess_request() - Aktivizoni
RANDOMIZE_DOWNLOAD_DELAY = Truesë bashku meDOWNLOAD_DELAY = 1.0në mënyrë që intervalet e kërkesave për IP të mos duken kurrë robotike - Gjatë riprovimit (
429ose503), zgjidhni një proxy tjetër nga grupi juaj përpara se ta vendosni kërkesën përsëri në radhë
Hap pas hapi
- 1
Formatoni grupin tuaj të proxy-ve si http://user:pass@ip:port
Ngjisni listën tuaj VinaProxy në Proxy Format Converter tonë për të marrë vargjet e URL-ve.
- 2
Krijoni një ProxyPoolMiddleware në middlewares.py
Përcaktoni
process_request(self, request, spider)për të vendosurrequest.meta['proxy'] = random.choice(self.proxies). - 3
Regjistrojeni me prioritet 740 në settings.py
Shtoni
'myproject.middlewares.ProxyPoolMiddleware': 740nënDOWNLOADER_MIDDLEWARESdhe caktoniCONCURRENT_REQUESTS_PER_IP = 2. - 4
Testoni me scrapy shell ose scrapy crawl
Ekzekutoni një kërkesë provë te
https://vinaproxy.com/api/my-ippër të verifikuar rotacionin dhe autentikimin.
Pyetjet e shpeshta
Pse middleware im i personalizuar i proxy-t në Scrapy dështoi kur u vendos në prioritetin 800?
HttpProxyMiddleware i integruar i Scrapy ekzekutohet me prioritet 750. Nëse middleware juaj ekzekutohet në 800 (pas 750), kredencialet e përfshira user:pass nuk konvertohen kurrë në një titull Proxy-Authorization. Vendoseni gjithmonë prioritetin e middleware tuaj nën 750 (si p.sh. 740).
A mban Scrapy lidhje të vazhdueshme të hapura për çdo proxy?
Po. Grupi i lidhjeve të Twisted ruan lidhje të vazhdueshme keep-alive për çdo pikë përfundimtare të proxy-t.
A janë proxy-t e VinaProxy të pakufizuar për procese Scrapy me miliona faqe?
Po. Të gjitha planet Dedicated IPv4 dhe Static ISP përfshijnë brez kalimi mujor të pakufizuar.
Zgjeroni spiders tuaj të Scrapy me grupe IP-sh statike të pakufizuara
Proxy të menjëhershme në grup Dedicated IPv4 dhe Static ISP në 7 shtete.
Bli Proxy për Scrapy