मैं एक जावास्क्रिप्ट एप्लिकेशन बनाना चाहता हूं जो खुला स्रोत नहीं है, और इस प्रकार मैं सीखना चाहता हूं कि मेरे जेएस कोड को कैसे बाधित किया जा सकता है? क्या यह संभव है?
मैं एक जावास्क्रिप्ट एप्लिकेशन बनाना चाहता हूं जो खुला स्रोत नहीं है, और इस प्रकार मैं सीखना चाहता हूं कि मेरे जेएस कोड को कैसे बाधित किया जा सकता है? क्या यह संभव है?
जवाबों:
कहानियो:
YUI कंप्रेसर का प्रयास करें । यह याहू यूआई टीम द्वारा निर्मित, संवर्धित और अनुरक्षित एक बहुत लोकप्रिय उपकरण है।
आप भी उपयोग कर सकते हैं:
अद्यतन: यह प्रश्न मूल रूप से 10 साल पहले पूछा गया था, और YUI अब नहीं रखा गया है। Google क्लोजर कंपाइलर अभी भी उपयोग में है, और UglifyJS नोड पैकेज मैनेजर के माध्यम से स्थानीय रूप से चलाया जा सकता है:npm install -g uglify-js
निजी स्ट्रिंग डेटा:
स्ट्रिंग वैल्यू को निजी रखना एक अलग चिंता का विषय है, और ओफ़्यूसिकेशन वास्तव में बहुत अधिक लाभ नहीं होगा। बेशक, अपने स्रोत को एक विकृत, छोटा गड़बड़ में पैक करके, आपके पास अस्पष्टता के माध्यम से सुरक्षा का एक हल्का संस्करण है । अधिकांश समय, यह आपका उपयोगकर्ता है जो स्रोत को देख रहा है, और क्लाइंट पर स्ट्रिंग मान उनके उपयोग के लिए अभिप्रेत है, ताकि निजी स्ट्रिंग मान की तरह अक्सर आवश्यक न हो।
यदि आपके पास वास्तव में ऐसा मूल्य था जिसे आप कभी नहीं देखना चाहते थे, तो आपके पास कुछ विकल्प होंगे। सबसे पहले, आप कुछ प्रकार के एन्क्रिप्शन कर सकते हैं, जिसे पेज लोड पर डिक्रिप्ट किया गया है। यह शायद सबसे सुरक्षित विकल्पों में से एक होगा, लेकिन यह भी बहुत काम है जो अनावश्यक हो सकता है। आप शायद आधार 64 कुछ स्ट्रिंग मानों को एनकोड कर सकते हैं, और यह आसान होगा .. लेकिन कोई है जो वास्तव में उन स्ट्रिंग मानों को चाहता था आसानी से उन्हें डिकोड कर सकता है । एन्क्रिप्शन वास्तव में किसी को भी आपके डेटा तक पहुंचने से रोकने का एकमात्र तरीका है, और अधिकांश लोग पाते हैं कि उनकी ज़रूरत से ज़्यादा सुरक्षा है।
पक्षीय लेख:
जावास्क्रिप्ट में विरोधाभास कुछ कीड़े पैदा करने के लिए जाना जाता है। ऑबफस्केटर एक छोटे से इसके बारे में बेहतर हो रही है, लेकिन कई संगठनों तय करते हैं कि वे से पर्याप्त लाभ देखा को कम करने और gzipping , कहानियो का जोड़ा बचत हमेशा मुसीबत के लायक नहीं है । यदि आप अपने स्रोत की रक्षा करने की कोशिश कर रहे हैं, तो शायद आप तय करेंगे कि यह आपके समय के लायक है, बस आपके कोड को पढ़ने के लिए कठिन बनाना है। JSMin एक अच्छा विकल्प है।
--preserve-semi
। प्रायवेट वैरिएबल को a, b, c आदि के लिए रिवाइज करना आमतौर पर सुरक्षित होता है। एक और चीज जो मैं करता हूं वह यह है कि कोड में प्रत्येक अर्ध-बृहदान्त्र के बाद मिनीफ़ायर को एक पंक्ति विराम दें --line-break 0
। तब उत्पादन में अगर यह त्रुटि करता है कि मेरे पास काम करने के लिए कम से कम एक वैध संदर्भ रेखा है और वह कोड मेरी विकास प्रति में पा सकते हैं। अन्यथा आप कोड की एक बड़ी लाइन पर एक त्रुटि के साथ समाप्त होते हैं और यह पता नहीं चलता कि त्रुटि कहां है।
मुझे आश्चर्य है कि किसी ने Google के क्लोजर कंपाइलर का उल्लेख नहीं किया है । यह केवल छोटा / संक्षिप्त नहीं करता है, यह अप्रयुक्त कोड को खोजने और निकालने के लिए विश्लेषण करता है, और अधिकतम खनन के लिए फिर से लिखता है। यह टाइप चेकिंग भी कर सकता है और सिंटैक्स त्रुटियों के बारे में चेतावनी देगा।
JQuery ने हाल ही में YUI कंप्रेशर से क्लोजर कंपाइलर में स्विच किया, और " ठोस सुधार " देखा
वास्तव में कभी भी काम नहीं कर सकता। जो कोई भी वास्तव में आपके कोड को प्राप्त करना चाहता है, उसके लिए यह सिर्फ एक गति है। इससे भी बदतर, यह आपके उपयोगकर्ताओं को बग्स को ठीक करने से रोकता है (और आपके द्वारा किए गए सुधारों को वापस भेज देता है), और आपके लिए इस क्षेत्र में समस्याओं का निदान करना कठिन बना देता है। यह आपके समय और पैसे की बर्बादी है।
बौद्धिक संपदा कानून के बारे में एक वकील से बात करें और आपके कानूनी विकल्प क्या हैं। "ओपन सोर्स" का मतलब यह नहीं है कि "लोग स्रोत को पढ़ सकते हैं"। इसके बजाय, ओपन सोर्स एक विशेष लाइसेंसिंग मॉडल है जो आपके कोड को स्वतंत्र रूप से उपयोग करने और संशोधित करने की अनुमति देता है। यदि आप इस तरह का लाइसेंस नहीं देते हैं तो आपके कोड की नकल करने वाले लोग उल्लंघन करते हैं और (दुनिया के अधिकांश में) आपके पास उन्हें रोकने के लिए कानूनी विकल्प हैं।
एकमात्र तरीका जो आप वास्तव में अपने कोड की रक्षा कर सकते हैं, उसे शिप नहीं करना है। महत्वपूर्ण कोड सर्वर-साइड को स्थानांतरित करें और अपने सार्वजनिक जावास्क्रिप्ट कोड को अजाक्स कॉल करें।
आप जावास्क्रिप्ट स्रोत को अपने इच्छित सभी को बाधित कर सकते हैं, लेकिन यह हमेशा रिवर्स-इंजीनियर होगा, केवल सभी स्रोत कोड को वास्तव में क्लाइंट मशीन पर चलाने की आवश्यकता के आधार पर ... सबसे अच्छा विकल्प जो मैं सोच सकता हूं कि सभी प्रसंस्करण किए जा रहे हैं सर्वर-साइड कोड के साथ, और सभी क्लाइंट कोड जावास्क्रिप्ट करता है, सर्वर पर प्रसंस्करण के लिए अनुरोध भेजते हैं। अन्यथा, कोई भी हमेशा उन सभी कार्यों का ट्रैक रखने में सक्षम होगा जो कोड कर रहा है।
किसी ने तार को सुरक्षित रखने के लिए बेस 64 का उल्लेख किया। यह एक भयानक विचार है। Base64 तुरंत उन लोगों के प्रकारों से पहचानने योग्य है जो आपके कोड को रिवर्स इंजीनियर करना चाहते हैं। पहली बात यह है कि वे इसे अनकोड करेंगे और देखेंगे कि यह क्या है।
जावास्क्रिप्ट ओब्फसकेशन टूल की एक संख्या है जो स्वतंत्र रूप से उपलब्ध हैं; हालाँकि, मुझे लगता है कि यह ध्यान रखना महत्वपूर्ण है कि जावास्क्रिप्ट को उस बिंदु तक सीमित करना मुश्किल है जहां यह रिवर्स-इंजीनियर नहीं हो सकता है।
उस अंत तक, कई विकल्प हैं जो मैंने कुछ हद तक ओवरटाइम के लिए उपयोग किए हैं:
YUI कंप्रेसर । याहू! जावास्क्रिप्ट कंप्रेसर कोड को संघनित करने का एक अच्छा काम करता है जो इसके लोड समय में सुधार करेगा। एक छोटे स्तर का ओफ्यूशेशन है जो अपेक्षाकृत अच्छी तरह से काम करता है। अनिवार्य रूप से, कंप्रेसर फ़ंक्शन के नामों को बदल देगा, सफेद स्थान को हटा देगा और स्थानीय चर को संशोधित करेगा। यह वही है जो मैं अक्सर उपयोग करता हूं। यह एक ओपन-सोर्स जावा-आधारित टूल है।
JSMin डगलस क्रॉकफोर्ड द्वारा लिखित एक उपकरण है जो आपके जावास्क्रिप्ट स्रोत को छोटा करने का प्रयास करता है। क्रॉकफोर्ड के स्वयं के शब्दों में, "जेएसएमिन को आक्षेप नहीं है, लेकिन यह बदसूरत करता है।" ब्राउज़रों में तेज़ी से लोड करने के लिए अपने स्रोत के आकार को छोटा करना प्राथमिक लक्ष्य है।
नि: शुल्क जावास्क्रिप्ट Obfuscator । यह एक वेब-आधारित टूल है जो वास्तव में इसे एन्कोड करके आपके कोड को बाधित करने का प्रयास करता है। मुझे लगता है कि एन्कोडिंग के रूप में इसके व्यापार-नापसंद (या आक्षेप) फाइलों की कीमत पर आ सकते हैं; हालाँकि, यह व्यक्तिगत प्राथमिकता का मामला है।
[ZER0O00OIFY, ZER0000OIFY, ZEROO00OIFY, ZEROOO0OIFY]
कम से कम [var1, var2,..]
एक मिनट के भीतर var के एक गुच्छा को ढूंढ / बदल न सके । मैं शाब्दिक रूप से डी-क्रुइलाइज़ कर सकता हूं, फिर से इंडेंट कर सकता हूं, और दो मिनट के भीतर वेर नाम बदल सकता हूं। और नहीं, मैं एक औसत जूनियर देव की तुलना में अधिक चालाक हूं। सरल तथ्य यह है, ग्राहक पक्ष जेएस को अस्पष्ट करने का कोई तरीका नहीं है। आप अपने आप को 5 मिनट, मैक्स खरीद सकते हैं, लेकिन इसका कोई फायदा नहीं है। यह सामान वास्तव में किसी को बेचने के लिए है जो जोड़ा गया "सुरक्षा" पर कोड नहीं जानता है। कोई भी व्यक्ति जिसने कभी JS की लाइन नहीं लिखी है, वह बकवास खरीदेगा।
मुझे क्या करना होगा:
A. हैकर को ट्रोल करो!
यह मेरे नकली / ओफ़्स्कुलेटेड गुप्त जावास्क्रिप्ट कोड LAUNCHER के दूसरे भाग में होगा। जिसे आप सोर्स कोड में देखते हैं।
यह कोड क्या है?
var ajax=function(a,b,d,c,e,f){
e=new FormData();
for(f in d){e.append(f,d[f]);};
c=new XMLHttpRequest();
c.open('POST',a);
c.setRequestHeader("Troll1","lol");
c.onload=b;
c.send(e);
};
window.onload=function(){
ajax('Troll.php',function(){
(new Function(atob(this.response)))()
},{'Troll2':'lol'});
}
B. कोड को थोड़ा कम करें
वो क्या है?
(new Function(atob('dmFyIGFqYXg9ZnVuY3Rpb24oYSxiLGQsYyxlLGYpe2U9bmV3IEZvcm1EYXRhKCk7Zm9yKGYgaW4gZCl7ZS5hcHBlbmQoZixkW2ZdKTt9O2M9bmV3IFhNTEh0dHBSZXF1ZXN0KCk7Yy5vcGVuKCdQT1NUJyxhKTtjLnNldFJlcXVlc3RIZWFkZXIoIlRyb2xsMSIsImxvbCIpO2Mub25sb2FkPWI7Yy5zZW5kKGUpO307d2luZG93Lm9ubG9hZD1mdW5jdGlvbigpe2FqYXgoJ1Ryb2xsLnBocCcsZnVuY3Rpb24oKXsgKG5ldyBGdW5jdGlvbihhdG9iKHRoaXMucmVzcG9uc2UpKSkoKX0seydUcm9sbDInOidsb2wnfSk7fQ==')))()
C वास्तविक कोड के साथ php फ़ाइल को प्रदर्शित करने के लिए एक कठिन बनाएँ
यह php कोड क्या है?
अगर सब कुछ ठीक है तो यह आपको सही कोड दिखाएगा कि नकली कोड या प्रतिबंध आईपी, बंद पृष्ठ .. जो भी हो।
<?php
$t1=apache_request_headers();
if(base64_encode($_SERVER['HTTP_REFERER'])=='aHR0cDovL2hlcmUuaXMvbXkvbGF1bmNoZXIuaHRtbA=='&&$_POST['Troll2']=='lol'&&$t1['Troll1']='lol'){
echo 'ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSkuaW5uZXJUZXh0PSdBd2Vzb21lJzsNCg==';//here is the SECRET javascript code
}else{
echo 'd2luZG93Lm9wZW4oJycsICdfc2VsZicsICcnKTt3aW5kb3cuY2xvc2UoKTs=';
};
?>
बेस 64 रेफ़रर = http://here.is/my/launcher.html
SECRET जावास्क्रिप्ट = document.body.appendChild(document.createElement('div')).innerText='Awesome';
FAKE = window.open('', '_self', '');window.close();
अब .. यदि आप SECRET जावास्क्रिप्ट में ईवेंट हैंडलर परिभाषित करते हैं, तो यह संभवत: सुलभ है। आपको उन्हें लॉन्चकोड और नेस्टेड SECRET फ़ंक्शन की ओर इशारा करते हुए बाहर से परिभाषित करने की आवश्यकता है।
तो ... वहाँ एक आसान तरीका है कोड मिल रहा है?
document.body.appendChild(document.createElement('div')).innerText='Awesome';
मुझे यकीन नहीं है कि अगर यह काम करता है, लेकिन मैं क्रोम और जाँच तत्वों, संसाधन, नेटवर्क, स्रोत, समयरेखा, प्रोफ़ाइल, ऑडिट का उपयोग कर रहा हूं, लेकिन मुझे ऊपर की रेखा नहीं मिली।
नोट 1: यदि आप इंस्पेक्ट एलिमेंट से ट्रोल.एफपी यूआरएल खोलते हैं-> क्रोम में नेटवर्क आपको नकली कोड मिलता है।
नोट 2: पूरा कोड आधुनिक ब्राउज़रों के लिए लिखा गया है। पॉलीफिल को अधिक कोड की आवश्यकता होती है।
संपादित करें
launcher.html
<!doctype html><html><head><meta charset="utf-8"><title></title><script src="data:application/javascript;base64,KG5ldyBGdW5jdGlvbihhdG9iKCdkbUZ5SUdGcVlYZzlablZ1WTNScGIyNG9ZU3hpTEdRc1l5eGxMR1lwZTJVOWJtVjNJRVp2Y20xRVlYUmhLQ2s3Wm05eUtHWWdhVzRnWkNsN1pTNWhjSEJsYm1Rb1ppeGtXMlpkS1R0OU8yTTlibVYzSUZoTlRFaDBkSEJTWlhGMVpYTjBLQ2s3WXk1dmNHVnVLQ2RRVDFOVUp5eGhLVHRqTG5ObGRGSmxjWFZsYzNSSVpXRmtaWElvSWxSeWIyeHNNU0lzSW14dmJDSXBPMk11YjI1c2IyRmtQV0k3WXk1elpXNWtLR1VwTzMwN2QybHVaRzkzTG05dWJHOWhaRDFtZFc1amRHbHZiaWdwZTJGcVlYZ29KMVJ5YjJ4c0xuQm9jQ2NzWm5WdVkzUnBiMjRvS1hzZ0tHNWxkeUJHZFc1amRHbHZiaWhoZEc5aUtIUm9hWE11Y21WemNHOXVjMlVwS1Nrb0tYMHNleWRVY205c2JESW5PaWRzYjJ3bmZTazdmUT09JykpKSgp"></script></head><body></body></html>
Troll.php
<?php $t1=apache_request_headers();if(/*base64_encode($_SERVER['HTTP_REFERER'])=='PUT THE LAUNCHER REFERER HERE'&&*/$_POST['Troll2']=='lol'&&$t1['Troll1']='lol'){echo 'ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSkuaW5uZXJUZXh0PSdBd2Vzb21lJzsNCg==';}else{echo 'd2luZG93Lm9wZW4oJycsICdfc2VsZicsICcnKTt3aW5kb3cuY2xvc2UoKTs=';}; ?>
JScrambler का प्रयास करें । मैंने इसे हाल ही में एक स्पिन दिया और इससे प्रभावित हुआ। यह उन लोगों के लिए पूर्वनिर्धारित सेटिंग्स के साथ गतिरोध के लिए टेम्पलेट्स का एक सेट प्रदान करता है जो विवरणों के बारे में ज्यादा परवाह नहीं करते हैं और बस इसे जल्दी से प्राप्त करना चाहते हैं। आप जो भी ट्रांसफ़ॉर्मेशन / तकनीक चाहते हैं, उसे चुनकर आप कस्टम ऑब्फ़ेकशन भी बना सकते हैं।
व्याख्या की गई भाषाओं के साथ समस्या यह है कि आप उन्हें काम करने के लिए स्रोत भेजते हैं (जब तक कि आपके पास बायटेकोड के लिए कंपाइलर नहीं है, लेकिन फिर से, यह विघटित करने के लिए काफी तुच्छ है)।
इसलिए, यदि आप प्रदर्शन का त्याग नहीं करना चाहते हैं, तो आप केवल चर और फ़ंक्शन नामों पर कार्य कर सकते हैं, उदा। उन्हें ए, बी ... ए, ए ... या ए १०, १०२, १०२ इत्यादि के साथ प्रतिस्थापित करना और, ज़ाहिर है, जितना संभव हो उतना स्थान / नईलाइन्स निकालें (जो कि तथाकथित जेएस कम्प्रेसर करते हैं)।
यदि आप को उन्हें एन्क्रिप्ट करना है और वास्तविक समय में डिक्रिप्ट करना है, तो आवर्ती स्ट्रिंग्स में एक प्रदर्शन हिट होगा। प्लस एक जेएस डिबगर अंतिम मूल्यों को दिखा सकता है ...
अधिकांश अन्य उत्तरों के विपरीत, जो मैं YUI कंप्रेसर के खिलाफ सुझाता हूं; आपको Google बंद का उपयोग करना चाहिए ।
ज्यादा नहीं क्योंकि यह अधिक संपीड़ित करता है, लेकिन ज्यादातर इसलिए कि यह जावास्क्रिप्ट त्रुटियों को पकड़ लेगा जैसे कि a = [1,2,3,];
IE जाना हैयरवायर।
एक गैर-ओपन-सोर्स जावास्क्रिप्ट-आधारित एप्लिकेशन काफी मूर्खतापूर्ण है। जावास्क्रिप्ट एक क्लाइंट-साइड व्याख्या की गई भाषा है .. ओफ़्यूसकेशन बहुत संरक्षण नहीं है ..
JS obfuscation आमतौर पर स्क्रिप्ट के आकार को कम करने के लिए किया जाता है, बजाय इसे "सुरक्षित" करने के। यदि आप ऐसी स्थिति में हैं जहाँ आप नहीं चाहते कि आपका कोड सार्वजनिक हो, तो जावास्क्रिप्ट सही भाषा नहीं है।
चारों ओर बहुत सारे उपकरण हैं, लेकिन अधिकांश में एक कारण के लिए "कंप्रेसर" (या "मिनिफायर") शब्द है।
आप क्लाइंट साइड कोड को सुरक्षित नहीं कर सकते हैं: Google क्रोम पर बस F12 दबाएं, जावास्क्रिप्ट निष्पादन को रोकें और आपको सभी स्ट्रिंग, यहां तक कि एन्क्रिप्ट किए गए भी मिलेंगे। इसे सुशोभित करें और चर नाम बदलें और आपको लगभग मूल कोड मिलेगा।
यदि आप सर्वर साइड जावास्क्रिप्ट (यानी NodeJS) लिख रहे हैं, तो आपके सर्वर में किसी को हैक होने का डर है और हैकर को और अधिक कठिन बनाना चाहते हैं, जिससे आपको अपनी पहुंच वापस पाने के लिए अधिक समय मिल सके, फिर javacript compilers का उपयोग करें :
आपको उन्नत संकलन पर क्लोजर कंपाइलर का उपयोग करने की आवश्यकता है, क्योंकि यह एकमात्र उपकरण है जो आपके सभी चर का नाम बदल देता है, भले ही उन का उपयोग कई फ़ाइलों / मॉड्यूल में किया गया हो। लेकिन यह सिर्फ एक समस्या है: यह केवल काम करता है यदि आप इसे कोडिंग शैली में लिखते हैं ।
मैं पैट्रिक जे। ओ'नील द्वारा जावास्क्रिप्ट उपयोगिता की सिफारिश कर सकता हूं । यह / कॉम्पैक्ट और संकुचित कर सकते हैं और यह इन पर बहुत अच्छा लगता है। उस ने कहा, मैंने इसे किसी भी तरह की स्क्रिप्ट में एकीकृत करने की कोशिश नहीं की।
बनाम बनाम छोटा करने के लिए - मैं पूर्व का बहुत बड़ा प्रशंसक नहीं हूं। यह डिबगिंग को असंभव बनाता है (त्रुटि 1 पंक्ति पर ... "प्रतीक्षा करें, केवल एक पंक्ति है") और वे हमेशा अनपैक करने के लिए समय लेते हैं। लेकिन अगर आप की जरूरत है ... अच्छी तरह से।
मैं पहले YUI कंप्रेसर की तरह कुछ के साथ minify करने का सुझाव दूंगा, और फिर http://www.javascriptobfuscator.com/ जैसी किसी चीज का उपयोग करके सभी स्ट्रिंग और संख्याओं को HEX मानों में बदल दूंगा ।
इसके साथ, कोड को समझने के लिए असंभव के करीब प्रस्तुत किया जाएगा और मुझे लगता है कि इस स्तर पर हैकर को अपने कोड को फिर से लागू करने में अधिक समय लगेगा यदि वह खरोंच से फिर से लिखा गया था। पुनर्लेखन और क्लोनिंग वही है जो आप वास्तव में रोक नहीं सकते। आखिर हम लोग आज़ाद हैं!
डीन एडवर्ड का पैकर एक उत्कृष्ट पर्यवेक्षक है, हालांकि यह मुख्य रूप से कोड को बाधित करता है, न कि आपके द्वारा अपने कोड के किसी भी स्ट्रिंग तत्वों को।
देख: ऑनलाइन जावास्क्रिप्ट कम्प्रेशन टूल और ड्रॉपडाउन से पैकर (डीन एडवर्ड्स) का चयन करें
इस उपकरण का प्रयास करें जावास्क्रिप्ट ऑबफ्यूज़ेटर
मैंने इसे अपने एचटीएमएल 5 गेम पर इस्तेमाल किया, इसने न केवल इसका आकार 950KB से घटाकर 150 कर दिया, बल्कि सोर्स कोड को अपठनीय क्लोजर कंपाइलर भी बना दिया और मिनिफायर्स उल्टा हो गया है।
मैं सालों से जसोब का उपयोग कर रहा हूं और यह सबसे अच्छा ऑबफ्यूजेटर है।
इसमें एक उन्नत यूआई है लेकिन अभी भी सहज और उपयोग में आसान है।
यह HTML और CSS फाइलों को भी हैंडल करेगा।
इसका उपयोग करने का सबसे अच्छा तरीका अपने सभी निजी चर को अंडरस्कोर जैसी किसी चीज़ के साथ उपसर्ग करना है , फिर sort
उन सभी को एक साथ व्यवस्थित करने और जाँचने के लिए सुविधा का उपयोग करें उन्हें बंद कहानियो के लिए लक्ष्य के रूप में।
उपयोगकर्ता अभी भी आपके स्रोत को देख सकते हैं, लेकिन जब आपके निजी चर को किसी चीज़ से परिवर्तित किया जाता है, तो इसे समझना अधिक कठिन होता _sUserPreferredNickName
है a
।
इंजन स्वचालित रूप से लक्षित चर की संख्या को टैली करेगा और अधिकतम संपीड़न प्राप्त करने के लिए उन्हें प्राथमिकता देगा।
मैं जसोब के लिए काम नहीं करता हूं और मुझे उन्हें बढ़ावा देने के लिए कुछ भी नहीं मिलता है, बस कुछ दोस्ताना सलाह दे रहा हूं।
नकारात्मक पक्ष यह है कि यह मुफ़्त नहीं है और थोड़ा महंगा है, लेकिन अभी भी इसके लायक है जब विकल्पों के खिलाफ ढेर किया जाता है - 'मुक्त' विकल्प भी करीब नहीं आते हैं।
क्या आपने केले की कोशिश की है ? यह अत्यधिक संपीड़ित और पूरी तरह से अपठनीय कोड का उत्पादन करता है।
eval()
अंतिम पंक्ति में बदलकर console.log()
आपके कंसोल को पूरी चीज से बाहर निकाल देगा
मैं java-script के लिए क्लोज़-कंपाइलर उपयोगिता का उपयोग कर रहा हूँ। यह कोड को छोटा करता है और इसमें अधिक विकल्प हैं। यह उपयोगिता Google कोड पर URL: क्लोजर टूल्स के नीचे उपलब्ध है
लेकिन अब एक दिन मैं UglifyJS के बारे में बहुत कुछ सुन रहा हूं। आप क्लोजर कंपाइलर और UglifyJS के बीच विभिन्न तुलना पा सकते हैं जिसमें Uglify एक विजेता लगता है।
UglifyJS: Node.js के लिए एक फास्ट न्यू जावास्क्रिप्ट कंप्रेसर बंद होने के साथ बराबर है
जल्द ही मैं UglifyJS को मौका दूंगा।
एक जावास्क्रिप्ट / HTML / CSS obfuscator / कंप्रेसर के रूप में आप पातु डिगुआ भी आजमा सकते हैं ।
यह एक छोटा करता है लेकिन इसमें कोई बाधा नहीं है। यदि आप कमांड लाइन जावा का उपयोग नहीं करना चाहते हैं तो आप अपनी जावास्क्रिप्ट को वेबफॉर्म में पेस्ट कर सकते हैं।
आपको निश्चित रूप से Obfuscriptor पर एक नज़र डालने पर विचार करना चाहिए ।
मैं विशिष्ट जावास्क्रिप्ट से परे चला जाता हूं, जो कि हमने अन्य उपकरणों जैसे YUI कंप्रेसर या Google क्लोजर से देखा है ।
बाधित कोड अधिक एन्क्रिप्टेड जैसा दिखता है। इससे पहले कि मैं कुछ भी देखा है के विपरीत।
यदि आप एक जावास्क्रिप्ट लाइब्रेरी का उपयोग करते हैं, तो Dojo टूलकिट पर विचार करें जो क्लोजर कंपाइलर के उन्नत मोड संकलन के साथ संगत (मामूली संशोधनों के बाद) है।
Dojo - केवल जावास्क्रिप्ट लाइब्रेरी क्लोजर कंपाइलर के साथ संगत है
क्लोजर एडवांस्ड मोड के साथ संकलित कोड रिवर्स-इंजीनियर के लिए लगभग असंभव है, यहां तक कि एक ब्यूटिफायर के माध्यम से गुजर रहा है, क्योंकि पूरे कोड बेस (लाइब्रेरी शामिल है) को बाधित किया गया है। यह औसतन 25% छोटा भी है।
जावास्क्रिप्ट कोड जो कि केवल छोटा है (YUI कंप्रेसर, Uglify इत्यादि) एक ब्यूटिफायर से गुजरने के बाद रिवर्स-इंजीनियर के लिए आसान है।
मैंने अतीत में इसका उपयोग किया है, और यह एक अच्छा काम करता है। यह मुफ़्त नहीं है, लेकिन आपको निश्चित रूप से एक नज़र रखना चाहिए।
जावास्क्रिप्ट Obfuscator और एनकोडर