প্রকল্প সম্পর্কে
web-core হলো Python-এর জন্য একটি শেয়ারড ওয়েব ইনফ্রাস্ট্রাকচার প্যাকেজ, যা wet-mcp MCP সার্ভার এবং অন্যান্য ডাউনস্ট্রিম অ্যাপ্লিকেশনগুলিকে শক্তি প্রদান করে বলে বর্ণনা করা হয়েছে। এটি একটি টাইপড পাবলিক API-এর মাধ্যমে বেশ কিছু ওয়েব-ফেসিং সক্ষমতাকে একত্রিত করে। README-তে উল্লেখ করা হয়েছে যে সাইট-নির্দিষ্ট সিলেক্টরগুলো ইচ্ছাকৃতভাবে কনজিউমার অ্যাপ্লিকেশনের জন্য রাখা হয়েছে — এই প্যাকেজটি শুধুমাত্র জেনেরিক ইনফ্রাস্ট্রাকচার প্রদান করে, যেখানে প্রতি-ডোমেইন কুকিজ এবং সিলেক্টরগুলো এনভায়রনমেন্ট ভেরিয়েবলের মাধ্যমে সরবরাহ করা হয়।
README-তে তালিকাভুক্ত সক্ষমতাগুলো হলো:
- SearXNG সার্চ: একটি ক্রস-প্রসেস সিঙ্গেলটন রানার (ফাইল-লক ভিত্তিক, যা সমস্ত Python প্রসেস জুড়ে একটি ইনস্ট্যান্স নিশ্চিত করে) এবং একটি ক্লায়েন্ট যা রিট্রাই, রেজাল্ট ডিডুপ্লিকেশন এবং ডোমেইন ফিল্টারিং সম্পাদন করে।
- মাল্টি-স্ট্র্যাটেজি স্ক্র্যাপিং: একটি LangGraph স্টেট-মেশিন এজেন্ট যা বিভিন্ন স্ট্র্যাটেজির মাধ্যমে এসকলেট করে। সরবরাহকৃত স্ট্র্যাটেজি মডিউলগুলোর মধ্যে রয়েছে API-direct ফেচিং, বেসিক HTTP, curl-cffi-এর মাধ্যমে TLS ফিঙ্গারপ্রিন্ট স্পুফিং, Crawl4AI-এর মাধ্যমে হেডলেস রেন্ডারিং, Patchright স্টিলথ-ব্রাউজার রেন্ডারিং, RenderClient-এর মাধ্যমে রিমোট রেন্ডারিং এবং একটি CapSolver-ব্যাকড CAPTCHA স্ট্র্যাটেজি। স্ট্র্যাটেজিগুলো ক্যাশ-প্রস্তাবিত ক্রমে চেষ্টা করা হয়, রেসপন্সগুলো যাচাই করা হয় এবং ব্যর্থতাগুলো স্বয়ংক্রিয়ভাবে এসকলেট হয় — যার মধ্যে আন্ডার-রেন্ডারড জাভাস্ক্রিপ্ট শেল থেকে রেন্ডার ব্যাকএন্ডে যাওয়া অন্তর্ভুক্ত। একটি StrategyCache প্রতি-ডোমেইন পারফরম্যান্স ট্র্যাক করে।
- SSRF-safe HTTP ক্লায়েন্ট: একটি DNS-পিনড httpx ক্লায়েন্ট, URL নরমালাইজেশন, ট্র্যাকিং-প্যারামিটার স্ট্রিপিং এবং ডোমেইন ভ্যালিডেশন হেল্পার। DNS রিবাইন্ডিং থেকে রক্ষা করতে সমস্ত আউটবাউন্ড HTTP-এর safe_httpx_client-এর মাধ্যমে যাওয়ার কথা।
- ব্রাউজার এবং রিমোট রেন্ডারিং: একটি BrowserProvider প্রোটোকল এবং একটি Patchright (undetected Playwright) প্রোভাইডার, সেলফ-হোস্টেড /content এন্ডপয়েন্টের জন্য একটি BrowserlessClient, এবং একটি Cloudflare Browser Rendering ক্লায়েন্ট, যা স্লিম কন্টেইনারগুলোর জন্য তৈরি করা হয়েছে যাতে জাভাস্ক্রিপ্ট রেন্ডারিং অফলোড করা যায়।
- robots.txt কমপ্লায়েন্স: ফেচ করার আগে প্রতি-ডোমেইন ক্যাশড চেক।
- LLM সিলেক্টর ইনফারেন্স (ঐচ্ছিক): যখন বিল্ট-ইন সিলেক্টরগুলো ব্যর্থ হয়, তখন উপস্থিত API কী (Google Gemini, OpenAI, Anthropic, xAI) থেকে একটি প্রোভাইডার স্বয়ংক্রিয়ভাবে শনাক্ত করা যেতে পারে; যদি কোনো কী সেট করা না থাকে, তবে ইনফারেন্স নিঃশব্দে বাদ দেওয়া হয়। একটি কাস্টম llm_caller-ও ইনজেক্ট করা যেতে পারে। Gemini-কে প্রজেক্ট/লোকেশন ভেরিয়েবলের মাধ্যমে Vertex AI-এর মাধ্যমে রাউট করা যেতে পারে।
- এক্সটার্নাল API অ্যাডাপ্টার: Google Drive ফোল্ডার/ফাইল ফেচিং এবং MangaDex (মঙ্গা, চ্যাপ্টার, ইমেজ)-এর জন্য টাইপড, SSRF-safe ক্লায়েন্ট।
PyPI থেকে n24q02m-web-core (uv add) হিসেবে ইনস্টলেশন করা যায়, যার একটি v2.x স্টেবল লাইন রয়েছে। কনফিগারেশন সম্পূর্ণভাবে এনভায়রনমেন্ট-ভেরিয়েবল চালিত এবং প্রতিটি ভেরিয়েবল ঐচ্ছিক — একটি বাদ দিলে সেটি দ্বারা নিয়ন্ত্রিত ফিচারটি নিষ্ক্রিয় হয়ে যায়, এবং প্যাকেজটি ইমপোর্ট বা ব্যবহার করার জন্য কোনো ভেরিয়েবলের প্রয়োজন নেই। ডকুমেন্ট করা ভেরিয়েবলগুলোর মধ্যে SearXNG URL এবং রান ইউজার, স্ক্র্যাপিংয়ের জন্য প্রতি-ডোমেইন কুকিজ (JSON), এবং সিলেক্টর ইনফারেন্সের জন্য LLM প্রোভাইডার কী এবং মডেল ওভাররাইড অন্তর্ভুক্ত রয়েছে। রিমোট রেন্ডার ক্রেডেনশিয়ালগুলো কনস্ট্রাক্টর আর্গুমেন্ট হিসেবে পাস করা হয়।
আর্কিটেকচারটি src/web_core-এর অধীনে লেয়ারড মডিউল হিসেবে সংগঠিত: http (SSRF-safe প্রিমিতিভস, URL ইউটিলিটিজ), search (ক্লায়েন্ট, মডেল, রানার), scraper (এজেন্ট, বেস স্ট্র্যাটেজি, ক্যাশ, রোবটস, সিলেক্টর ইনফারেন্স, স্টেট, ইউটিলিটিজ এবং স্ট্র্যাটেজিস সাবপ্যাকেজ), browsers (প্রোটোকল, patchright, browserless, cf_rendering) এবং adapters (google_drive, mangadex)। প্যাকেজটি PEP 561 টাইপিংয়ের জন্য একটি py.typed মার্কার সরবরাহ করে। হাইলাইট করা ডিজাইন সিদ্ধান্তগুলোর মধ্যে রয়েছে SSRF সুরক্ষার জন্য DNS পিনিং, স্বয়ংক্রিয় স্ট্র্যাটেজি এসক্যালেশন, ক্রস-প্রসেস SearXNG সিঙ্গেলটন এবং প্রোটোকল-ভিত্তিক স্ট্রাকচারাল টাইপিং-এর ব্যবহার যাতে ব্রাউজার এবং রেন্ডার ইমপ্লিমেন্টেশনগুলোকে কোনো বেস ক্লাস থেকে ইনহেরিট করতে না হয়।
ডেভলপমেন্ট লক্ষ্য হলো uv সহ Python 3.13, ঐচ্ছিক mise টাস্ক শর্টকাট, প্রি-কমিট হুক, লিন্ট/ফরম্যাটের জন্য ruff, টাইপ চেকিংয়ের জন্য ty এবং কভারেজ সহ pytest — টেস্ট স্যুটটি ৯৫% কভারেজ থ্রেশহোল্ড কার্যকর করে এবং asyncio_mode auto ব্যবহার করে। টেস্ট ফাইলগুলো সোর্স মডিউল স্ট্রাকচারকে প্রতিফলিত করে। প্রজেক্টটি Apache-2.0 লাইসেন্সের অধীনে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.