जैसा कि मुझे अपने जावास्क्रिप्ट स्रोत कोड को कम करने की आवश्यकता है, मैं एक जावास्क्रिप्ट प्रोग्राम ढूंढ रहा हूं जिसका स्वयं कोई जावास्क्रिप्ट कोड छोटा हो।
क्यों जावास्क्रिप्ट मिनीफायर? क्योंकि, मैं वेब सर्वर से क्लाइंट को कुछ यादृच्छिक जावास्क्रिप्ट कोड लिख रहा हूं।
मुझे वेब सर्वर पर "node.js" का उपयोग जावास्क्रिप्ट प्रोग्राम निष्पादित करने के लिए करना चाहिए जो जावास्क्रिप्ट कोड उत्पन्न करता है और इसे फ्लाई पर छोटा करता है और इसे क्लाइंट को भेजता है।
यह जावास्क्रिप्ट प्रोग्राम एक है: एन्क्रिप्शन और डिक्रिप्शन प्रोग्राम। क्लाइंट के लिए जावास्क्रिप्ट कोड परिणाम में एक जावास्क्रिप्ट फ़ंक्शन होना चाहिए जो एक जेसन या एन्क्रिप्टेड डेटा के हेक्साडेसिमल संस्करण के प्रत्येक भाग को डिक्रिप्ट करता है। फ़ंक्शन कुछ प्लस, माइनस और पूर्णांक के गुणा निष्पादित करता है। कभी-कभी, मैं दो अलग-अलग परिचालनों की गणना करने के लिए एक शर्त (यदि, फिर और अन्य) उत्पन्न कर सकता हूं। यह फ़ंक्शन दो या अधिक पैरामीटर इनपुट को डिक्रिप्ट करने के लिए उपयोग किया जाता है।
यह यादृच्छिक कार्य है: प्रत्येक बार जब ग्राहक कुछ निजी डेटा का अनुरोध करता है, तो वेब सर्वर दो अलग-अलग जावास्क्रिप्ट फ़ंक्शंस उत्पन्न करता है: एक एन्क्रिप्शन के लिए और एक दूसरे को डिक्रिप्शन के लिए। डिक्रिप्शन फ़ंक्शन क्लाइंट को भेजा जाता है। एन्क्रिप्शन फ़ंक्शन वेब सर्वर द्वारा एन्क्रिप्ट करने और क्लाइंट को निजी डेटा भेजने के लिए उपयोग किया जाता है। यह obfuscation के लिए एक भावना बना रहा है: हर बार प्रक्रिया चल रही है, हर बार भेजने समारोह पूरी तरह से अलग है।
और, एन्क्रिप्शन/डिक्रिप्शन को मनाने के लिए बहुत सुरक्षित है, मैं क्लाइंट के लिए जोड़ता हूं, दो या अधिक पैरामीटर के एक टैब्यूलर मान रूपांतरण; लेकिन, टैब्यूलर मान वास्तव में वेब सर्वर के लिए लिखे गए फ़ंक्शन द्वारा उत्पन्न किए जाते हैं और इसमें कुछ संख्यात्मक स्थिरांक होते हैं, जो क्लाइंट को कभी भी नहीं भेजते हैं। इस प्रकार, कोई भी जो डिक्रिप्ट करना चाहता है उसे स्थिरांक मूल्य होना चाहिए।
मैं स्पष्ट किया कि प्रक्रिया है क्योंकि:
आप जावास्क्रिप्ट स्रोत कोड में कहानियो के बारे में कुछ बातें लिया जाता है; लेकिन, जावास्क्रिप्ट में obfuscation अभी तक वेब सर्वर और ब्राउज़रों द्वारा लागू नहीं किया गया है ... शायद, यह हो सकता है ... लेकिन, इंटरनेट पर सभी संचरण "एसएसएल-ize" की मदद से किस प्रकार के समाधान उपयोगी हैं।
एन्क्रिप्शन/डिक्रिप्शन फ़ंक्शन के साथ क्रिप्ट और डिक्रिप्ट करना संभव है जिसे पठनीय किया जा सकता है। और, एसएसएल प्रमाण पत्र की लागत के बिना। यहां तक कि, "बीच में एक आदमी" एन्क्रिप्टेड डेटा डिक्रिप्ट करेगा; उसके लिए, उसे सिर्फ जावास्क्रिप्ट फ़ंक्शन निष्पादित करना होगा। ठीक है..लेकिन कल्पना करें कि जावास्क्रिप्ट डिक्रिप्शन फ़ंक्शन भी encypted है ... फिर, "बीच में आदमी" को डिक्रिप्शन फ़ंक्शन निष्पादित करना होगा और फिर एन्क्रिप्टेड सामग्री को डिक्रिप्ट करने के लिए जावास्क्रिप्ट फ़ंक्शन जो डिक्रिप्ट की गई सामग्री को फिर से डिक्रिप्ट करना होगा।
और, कल्पना करता है, तो वेब सर्वर क्लाइंट के लिए एक प्रश्न पूछता और अद्वितीय जवाब (जिसका इंटरनेट के माध्यम से नहीं भेजा गया) ... यह बीच में "करने के लिए आदमी असंभव है ग्राहक के परिणाम गणना द्वारा नियंत्रित किया जाता "जवाब देने के लिए।
मेरा विचार देखें; मैं किसी से टिप्पणी के लिए इंतजार कर रहा हूँ।
आप ** ** फेसबुक और Google दोनों के लिए सभी क्लाइंट कोड देख सकते हैं। यह obfuscated है, जिसका अर्थ यह है कि इसे पढ़ने के लिए * कठिन * है, लेकिन असंभव नहीं है। लेकिन सबसे महत्वपूर्ण बात यह है कि आपने यह नहीं समझाया कि आपका मतलब क्या है "यह मेरे लिए कोई उपयोग नहीं है" *। इन obfuscators के साथ आप क्या वास्तविक समस्या का सामना कर रहे हैं? – Groo
वास्तव में मुझे लगता है कि यह अभी छोटा है। हालांकि यह भी अपवित्रता है, यह इसका मुख्य उद्देश्य नहीं है। – ThiefMaster
@ ग्रूओ: मतलब है कि मैंने अपनी जेएस फ़ाइल obfuscator की कोशिश की लेकिन यह मेरे आवेदन का परीक्षण करने में विफल रहा। यह क्लिक घटना पर कोई भी ऑपरेशन करने वाला नहीं है। क्या आप मुझे बता सकते हैं कि कौन सा obfuscator उपकरण मैं अपने जेएस obfuscate करने के लिए उपयोग करते हैं। – Bhargav