Estoy buscando utilizar un ocultador de JavaScript. ¿Cuáles son algunos de los más populares y qué impacto tienen en el rendimiento?¿Cuál es el mejor ocultador de JavaScript?
Respuesta
Yahoo tiene uno muy bueno. Es técnicamente un minificador, pero hace un buen trabajo de ofuscación en el proceso.
Comprimido y ofuscado a través del compresor YUI en línea gratis aquí: http://refresh-sf.com/yui/ – NexusRex
el enlace ya no funciona –
Bueno, Google sacaste a este como el primer eslabón:
http://www.javascriptobfuscator.com
pero me pregunto lo que hace buena la ofuscación de Javascript. Sea lo que sea lo que está haciendo en javascript que necesita ofuscación probablemente debería hacerse en el servidor de todos modos, ¿verdad?
De todo lo que he visto, este es quizás el mejor ofuscador. Aunque no he probado JScrambler. – AStackOverflowUser
nunca he utilizado Ofuscador en la producción, pero yo he probado JavaScript Utility y parece bastante bueno.
En cuanto al rendimiento, el código ofuscado se debe desempacar sobre la marcha cada vez que se carga la página. Puede que no sea un problema para las secuencias de comandos pequeñas, pero el tiempo de desembalaje será significativo con archivos más grandes. Por otro lado, el código minificado es ejecutable directamente por el navegador.
Algunos ofuscadores pueden producir resultados que no se ejecutan en navegadores más antiguos o menos comunes. Debe probar muy cuidadosamente con los navegadores que planea apoyar.
Los ofuscadores no requieren ningún desempaquetado de códigos. Otros esquemas para minimizar el código pueden requerir eso, pero obfsucation por sí mismo no lo hace. –
Estoy de acuerdo en que tengo confusiones y empaques mezclados aquí. El empaquetado es un enfoque común para ofuscar JS, pero su objetivo principal es disminuir el tamaño del archivo de script. –
También puede probar el JavaScript Compressor escrito por Dean Edwards.
Tendría que decir Hackvertor (no lo he escrito) es gratis y admite la conversión basada en etiquetas. Mira el ejemplo: -
¿Alguien sabe cómo usar esto?Parece que no puedo entenderlo. – Noitidart
Probado 8 ofuscadores diferentes (excepto www.javascriptobfuscator.com), y fue sorprendido por lo mucho que todos chupan. Terminé escribiendo mi propio ofuscador usando expresiones regulares. Disfrutar de:
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;
}
¿Por qué "todos chupan"? ¿Qué problema resuelve tu código? – frenchie
@frenchie Bueno, para empezar, pegue javascript ofuscado generado con esos ofuscadores "sucky" en el embellecedor de JavaScript en http://jsbeautifier.org/ y mire cómo no se ofusca al instante. – trusktr
@ AareP, ¿puede proporcionar algunas transformaciones de muestra? – trusktr
Packer con base62
http://dean.edwards.name/packer/
https://github.com/jcoglan/packr < = rubí versión
Intenta pegar el código ofuscado generado con esto en http://jsbeautifier.org/ y verlo reescrito como el original. – trusktr
- 1. ¿Cuál es el mejor marco de JavaScript liviano?
- 2. ¿Cuál es el mejor menú desplegable de Javascript?
- 3. ¿Cuál es el mejor motor de plantillas Javascript actual?
- 4. condicionales de definición de objeto JavaScript - ¿cuál es mejor?
- 5. ¿Cuál es la mejor herramienta de compresión/ofuscación de JavaScript?
- 6. ¿Cuál es actualmente la mejor configuración de HTML/CSS/Javascript?
- 7. ¿Cuál es la mejor manera de implementar params en JavaScript?
- 8. ¿Cuál es la mejor manera de recortar() en javascript
- 9. ¿Cuál es la mejor manera de incluir Javascript?
- 10. ¿Cuál es la mejor biblioteca de cliente JavaScript XML-RPC?
- 11. ¿Cuál es la mejor manera de probar javascript?
- 12. ¿Cuál es la mejor manera de hacer bucles en JavaScript
- 13. ¿Cuál es el mejor estilo de codificación?
- 14. ¿Cuál es el mejor blog de XNA?
- 15. ¿Cuál es el mejor editor de python?
- 16. ¿Cuál es el mejor datepicker de Java ..?
- 17. ¿Cuál es el mejor argumento Pro OOP?
- 18. Cuál es el mejor módulo Drupal Survey
- 19. Carga lenta: ¿cuál es el mejor enfoque?
- 20. ¿Cuál es el mejor editor para AutoHotkey?
- 21. Sort ObservableCollection: ¿cuál es el mejor enfoque?
- 22. ¿Cuál es el mejor motor 3D Actionscript3?
- 23. Módulos Python PostgreSQL. ¿Cuál es el mejor?
- 24. JSF vs Stripes, ¿cuál es el mejor?
- 25. ¿Cuál es el mejor visor para NLog?
- 26. Javascript: ¿cuál es el punto de RegExp.compile()?
- 27. ¿Cuál es la mejor manera de empaquetar el código JavaScript sin tener fallas en el rendimiento?
- 28. Fechas de Javascript: ¿cuál es la mejor manera de lidiar con el horario de verano?
- 29. ¿Cuál es la mejor manera de determinar el número de días en un mes con javascript?
- 30. ¿Cuál es el mejor cargador de archivos múltiples de JavaScript/Flash?
Aunque las cuestiones planteadas por Robert Harvey pueden ser más o menos cierto, las respuestas aquí proporcionan una lista de ofuscadores y es muy útil. Además, el Sr. Harvey insinúa que este sitio experto solo puede responder a preguntas simplistas y a la "opinión" experta y la discusión extendida es de alguna manera negativa. ¿La pregunta sería aceptable si fuera "¿Puedo obtener una lista de obsfuscadores?" Saludos, Dave H. – DHorse
** DUPLICADO DE ** - >>> ** http: //stackoverflow.com/questions/194397/how-can-i-obfuscateprotect-javascript** –
puede usar http: // jsobfuscator .byethost7.com/ –