Sto cercando di utilizzare un obfuscator javascript. Quali sono alcuni dei più popolari e quale impatto hanno sulle prestazioni?Qual è il miglior objugatore di javascript?
risposta
Yahoo ha uno piuttosto buono. Tecnicamente è un minificatore, ma fa un buon lavoro di offuscare nel processo.
Compresso e offuscato tramite Compressore YUI online gratuitamente qui: http://refresh-sf.com/yui/ – NexusRex
il collegamento non funziona più –
Ebbene, Google ha portato a questo come il primo anello:
http://www.javascriptobfuscator.com
ma mi chiedo a cosa offuscamento di javascript fa. Qualunque cosa tu stia facendo in javascript che ha bisogno di confusione dovrebbe probabilmente essere fatta dal lato server, giusto?
Di tutto ciò che ho visto, questo è forse il miglior obfuscator. Anche se non ho provato JScrambler. – AStackOverflowUser
non ho mai usato Obfuscator in produzione, ma ho provato JavaScript Utility e sembra piuttosto buona.
Per quanto riguarda le prestazioni, il codice offuscato deve essere decompresso al volo ogni volta che viene caricata la pagina. Potrebbe non essere un problema per i piccoli script, ma il tempo di decompressione sarà significativo con i file più grandi. D'altra parte, il codice minificato è direttamente eseguibile dal browser.
Alcuni offuscatori possono produrre output che non funzionano nei browser più vecchi o meno comuni. Dovresti testare molto attentamente con i browser che intendi supportare.
Gli Obfuscator non richiedono il disimballaggio del codice. Altri schemi per minimizzare il codice potrebbero richiedere questo, ma l'obsolescenza di per sé non lo richiede. –
Sono d'accordo sul fatto che mi sono confuso e imballato qui. L'imballaggio è un approccio comune per offuscare JS, ma il suo scopo principale è quello di ridurre la dimensione del file di script. –
Si potrebbe anche provare il JavaScript Compressor scritto da Dean Edwards.
Devo dire che Hackvertor (disclaimer che l'ho scritto) è gratuito e supporta la conversione basata su tag. Controlla l'esempio: -
Qualcuno sa come usare questo?Non riesco a capirlo. – Noitidart
Testato 8 obfuscators differenti (ad eccezione www.javascriptobfuscator.com), e sono rimasto stupito da quanto tutti schifo. Finito per scrivere il mio stesso offuscatore usando le espressioni regolari. Godetevi:
static Dictionary<string, string> names = new Dictionary<string, string>();
static bool testing = false;
static string[] files1 =
@"a.js,b.js,c.js"
.Split(new string[] { Environment.NewLine, " ", "\t", "," }, StringSplitOptions.RemoveEmptyEntries);
static string[] ignore_names =
@"sin,cos,order,min,max,join,round,pow,abs,PI,floor,random,index,http,
__defineGetter__,__defineSetter__,indexOf,isPrototypeOf,length,clone,toString,split,clear,erase
RECT,SIZE,Vect,VectInt,vectint,vect,int,double,canvasElement,text1,text2,text3,textSizeTester,target,Number
number,TimeStep,images,solid,white,default,cursive,fantasy,".
Split(new string[] { Environment.NewLine, " ", "\t", "," }, StringSplitOptions.RemoveEmptyEntries);
string[] extra_names = @"a,b,c".Split(new string[] { Environment.NewLine, " ", "\t", "," }, StringSplitOptions.RemoveEmptyEntries);
string src = @"C:\temp";
string dest1 = src + "\\all1.js";
string dest2 = src + "\\all2.js";
static void Main()
{
File.Delete(dest1);
File.Delete(dest2);
foreach (string s in files1)
File.AppendAllText(dest1, File.ReadAllText(src + "\\" + s) + Environment.NewLine + Environment.NewLine + Environment.NewLine + Environment.NewLine + Environment.NewLine + Environment.NewLine, Encoding.UTF8);
string all = File.ReadAllText(dest1);
int free_index = 0;
foreach (string s in extra_names)
{
free_index++;
string free_name = "" + (char)('A' + (free_index % 25)) + (char)('A' + ((free_index/25) % 25));
Debug.Assert(free_name != "AA");
names.Add(s, free_name);
}
Regex reg1 = new Regex("(var |function |\\.prototype\\.)([a-zA-Z0-9_]+)");
int startat = 0;
while (startat < all.Length)
{
Match match = reg1.Match(all, startat);
if (!match.Success)
break;
string key = all.Substring(match.Groups[2].Index, match.Groups[2].Length);
if (!ignore_names.Contains(key))
{
free_index++;
string free_name = "" + (char)('A' + (free_index % 25)) + (char)('A' + ((free_index/25) % 25));
Debug.Assert(free_name != "AA");
if (!names.ContainsKey(key))
names.Add(key, testing ? key + free_name : free_name);
}
startat = match.Groups[0].Index + match.Groups[0].Length;
}
Regex reg2 = new Regex(@"/\*.*\*/", RegexOptions.Multiline);
Regex reg3 = new Regex("([^:\\\\])//.*\r\n");
Regex reg4 = new Regex("([a-zA-Z0-9_]+)");
Regex reg5 = new Regex("(\r\n)*[ \t]+");
Regex reg6 = new Regex("(\r\n)+");
all = reg2.Replace(all, eval2);
all = reg3.Replace(all, eval3);
all = reg4.Replace(all, eval4);
all = reg5.Replace(all, eval5);
all = reg6.Replace(all, eval6);
File.WriteAllText(dest2, all);
}
public static string eval4(Match match)
{
return names.ContainsKey(match.Groups[1].Value) ? names[match.Groups[1].Value] : match.Groups[0].Value;
}
public static string eval5(Match match)
{
return string.IsNullOrEmpty(match.Groups[1].Value) ? " " : Environment.NewLine;
}
public static string eval6(Match match)
{
return Environment.NewLine;
}
public static string eval2(Match match)
{
return " ";
}
public static string eval3(Match match)
{
return match.Groups[1].Value + Environment.NewLine;
}
Perché "fanno tutti schifo"? Quale problema risolve il tuo codice? – frenchie
@frenchie Bene, per prima cosa, incolla il javascript offuscato generato con quegli offuscatori "sucky" nell'abilitazione per JavaScript nell'http: //jsbeautifier.org/ e guardalo subito non-offuscato. – trusktr
@AareP, puoi fornire alcune trasformazioni di esempio? – trusktr
Packer con base62
http://dean.edwards.name/packer/
https://github.com/jcoglan/packr < = rubino versione
Prova a incollare il codice offuscato generato con questo in http://jsbeautifier.org/ e vederlo riscritto come l'originale. – trusktr
- 1. Qual è il miglior blog di XNA?
- 2. Qual è il miglior modulo Drupal Survey
- 3. Qual è il miglior editor XLIFF gratuito?
- 4. Qual è il miglior editor python?
- 5. Qual è il miglior motore 3D Actionscript3?
- 6. Qual è il miglior editor per AutoHotkey?
- 7. ifelse annidato() è il peggiore; Qual è il miglior?
- 8. Miglior controllo JavaScript JavaScript
- 9. Qual è il miglior gestore di newsletter PHP aperto?
- 10. Qual è il miglior analizzatore di registri Postfix?
- 11. Qual è il miglior tutorial per l'apprendimento di Mongoid?
- 12. Qual è il miglior visual designer di Apache Camel?
- 13. qual è il miglior linguaggio di programmazione per l'elaborazione video?
- 14. Qual è il miglior linguaggio di raschiatura dello schermo?
- 15. Qual è il miglior libro di bioinformatica per un informatico?
- 16. Qual è il miglior metodo di derivazione in Python?
- 17. Qual è il miglior eBook per un principiante di Hibernate?
- 18. Qual è attualmente il miglior sistema di build
- 19. Qual è il miglior offuscatore JavaScript gratuito disponibile come libreria Java?
- 20. Qual è il miglior valore per make -j
- 21. Qual è il miglior compilatore C++ standard (e spero gratuito)?
- 22. qual è il miglior parser html per java?
- 23. Qual è il miglior IDE per la programmazione DigitalMars D?
- 24. Qual è il miglior filesystem Linux per MySQL (InnoDB)?
- 25. Qual è il miglior IDE per lo sviluppo in Tomcat?
- 26. Qual è il miglior ORM con questi requisiti
- 27. Qual è il miglior interprete o compilatore Scheme?
- 28. Qual è il miglior schema SQL per questo progetto?
- 29. Qual è il miglior telefono Android da ottenere come sviluppatore
- 30. Qual è il miglior backend CouchDB per Django?
Anche se le questioni sollevate da Robert Harvey possono essere più o meno vero, le risposte qui forniscono un elenco di obfuscators e è molto utile Inoltre, Harvey sottintende che questo sito esperto può solo rispondere a domande semplicistiche e "opinioni" esperte e la discussione estesa è in qualche modo negativa. La domanda sarebbe accettabile se fosse "Posso ottenere una lista di obsfuscator?" Cordiali saluti, Dave H. – DHorse
** DUPLICATO DI ** - >>> ** http: //stackoverflow.com/questions/194397/how-can-i-obfuscateprotect-javascript** –
è possibile utilizzare http: // jsobfuscator .byethost7.com/ –