इस प्रोजेक्ट के बारे में

web-core Python के लिए एक साझा वेब इंफ्रास्ट्रक्चर पैकेज है, जिसे wet-mcp MCP सर्वर और अन्य डाउनस्ट्रीम एप्लिकेशन को संचालित करने वाला बताया गया है। यह एक टाइप्ड पब्लिक API के पीछे कई वेब-फेसिंग क्षमताओं को बंडल करता है, और README में उल्लेख है कि साइट-विशिष्ट सिलेक्टर्स जानबूझकर कंज्यूमर एप्लिकेशन के लिए छोड़े गए हैं — पैकेज स्वयं केवल जेनेरिक इंफ्रास्ट्रक्चर प्रदान करता है, जिसमें प्रति-डोमेन कुकीज़ और सिलेक्टर्स एनवायरनमेंट वेरिएबल्स के माध्यम से दिए जाते हैं। README में सूचीबद्ध क्षमताएं: - SearXNG search: एक क्रॉस-प्रोसेस सिंगलटन रनर (फाइल-लॉक आधारित, जो सभी Python प्रोसेस में एक इंस्टेंस सुनिश्चित करता है) और एक क्लाइंट जो रिट्राय, रिजल्ट डिडुप्लीकेशन और डोमेन फ़िल्टरिंग करता है। - Multi-strategy scraping: एक LangGraph स्टेट-मशीन एजेंट जो स्ट्रेटजीज़ के बीच एस्केलेट करता है। शिप किए गए स्ट्रेटजी मॉड्यूल में API-डायरेक्ट फेचिंग, बेसिक HTTP, curl-cffi के माध्यम से TLS फिंगरप्रिंट स्पूफिंग, Crawl4AI के माध्यम से हेडलेस रेंडरिंग, Patchright स्टील्थ-ब्राउज़र रेंडरिंग, RenderClient के माध्यम से रिमोट रेंडरिंग, और CapSolver-आधारित CAPTCHA स्ट्रेटजी शामिल हैं। स्ट्रेटजीज़ को कैश-अनुशंसित क्रम में प्रयास किया जाता है, रिस्पॉन्स को वैलिडेट किया जाता है, और विफलताएं स्वचालित रूप से एस्केलेट होती हैं — जिसमें अंडर-रेंडर्ड JavaScript शेल्स को रेंडर बैकएंड पर भेजा जाता है। एक StrategyCache प्रति-डोमेन प्रदर्शन को ट्रैक करता है। - SSRF-safe HTTP client: एक DNS-पिन किया हुआ httpx क्लाइंट, URL नॉर्मलाइजेशन, ट्रैकिंग-पैरामीटर स्ट्रिपिंग और डोमेन वैलिडेशन हेल्पर्स। सभी आउटबाउंड HTTP को DNS रीबाइंडिंग से बचाने के लिए safe_httpx_client के माध्यम से जाने के लिए डिज़ाइन किया गया है। - Browsers and remote rendering: एक BrowserProvider प्रोटोकॉल और एक Patchright (undetected Playwright) प्रोवाइडर, सेल्फ-होस्टेड /content एंडपॉइंट्स के लिए एक BrowserlessClient, और एक Cloudflare Browser Rendering क्लाइंट, जिसका उद्देश्य उन स्लिम कंटेनर्स हैं जो JavaScript रेंडरिंग को ऑफलोड करते हैं। - robots.txt compliance: फेच करने से पहले प्रति-डोमेन कैश किया गया चेक। - LLM selector inference (वैकल्पिक): जब बिल्ट-इन सिलेक्टर्स विफल हो जाते हैं, तो मौजूद API की (Google Gemini, OpenAI, Anthropic, xAI) के आधार पर एक प्रोवाइडर को ऑटो-डिटेक्ट किया जा सकता है; यदि कोई की सेट नहीं है, तो इन्फरेंस को चुपचाप छोड़ दिया जाता है। एक कस्टम llm_caller को भी इंजेक्ट किया जा सकता है। Gemini को प्रोजेक्ट/लोकेशन वेरिएबल्स के माध्यम से Vertex AI के जरिए रूट किया जा सकता है। - External API adapters: Google Drive फोल्डर/फाइल फेचिंग और MangaDex (मंगा, चैप्टर्स, इमेजेस) के लिए टाइप्ड, SSRF-सुरक्षित क्लाइंट्स। इंस्टॉलेशन PyPI से n24q02m-web-core (uv add) के रूप में है, जिसमें v2.x स्टेबल लाइन है। कॉन्फ़िगरेशन पूरी तरह से एनवायरनमेंट-वेरिएबल संचालित है और हर वेरिएबल वैकल्पिक है — किसी एक को छोड़ने से वह फीचर डिसेबल हो जाता है जिसे वह नियंत्रित करता है, और पैकेज को इम्पोर्ट या उपयोग करने के लिए किसी वेरिएबल की आवश्यकता नहीं है। डॉक्यूमेंटेड वेरिएबल्स में SearXNG URL और रन यूजर, स्क्रैपिंग के लिए प्रति-डोमेन कुकीज़ (JSON), और सेलेक्टर इन्फरेंस के लिए LLM प्रोवाइडर कीज़ और मॉडल ओवरराइड शामिल हैं। रिमोट रेंडर क्रेडेंशियल्स को कंस्ट्रक्टर आर्गुमेंट्स के रूप में पास किया जाता है। आर्किटेक्चर src/web_core के तहत लेयर्ड मॉड्यूल के साथ व्यवस्थित है: http (SSRF-सुरक्षित प्रिमिटिव्स, URL यूटिलिटीज), search (क्लाइंट, मॉडल्स, रनर), scraper (एजेंट, बेस स्ट्रेटजी, कैश, रोबॉट्स, सेलेक्टर इन्फरेंस, स्टेट, utils, और स्ट्रेटजीज़ सबपैकेज), browsers (प्रोटोकॉल, patchright, browserless, cf_rendering) और adapters (google_drive, mangadex)। पैकेज PEP 561 टाइपिंग के लिए py.typed मार्कर शिप करता है। हाइलाइट किए गए डिज़ाइन निर्णयों में SSRF सुरक्षा के लिए DNS पिनिंग, ऑटोमैटिक स्ट्रेटजी एस्केलेशन, क्रॉस-प्रोसेस SearXNG सिंगलटन, और प्रोटोकॉल-आधारित स्ट्रक्चरल टाइपिंग का उपयोग शामिल है ताकि ब्राउज़र और रेंडर इम्प्लीमेंटेशन को बेस क्लास से इनहेरिट करने की आवश्यकता न हो। डेवलपमेंट uv के साथ Python 3.13 को टारगेट करता है, जिसमें वैकल्पिक mise टास्क शॉर्टकट्स, प्री-कमिट हुक्स, लिंट/फॉर्मेट के लिए ruff, टाइप चेकिंग के लिए ty और कवरेज के साथ pytest शामिल हैं — टेस्ट सूट 95% कवरेज थ्रेशोल्ड लागू करता है और asyncio_mode auto का उपयोग करता है। टेस्ट फाइलें सोर्स मॉड्यूल स्ट्रक्चर को मिरर करती हैं। प्रोजेक्ट Apache-2.0 के तहत लाइसेंस प्राप्त है।