
अनुकूलन या बौद्धिक संपदा संरक्षण उद्देश्यों के लिए एक शक्तिशाली वेबसाइट कंपाइलर/ओबफस्केटर।

WebSafeCompiler (WSC) एक उन्नत उपयोगिता (वेबसाइट कंपाइलर) है जिसे Node.js का उपयोग करके वेब एप्लिकेशन और वेबसाइटों के अनुकूलन, मिनिफिकेशन और ऑब्फस्केशन (यदि आपको इसकी आवश्यकता हो) के लिए डिज़ाइन किया गया है। यह फ़ाइल आकार को कम करके या रिवर्स इंजीनियरिंग के विरुद्ध टिकाऊ सुरक्षा प्रदान करके आपकी वेब संपत्तियों को बेहतर बनाता है, यह सुनिश्चित करते हुए कि आपका कोड डिप्लॉयमेंट-तैयार और सुरक्षित है।
[!NOTE]
*.github.io साइटों के लिए उपयुक्त
कंपाइलर मोनोलिथिक है: सभी कार्यान्वयन source/wsc.js में स्थित है। रिग्रेशन टेस्ट अलग से tests/ में स्थित हैं।
WebSafeCompiler की पूरी क्षमता का लाभ उठाने के लिए, अपने टर्मिनल में निम्नलिखित कमांड निष्पादित करें:
node wsc.js <input_dir> <output_dir> [--map] [--smart] [--drm]
<input_dir>: स्रोत फ़ाइलों वाली निर्देशिका जिन्हें संसाधित किया जाना है।<output_dir>: वह निर्देशिका जहाँ अनुकूलित और अस्पष्ट की गई फ़ाइलें आउटपुट की जाएँगी।-m, --map: बेहतर SEO के लिए आउटपुट निर्देशिका में एक sitemap.xml बनाता है-s, --smart: स्वचालित रूप से मिनिफ़ाइड फ़ाइलों का पता लगाता है और उन्हें छोड़ देता है। इसमें JS और CSS फ़ाइलें शामिल हैं।-d, --drm: अनधिकृत विश्लेषण के विरुद्ध आपके स्रोत कोड को सुरक्षित करने के लिए कोड अस्पष्टीकरण (DRM सुरक्षा) सक्षम करता है।
class, id, और title मानों को एन्कोड करता है। मौजूदा क्लास नाम और एट्रिब्यूट बनाए रखे जाते हैं। पता लगाई गई सेलेक्टर और DOM-निरीक्षण निर्भरताएँ कंसोल चेतावनी के साथ शोर को सीमित करती हैं।-h, --help: विस्तृत उपयोग निर्देशों के साथ सहायता संदेश प्रदर्शित करता है।-v, --version: WebSafeCompiler का वर्तमान संस्करण आउटपुट करता है।node wsc.js "/path/to/source" "/path/to/output" --drm --smart
यह कमांड निर्दिष्ट स्रोत निर्देशिका के भीतर सभी फ़ाइलों को संसाधित करेगा, उन्हें अनुकूलित करेगा, और यदि obfuscation फ़्लैग सक्षम है, तो कोड को अनधिकृत पहुँच या छेड़छाड़ से सुरक्षित करेगा। आउटपुट फ़ाइलें आपके वेब वातावरण में तैनाती के लिए तैयार होंगी।

WebSafeCompiler JavaScript कोड के साथ काम करने के लिए निम्नलिखित लाइब्रेरीज़ का उपयोग करता है:
WebSafeCompiler के साथ शुरुआत करने के लिए, आपके सिस्टम पर Node.js इंस्टॉल होना आवश्यक है। आवश्यक पैकेज इंस्टॉल करने के लिए इन चरणों का पालन करें:
Node.js इंस्टॉल करें: Node.js की आधिकारिक वेबसाइट से Node.js डाउनलोड और इंस्टॉल करें। अपने ऑपरेटिंग सिस्टम के लिए इंस्टॉलेशन निर्देशों का पालन करें।
रिपॉज़िटरी क्लोन करें: यदि आपने पहले से नहीं किया है, तो रिपॉज़िटरी को अपनी लोकल मशीन पर क्लोन करें:
git clone <repository-url>
cd <repository-directory>/source
डिपेंडेंसीज़ इंस्टॉल करें: प्रोजेक्ट निर्देशिका पर जाएँ और आवश्यक npm पैकेज इंस्टॉल करें:
npm install
हो गया! आप WSC का उपयोग कर सकते हैं।
WSC HTML टैग/एट्रिब्यूट स्पेसिंग को मिनिफाई करता है और सामान्य HTML टिप्पणियों को हटाता है, जबकि quoted values, text whitespace, raw script/style bodies, conditional comments, और framework markers को संरक्षित रखता है। पता चलने पर source/comment inspection एक चेतावनी के साथ उन markup संपादनों को अक्षम कर देता है। JavaScript public globals और function names को बनाए रखते हुए local-name mangling और पाँच compression passes का उपयोग करता है। DRM base64 encoding के साथ control-flow flattening, dead-code injection, और पूर्ण string-array coverage बनाए रखता है। CSS को parse और minify किया जाता है; असमर्थित JS और parser warnings वाले CSS को चेतावनी के साथ अपरिवर्तित रखा जाता है। Non-UTF-8 assets को बिना रूपांतरण के कॉपी किया जाता है। Local SRI assets को HTML से पहले संसाधित किया जाता है, फिर script, stylesheet, preload और template references में अंतिम bytes से SHA-256/384/512 metadata की पुनर्गणना की जाती है। सुलभ CSP policies में मेल खाते external-script hashes भी अपडेट किए जाते हैं। Shared assets को अपरिवर्तित रखा जाता है, DRM चेतावनी के साथ, यदि किसी संदर्भित पृष्ठ में CSP अनुपलब्ध है या उसे UTF-8 के रूप में सुरक्षित रूप से फिर से लिखा नहीं जा सकता। अमान्य SRI metadata अवरुद्ध रहता है; बाहरी रूप से होस्ट किए गए assets को फिर से नहीं लिखा जाता।
DRM मौजूदा class attributes में random classes और पात्र सामान्य HTML टैग के प्रत्येक वास्तविक attribute के आसपास दो random inert attributes जोड़ता है। Random names की जाँच HTML, CSS, और JS source text के विरुद्ध की जाती है। Class equality/substring selectors प्रभावित class values को संरक्षित करते हैं; AST विश्लेषण class/attribute निरीक्षण को स्थिर रूप से पहचाने गए elements, immutable aliases और observer subtrees तक सीमित करता है, प्रत्येक पृष्ठ और उसकी स्थानीय JS/CSS dependencies का उपयोग करते हुए। असंबंधित elements को अभी भी noise मिलता है। Unknown receivers, runtime selectors, destructuring और unresolved observers एक रूढ़िवादी fallback का उपयोग करते हैं और चेतावनियाँ प्रिंट करते हैं। Script/style/meta/noscript tags, custom elements, और foreign SVG/MathML nodes को junk attributes नहीं मिलते। ये guards ज्ञात dependencies को कवर करते हैं; गतिशील रूप से गणना किए गए selectors या reflection को हमेशा स्थिर रूप से अनुमानित नहीं किया जा सकता।
DRM मोड में, WSC स्वचालित रूप से पात्र इनलाइन JavaScript को obfuscated wsc-inline-*.js फ़ाइलों में प्रत्येक HTML दस्तावेज़ के बगल में निकालता है जब एक समर्थित CSP कॉन्फ़िगरेशन लागू होता है: रूट _headers, रूट vercel.json (headers नियम), या एक HTML CSP meta टैग। यह आउटपुट पॉलिसी में script-src-elem में 'self' जोड़ता है, अन्य स्रोत अनुमतियों, इवेंट हैंडलर के लिए script-src नियमों, और असंबंधित निर्देशों को संरक्षित करता है। यह जानबूझकर स्क्रिप्ट अनुमतियों को same-origin फ़ाइलों तक विस्तृत करता है। उत्सर्जित JavaScript और हेडर कॉन्फ़िगरेशन को HTML के साथ तैनात करें। Nonces अपरिवर्तित रहते हैं; उत्पन्न फ़ाइलों में SRI hashes शामिल होते हैं। Literal routes और * wildcards समर्थित हैं।
उत्पन्न स्क्रिप्ट टैग अपनी मूल स्थितियों पर रहते हैं। Classic scripts parser-blocking बने रहते हैं; src जोड़ते समय अनदेखे किए गए इनलाइन async/defer विशेषताओं को हटा दिया जाता है। Modules अपनी विशेषताएँ बनाए रखते हैं, और सापेक्ष import resolution को संरक्षित करने के लिए फ़ाइलें दस्तावेज़ के बगल में उत्सर्जित की जाती हैं। Import maps, data scripts, styles, और event handlers इनलाइन रहते हैं।