429 votes

Outil pour désobfusquer / décompresser JavaScript

Y a-t-il des scripts en ligne de commande et/ou des outils en ligne qui peuvent annuler les effets de la minimisation de manière similaire à la façon dont Tidy peut nettoyer un HTML horrible ?

(Je cherche spécifiquement à déminifier un fichier JavaScript minifié, donc le changement de nom de variables peut toujours poser problème.)

503voto

Fabien Ménager Points 45472

Vous pouvez utiliser ceci : http://jsbeautifier.org/ Mais cela dépend de la méthode de minification que vous utilisez, celle-ci ne formate que le code, elle ne change pas les noms de variables, ni ne décompresse le codage en base62.

edit: en fait, il peut décompresser les scripts "packés" (packés avec le packer de Dean Edward : http://dean.edwards.name/packer/)

152voto

Jon Adams Points 8637

Les outils de développement Chrome ont cette fonctionnalité intégrée. Pour afficher les outils de développement (appuyez sur F12 est l'une des méthodes), dans l'onglet Sources, la barre en bas à gauche contient une série d'icônes. L'icône "{}" est "Pretty print" et réalise cette conversion à la demande.

MISE À JOUR: IE9 "outils de développement F12" possèdent également une fonctionnalité "Format JavaScript" dans l'onglet Script sous l'icône Outils. (voir Astuce n°4 dans F12 Le secret de débogage web le mieux gardé)

entrer la description de l'image ici

56voto

Jarvis Points 16871

Compris! JSBeautifier fait exactement cela, et vous avez même des options pour le formatage automatique.

16voto

Janco Points 1017

Ne pouvez-vous pas simplement utiliser un formateur JavaScript (http://javascript.about.com/library/blformat.htm) ?

14voto

katspaugh Points 6110

Dans Firefox, SpiderMonkey et Rhino, vous pouvez englober n'importe quel code dans une fonction anonyme et appeler sa méthode toSource, qui vous donnera une source joliment formatée de la fonction.

toSource supprime également les commentaires.

Par exemple:

(function () { /* Dire bonjour. */ var x = 'Bonjour!'; print(x); }).toSource()

Sera converti en une chaîne:

function () {
    var x = "Bonjour!";
    print(x);
}

N. B.: Ce n'est pas un "outil en ligne", mais toutes les questions sur les techniques de mise en beauté générale sont fermées comme doublons de celle-ci.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X