Python Scrapy میں پراکسیز سیٹ اپ اور روٹیٹ کرنے کا طریقہ
Updated:
Scrapy کے غیر مطابقت پذیر Twisted انجن میں بلٹ ان HttpProxyMiddleware (ترجیح 750 پر) شامل ہے جو request.meta['proxy'] کو تفویض کردہ http://user:pass@ip:port اسٹرنگز کو پارس کرتا ہے۔ ترجیح 740 پر 10 لائنوں کا کسٹم Downloader Middleware لکھنے سے آپ کے اسپائیڈرز غیر میٹرڈ VinaProxy اسٹیٹک IPs کے پول میں خودکار طور پر روٹیٹ ہو سکتے ہیں۔
request.meta['proxy'] = 'http://user:pass@ip:port'- 1 IP₫40,000
- 5+ IPs₫35,000
- 10+ IPs₫25,000
- 20+ IPs₫25,000
- 50+ IPs₫25,000
- 100+ IPs₫25,000
- 200+ IPs₫25,000
- 500+ IPs₫25,000
- 1000+ IPs₫22,000
- 2000+ IPs₫20,000
- 1 IP₫40,000
- 5+ IPs₫35,000
- 10+ IPs₫25,000
- 20+ IPs₫25,000
- 50+ IPs₫25,000
- 100+ IPs₫25,000
- 200+ IPs₫25,000
- 500+ IPs₫25,000
- 1000+ IPs₫22,000
- 2000+ IPs₫20,000
Scrapy پراکسی مڈل ویئر کی ترتیب اور کنکرنسی سیٹنگز
چونکہ HttpProxyMiddleware پراکسی URL سے user:pass ہٹانے اور Proxy-Authorization ہیڈر کو اینکوڈ کرنے کے لیے آرڈر 750 پر چلتا ہے، اس لیے request.meta['proxy'] سیٹ کرنے والے کسی بھی کسٹم مڈل ویئر کو کم نمبر (مثلاً 740) پر چلنا چاہیے:
| Scrapy سیٹنگ | تجویز کردہ قدر | مقصد |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | درخواست کو مخصوص VinaProxy پراکسی کے ذریعے روٹ کرتا ہے |
| مڈل ویئر کی ترجیح | 740 (before 750) | یقینی بناتا ہے کہ HttpProxyMiddleware ہیڈر user:pass کو اینکوڈ کرے |
CONCURRENT_REQUESTS_PER_IP | 2 to 4 | HTTP 429 سے بچنے کے لیے فی پراکسی IP بیک وقت ساکٹس کو محدود کرتا ہے |
AUTOTHROTTLE_ENABLED | True | ہدف کی تاخیر کی بنیاد پر کرال کی تاخیر کو متحرک طور پر ایڈجسٹ کرتا ہے |
بڑے پیمانے پر Scrapy کرالز کے لیے بہترین طریقہ کار
from_crawler()میں اپنی VinaProxy پراکسی لسٹ لوڈ کریں اورprocess_request()کے اندرrequest.meta['proxy'] = random.choice(self.proxies)تفویض کریںDOWNLOAD_DELAY = 1.0کے ساتھRANDOMIZE_DOWNLOAD_DELAY = Trueفعال کریں تاکہ فی IP درخواستوں کے وقفے کبھی روبوٹک نہ لگیں- دوبارہ کوشش (
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پر ایک ٹیسٹ درخواست چلائیں۔
اکثر پوچھے جانے والے سوالات
ترجیح 800 پر سیٹ کرنے پر میرا کسٹم Scrapy پراکسی مڈل ویئر کیوں ناکام ہوا؟
Scrapy کا بلٹ ان HttpProxyMiddleware ترجیح 750 پر چلتا ہے۔ اگر آپ کا مڈل ویئر 800 پر چلتا ہے (750 کے بعد)، تو ان لائن user:pass اسناد کبھی بھی Proxy-Authorization ہیڈر میں تبدیل نہیں ہوتیں۔ اپنے مڈل ویئر کی ترجیح ہمیشہ 750 سے نیچے (جیسے 740) سیٹ کریں۔
کیا Scrapy ہر پراکسی کے لیے مستقل کنکشنز کھلا رکھتا ہے؟
جی ہاں۔ Twisted کا کنکشن پول فی پراکسی اینڈ پوائنٹ مستقل keep-alive کنکشنز برقرار رکھتا ہے۔
کیا ملٹی ملین پیجز کے Scrapy کاموں کے لیے VinaProxy پراکسیز غیر میٹرڈ ہیں؟
جی ہاں۔ تمام Dedicated IPv4 اور Static ISP منصوبوں میں لامحدود ماہانہ بینڈوڈتھ شامل ہے۔
غیر میٹرڈ اسٹیٹک IP پولز کے ساتھ اپنے Scrapy اسپائیڈرز کو وسعت دیں
7 ممالک میں فوری بلک Dedicated IPv4 اور Static ISP پراکسیز۔
Scrapy پراکسیز خریدیں