Python Scrapy дээр прокси тохируулах болон сэлгэх заавар
Updated:
Scrapy-ийн асинхрон Twisted хөдөлгүүрт request.meta['proxy']-д оноосон http://user:pass@ip:port мөрийг задлан боловсруулдаг суурилуулсан HttpProxyMiddleware (750 зэрэглэлд) байдаг. 740 зэрэглэлд 10 мөртэй өөрийн Downloader Middleware бичсэнээр таны spider-ууд хязгааргүй дата бүхий VinaProxy статик IP сангаас автоматаар сэлгэн ажиллах боломжтой болно.
request.meta['proxy'] = 'http://user:pass@ip:port'- 1 IP₫ 40,000
- 5+ IP₫ 35,000
- 10+ IP₫ 25,000
- 20+ IP₫ 25,000
- 50+ IP₫ 25,000
- 100+ IP₫ 25,000
- 200+ IP₫ 25,000
- 500+ IP₫ 25,000
- 1000+ IP₫ 22,000
- 2000+ IP₫ 20,000
- 1 IP₫ 40,000
- 5+ IP₫ 35,000
- 10+ IP₫ 25,000
- 20+ IP₫ 25,000
- 50+ IP₫ 25,000
- 100+ IP₫ 25,000
- 200+ IP₫ 25,000
- 500+ IP₫ 25,000
- 1000+ IP₫ 22,000
- 2000+ IP₫ 20,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 crawl-ийн шилдэг туршлагууд
from_crawler()дотор VinaProxy прокси жагсаалтаа ачаалж,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 холболтыг хадгалдаг.
Олон сая хуудас татах Scrapy-ийн ажлуудад VinaProxy прокси хязгааргүй трафиктэй юу?
Тийм. Dedicated IPv4 болон Static ISP багцууд бүгд сарын хязгааргүй дата хэрэглээтэй ирдэг.
Хязгааргүй дататай статик IP сангаар Scrapy spider-уудаа өргөжүүл
7 орны шууд ашиглах бэлэн бөөн Dedicated IPv4 болон Static ISP проксинууд.
Scrapy прокси худалдаж авах