Python Scrapy-তে কীভাবে প্রক্সি সেটআপ এবং রোটেট করবেন
Updated:
Scrapy-র অ্যাসিনক্রোনাস Twisted ইঞ্জিনে একটি বিল্ট-ইন HttpProxyMiddleware (প্রায়োরিটি 750-তে) রয়েছে, যা request.meta['proxy']-তে অ্যাসাইন করা http://user:pass@ip:port স্ট্রিং পার্স করে। প্রায়োরিটি 740-তে 10 লাইনের একটি কাস্টম Downloader Middleware তৈরি করলে আপনার স্পাইডারগুলো স্বয়ংক্রিয়ভাবে আনমিটার্ড VinaProxy স্ট্যাটিক IP-র পুলে রোটেট করতে পারবে।
request.meta['proxy'] = 'http://user:pass@ip:port'- 1টি IP৪০,০০০₫
- 5+ টি IP৩৫,০০০₫
- 10+ টি IP২৫,০০০₫
- 20+ টি IP২৫,০০০₫
- 50+ টি IP২৫,০০০₫
- 100+ টি IP২৫,০০০₫
- 200+ টি IP২৫,০০০₫
- 500+ টি IP২৫,০০০₫
- 1000+ টি IP২২,০০০₫
- 2000+ টি IP২০,০০০₫
- 1টি IP৪০,০০০₫
- 5+ টি IP৩৫,০০০₫
- 10+ টি IP২৫,০০০₫
- 20+ টি IP২৫,০০০₫
- 50+ টি IP২৫,০০০₫
- 100+ টি IP২৫,০০০₫
- 200+ টি IP২৫,০০০₫
- 500+ টি IP২৫,০০০₫
- 1000+ টি IP২২,০০০₫
- 2000+ টি IP২০,০০০₫
Scrapy প্রক্সি মিডলওয়্যারের ক্রম এবং কনকারেন্সি সেটিংস
যেহেতু প্রক্সি URL থেকে user:pass বাদ দিতে এবং Proxy-Authorization হেডার এনকোড করতে HttpProxyMiddleware ক্রম 750-তে চলে, তাই request.meta['proxy'] সেট করা যেকোনো কাস্টম মিডলওয়্যারের ক্রম অবশ্যই এর চেয়ে কম নম্বরে (যেমন 740) চলতে হবে:
| Scrapy সেটিং | সুপারিশকৃত মান | উদ্দেশ্য |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | নির্দিষ্ট VinaProxy প্রক্সির মাধ্যমে রিকোয়েস্ট রাউট করে |
| মিডলওয়্যার প্রায়োরিটি | 740 (750-এর আগে) | HttpProxyMiddleware যেন user:pass হেডার এনকোড করে তা নিশ্চিত করে |
CONCURRENT_REQUESTS_PER_IP | 2 থেকে 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 স্ট্রিং পেতে আমাদের Proxy Format Converter-এ আপনার VinaProxy তালিকাটি পেস্ট করুন।
- 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-এর কানেকশন পুল প্রতিটি প্রক্সি এন্ডপয়েন্টে পারসিস্টেন্ট কিপ-অ্যালাইভ কানেকশন বজায় রাখে।
মাল্টি-মিলিয়ন পেজের Scrapy কাজের জন্য VinaProxy প্রক্সিগুলো কি আনমিটার্ড?
হ্যাঁ। সমস্ত Dedicated IPv4 এবং Static ISP প্ল্যানে সীমাহীন মাসিক ব্যান্ডউইথ অন্তর্ভুক্ত রয়েছে।
আনমিটার্ড স্ট্যাটিক IP পুল দিয়ে আপনার Scrapy স্পাইডারের পরিধি বাড়ান
7টি দেশে ইনস্ট্যান্ট বাল্ক Dedicated IPv4 এবং Static ISP প্রক্সি।
Scrapy প্রক্সি কিনুন