Kā iestatīt un rotēt starpniekserverus Python Scrapy
Updated:
Scrapy asinhronajā Twisted dzinējā ir iebūvēta HttpProxyMiddleware (ar prioritāti 750), kas parsē http://user:pass@ip:port virknes, kuras piešķirtas request.meta['proxy']. Izveidojot 10 rindiņu pielāgotu Downloader Middleware ar prioritāti 740, jūsu zirnekļi var automātiski rotēt caur neierobežotu VinaProxy statisko IP pūlu.
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 ₫
Scrapy proxy middleware secība un vienlaicības iestatījumi
Tā kā HttpProxyMiddleware darbojas ar kārtas numuru 750, lai noņemtu user:pass no proxy URL un iekodētu Proxy-Authorization galveni, jebkurai pielāgotajai starpprogrammatūrai, kas iestata request.meta['proxy'], ir jādarbojas ar mazāku skaitli (piemēram, 740):
| Scrapy iestatījums | Ieteicamā vērtība | Mērķis |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | Novirza pieprasījumu caur norādīto VinaProxy starpniekserveri |
| Middleware prioritāte | 740 (pirms 750) | Nodrošina, ka HttpProxyMiddleware iekodē user:pass galveni |
CONCURRENT_REQUESTS_PER_IP | 2 līdz 4 | Ierobežo vienlaicīgo ligzdu skaitu vienai proxy IP, lai izvairītos no HTTP 429 |
AUTOTHROTTLE_ENABLED | True | Dinamiski pielāgo pārlūkošanas aizkavi, pamatojoties uz mērķa latentumu |
Labākā prakse liela apjoma Scrapy pārlūkošanai
- Ielādējiet savu VinaProxy proxy sarakstu
from_crawler()un piešķirietrequest.meta['proxy'] = random.choice(self.proxies)iekšprocess_request() - Iespējojiet
RANDOMIZE_DOWNLOAD_DELAY = Truekopā arDOWNLOAD_DELAY = 1.0, lai pieprasījumu intervāli katrai IP nekad neizskatītos robotizēti - Atkārtota mēģinājuma gadījumā (
429vai503) izvēlieties citu proxy no sava pūla pirms pieprasījuma atkārtotas ievietošanas rindā
Soli pa solim
- 1
Formatējiet savu proxy pūlu kā http://user:pass@ip:port
Ielīmējiet savu VinaProxy sarakstu mūsu Proxy formāta pārveidotājā, lai iegūtu URL virknes.
- 2
Izveidojiet ProxyPoolMiddleware failā middlewares.py
Definējiet
process_request(self, request, spider), lai iestatīturequest.meta['proxy'] = random.choice(self.proxies). - 3
Reģistrējiet ar prioritāti 740 failā settings.py
Pievienojiet
'myproject.middlewares.ProxyPoolMiddleware': 740sadaļāDOWNLOADER_MIDDLEWARESun iestatietCONCURRENT_REQUESTS_PER_IP = 2. - 4
Testējiet ar scrapy shell vai scrapy crawl
Veiciet testa pieprasījumu uz
https://vinaproxy.com/api/my-ip, lai pārbaudītu rotāciju un autentifikāciju.
Biežāk uzdotie jautājumi
Kāpēc mana pielāgotā Scrapy proxy starpprogrammatūra neizdevās, ja tai bija iestatīta prioritāte 800?
Scrapy iebūvētā HttpProxyMiddleware darbojas ar prioritāti 750. Ja jūsu starpprogrammatūra darbojas ar 800 (pēc 750), iekļautie user:pass akreditācijas dati nekad netiek pārvērsti par Proxy-Authorization galveni. Vienmēr iestatiet savas starpprogrammatūras prioritāti zemāk par 750 (piemēram, 740).
Vai Scrapy uztur pastāvīgus savienojumus atvērtus ar katru proxy?
Jā. Twisted savienojumu pūls uztur pastāvīgus keep-alive savienojumus katram proxy galapunktam.
Vai VinaProxy starpniekserveri ir ar neierobežotu datplūsmu vairāku miljonu lapu Scrapy uzdevumiem?
Jā. Visi Dedicated IPv4 un Static ISP plāni ietver neierobežotu ikmēneša joslas platumu.
Mērogojiet savus Scrapy zirnekļus ar neierobežotiem statisko IP pūliem
Tūlītēji lielapjoma Dedicated IPv4 un Static ISP starpniekserveri 7 valstīs.
Pirkt Scrapy starpniekserverus