Python Scrapy'де проксилерди кантип орнотуу жана алмаштыруу керек
Updated:
Scrapy'нин асинхрондук Twisted кыймылдаткычы request.meta['proxy'] маанисине дайындалган http://user:pass@ip:port саптарын талдоочу камтылган HttpProxyMiddleware компонентин (750 артыкчылыгы менен) камтыйт. 740 артыкчылыгындагы 10 саптык жеке Downloader Middleware жазуу менен спайдерлериңиз чексиз VinaProxy статикалык IP пулу боюнча автоматтык түрдө алмашып турат.
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 прокси middleware тартиби жана параллелдүүлүк жөндөөлөрү
HttpProxyMiddleware прокси URL дарегинен user:pass маалыматын алып салуу жана Proxy-Authorization башын коддоо үчүн 750 тартибинде иштегендиктен, request.meta['proxy'] дайындаган ар кандай жеке middleware андан төмөн санда (мисалы, 740) иштеши керек:
| Scrapy жөндөөсү | Сунушталган маани | Максаты |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | Суроо-талапты көрсөтүлгөн VinaProxy проксиси аркылуу багыттайт |
| Middleware артыкчылыгы | 740 (750 чейин) | HttpProxyMiddleware компоненти user:pass башын коддоорун камсыздайт |
CONCURRENT_REQUESTS_PER_IP | 2ден 4кө чейин | HTTP 429 катасын болтурбоо үчүн ар бир прокси IPге бир убактагы сокеттерди чектейт |
AUTOTHROTTLE_ENABLED | True | Максаттуу күтүү убактысынын негизинде сканерлөө кечигүүсүн динамикалуу ылайыкташтырат |
Көлөмдүү Scrapy сканерлөөсү үчүн мыкты тажрыйбалар
- VinaProxy прокси тизмеңизди
from_crawler()ичинде жүктөп,process_request()ичиндеrequest.meta['proxy'] = random.choice(self.proxies)маанисин дайындаңыз - Ар бир IP боюнча суроо-талап аралыгы робот сыяктуу көрүнбөшү үчүн
DOWNLOAD_DELAY = 1.0менен катарRANDOMIZE_DOWNLOAD_DELAY = Trueиштетиңиз - Кайталап көрүүдө (
429же503), суроо-талапты кезекке кайра коюудан мурун пулуңуздан башка проксини тандаңыз
Кадам-кадам
- 1
Прокси пулуңузду http://user:pass@ip:port катары форматтаңыз
URL саптарын алуу үчүн VinaProxy тизмеңизди биздин Proxy Format Converter куралына чаптаңыз.
- 2
middlewares.py ичинде ProxyPoolMiddleware түзүңүз
request.meta['proxy'] = random.choice(self.proxies)орнотуу үчүнprocess_request(self, request, spider)аныктаңыз. - 3
settings.py ичинде 740 артыкчылыгы менен каттаңыз
DOWNLOADER_MIDDLEWARESастына'myproject.middlewares.ProxyPoolMiddleware': 740кошуп,CONCURRENT_REQUESTS_PER_IP = 2кылып орнотуңуз. - 4
scrapy shell же scrapy crawl менен сынап көрүңүз
Алмашууну жана аутентификацияны текшерүү үчүн
https://vinaproxy.com/api/my-ipдарегине сыноо суроо-талабын жөнөтүңүз.
Көп берилүүчү суроолор
Эмне үчүн менин жеке Scrapy прокси middleware компонентим 800 артыкчылыгына коюлганда иштебей калды?
Scrapy'нин камтылган HttpProxyMiddleware компоненти 750 артыкчылыгында иштейт. Эгер сиздин middleware 800 (750дөн кийин) иштесе, камтылган user:pass дайындары эч качан Proxy-Authorization башына айландырылбайт. Middleware артыкчылыгын ар дайым 750дөн төмөн коюңуз (мисалы, 740).
Scrapy ар бир проксиге туруктуу байланыштарды ачык кармайбы?
Ооба. Twisted туташуу пулу ар бир прокси түйүнү үчүн туруктуу keep-alive байланыштарын сактап турат.
VinaProxy проксилери миллиондогон барактан турган Scrapy тапшырмалары үчүн чексизби?
Ооба. Бардык Dedicated IPv4 жана Static ISP тарифтери чексиз айлык трафикти камтыйт.
Чексиз статикалык IP пулдары менен Scrapy спайдерлериңизди кеңейтиңиз
7 өлкө боюнча заматта массалык Dedicated IPv4 жана Static ISP проксилери.
Scrapy проксилерин сатып алуу