Jinsi ya kusanidi na kuzungusha proksi katika Python Scrapy
Updated:
Injini ya Twisted ya Scrapy isiyo ya wakati mmoja inajumuisha HttpProxyMiddleware ya ndani (kwenye kipaumbele cha 750) inayochanganua mifuatano ya http://user:pass@ip:port iliyowekwa kwenye request.meta['proxy']. Kuandika Downloader Middleware maalum ya mistari 10 kwenye kipaumbele cha 740 huruhusu spiders zako kuzunguka kiotomatiki kwenye dimbwi la IP tuli za VinaProxy zisizo na kikomo cha data.
request.meta['proxy'] = 'http://user:pass@ip:port'- IP 1₫ 40,000
- IP 5+₫ 35,000
- IP 10+₫ 25,000
- IP 20+₫ 25,000
- IP 50+₫ 25,000
- IP 100+₫ 25,000
- IP 200+₫ 25,000
- IP 500+₫ 25,000
- IP 1000+₫ 22,000
- IP 2000+₫ 20,000
- IP 1₫ 40,000
- IP 5+₫ 35,000
- IP 10+₫ 25,000
- IP 20+₫ 25,000
- IP 50+₫ 25,000
- IP 100+₫ 25,000
- IP 200+₫ 25,000
- IP 500+₫ 25,000
- IP 1000+₫ 22,000
- IP 2000+₫ 20,000
Mpangilio wa middleware ya proksi ya Scrapy na mipangilio ya concurrency
Kwa sababu HttpProxyMiddleware hufanya kazi katika nafasi ya 750 ili kuondoa user:pass kutoka kwenye URL ya proksi na kusimba kijajuu cha Proxy-Authorization, middleware yoyote maalum inayoweka request.meta['proxy'] lazima ifanye kazi kwa nambari ya chini zaidi (k.m., 740):
| Mpangilio wa Scrapy | Thamani Inayopendekezwa | Kusudi |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | Huelekeza ombi kupitia proksi maalum ya VinaProxy |
| Kipaumbele cha Middleware | 740 (kabla ya 750) | Huhakikisha HttpProxyMiddleware inasimba kijajuu cha user:pass |
CONCURRENT_REQUESTS_PER_IP | 2 hadi 4 | Huweka kikomo cha soketi za wakati mmoja kwa kila IP ya proksi ili kuepuka HTTP 429 |
AUTOTHROTTLE_ENABLED | True | Hurekebisha ucheleweshaji wa kutambaa kulingana na kasi ya majibu ya tovuti lengwa |
Mbinu bora za utambazaji wa kiwango cha juu katika Scrapy
- Pakia orodha yako ya proksi za VinaProxy katika
from_crawler()na uwekerequest.meta['proxy'] = random.choice(self.proxies)ndani yaprocess_request() - Washa
RANDOMIZE_DOWNLOAD_DELAY = Truepamoja naDOWNLOAD_DELAY = 1.0ili vipindi vya maombi kwa kila IP visionekane kama roboti kamwe - Wakati wa kujaribu tena (
429au503), chagua proksi tofauti kutoka kwenye dimbwi lako kabla ya kurudisha ombi kwenye foleni
Hatua kwa hatua
- 1
Panga dimbwi lako la proksi kama http://user:pass@ip:port
Bandika orodha yako ya VinaProxy kwenye Kigeuzi cha Muundo wa Proksi chetu ili kupata mifuatano ya URL.
- 2
Unda ProxyPoolMiddleware katika middlewares.py
Bainisha
process_request(self, request, spider)ili kuwekarequest.meta['proxy'] = random.choice(self.proxies). - 3
Sajili kwenye kipaumbele cha 740 katika settings.py
Ongeza
'myproject.middlewares.ProxyPoolMiddleware': 740chini yaDOWNLOADER_MIDDLEWARESna uwekeCONCURRENT_REQUESTS_PER_IP = 2. - 4
Jaribu kwa kutumia scrapy shell au scrapy crawl
Tekeleza ombi la jaribio dhidi ya
https://vinaproxy.com/api/my-ipili kuthibitisha mzunguko na uthibitishaji.
Maswali yanayoulizwa mara kwa mara
Kwa nini middleware yangu maalum ya proksi ya Scrapy ilishindwa ilipowekwa kwenye kipaumbele cha 800?
HttpProxyMiddleware ya ndani ya Scrapy hufanya kazi kwenye kipaumbele cha 750. Ikiwa middleware yako inafanya kazi katika 800 (baada ya 750), vitambulisho vya ndani vya user:pass havibadilishwi kamwe kuwa kijajuu cha Proxy-Authorization. Weka kipaumbele cha middleware yako chini ya 750 kila wakati (kama vile 740).
Je, Scrapy hudumisha miunganisho ya kudumu wazi kwa kila proksi?
Ndiyo. Dimbwi la miunganisho la Twisted hudumisha miunganisho endelevu ya keep-alive kwa kila kituo cha proksi.
Je, proksi za VinaProxy hazina kikomo cha data kwa kazi za Scrapy za mamilioni ya kurasa?
Ndiyo. Mipango yote ya Dedicated IPv4 na Static ISP inajumuisha data ya kila mwezi isiyo na kikomo.
Kuza spiders zako za Scrapy kwa madimbwi ya IP tuli zisizo na kikomo
Proksi za papo hapo kwa wingi za Dedicated IPv4 na Static ISP katika nchi 7.
Nunua Proksi za Scrapy