
Un puissant compilateur/obfuscateur de sites web à des fins d'optimisation ou de protection de la propriété intellectuelle.

WebSafeCompiler (WSC) est un utilitaire avancé (compilateur de sites web) conçu pour l'optimisation, la minification et l'obfuscation (si vous en avez besoin) d'applications web et de sites web utilisant Node.js. Il améliore vos ressources web en réduisant la taille des fichiers ou en offrant une protection durable contre l'ingénierie inverse, garantissant que votre code est prêt pour le déploiement et sécurisé.
[!NOTE]
Convient aux sites *.github.io
Le compilateur est monolithique : toute l'implémentation réside dans source/wsc.js. Les tests de régression résident séparément dans tests/.
Pour exploiter tout le potentiel de WebSafeCompiler, exécutez la commande suivante dans votre terminal :
node wsc.js <input_dir> <output_dir> [--map] [--smart] [--drm]
<input_dir> : Répertoire contenant les fichiers sources à traiter.<output_dir> : Répertoire dans lequel les fichiers optimisés et obfusqués seront générés.-m, --map : Crée un sitemap.xml dans le répertoire de sortie pour un meilleur référencement SEO-s, --smart : Détecte automatiquement les fichiers minifiés et les ignore. Cela inclut les fichiers JS et CSS.-d, --drm : Active l'obfuscation du code (protection DRM) pour sécuriser votre code source contre toute analyse non autorisée.
class, id et title. Les noms de classes et attributs existants sont conservés. Les dépendances détectées liées aux sélecteurs et à l'inspection du DOM limitent le bruit avec un avertissement dans la console.-h, --help : Affiche le message d'aide avec les instructions d'utilisation détaillées.-v, --version : Affiche la version actuelle de WebSafeCompiler.node wsc.js "/path/to/source" "/path/to/output" --drm --smart
Cette commande traitera tous les fichiers présents dans le répertoire source spécifié, les optimisera et, si l'option d'obfuscation est activée, protégera le code contre tout accès ou modification non autorisé. Les fichiers de sortie seront prêts à être déployés dans votre environnement web.

WebSafeCompiler utilise les bibliothèques suivantes pour travailler avec les codes JavaScript :
Pour commencer avec WebSafeCompiler, vous devez avoir Node.js installé sur votre système. Suivez ces étapes pour installer les paquets requis :
Installer Node.js : Téléchargez et installez Node.js depuis le site officiel de Node.js. Suivez les instructions d'installation pour votre système d'exploitation.
Cloner le dépôt : Si ce n'est pas déjà fait, clonez le dépôt sur votre machine locale :
git clone <repository-url>
cd <repository-directory>/source
Installer les dépendances : Naviguez vers le répertoire du projet et installez les paquets npm nécessaires :
npm install
Terminé ! Vous pouvez utiliser WSC.
WSC minifie l'espacement des balises/attributs HTML et supprime les commentaires HTML ordinaires, tout en préservant les valeurs entre guillemets, les espaces blancs du texte, les corps bruts script/style, les commentaires conditionnels et les marqueurs de framework. La détection d'inspection du code source/commentaires désactive ces modifications de balisage avec un avertissement. JavaScript utilise le mangling des noms locaux et cinq passes de compression tout en conservant les globales publiques et les noms de fonctions. Le DRM conserve l'aplatissement du flux de contrôle, l'injection de code mort et une couverture complète des tableaux de chaînes avec encodage base64. Le CSS est analysé et minifié ; le JS et le CSS non pris en charge avec des avertissements du parseur sont conservés inchangés avec un avertissement. Les ressources non UTF-8 sont copiées sans conversion. Les ressources SRI locales sont traitées avant le HTML, puis les métadonnées SHA-256/384/512 sont recalculées à partir des octets finaux dans les références script, feuille de style, preload et template. Les hachages de scripts externes correspondants dans les politiques CSP accessibles sont également mis à jour. Les ressources partagées sont conservées inchangées avec un avertissement DRM si une page référente a une CSP indisponible ou ne peut pas être réécrite en toute sécurité en UTF-8. Les métadonnées SRI invalides restent bloquées ; les ressources hébergées en externe ne sont pas réécrites.
Le DRM ajoute des classes aléatoires aux attributs class existants et deux attributs inertes aléatoires autour de chaque attribut réel des balises HTML ordinaires éligibles. Les noms aléatoires sont vérifiés par rapport au texte source HTML, CSS et JS. Les sélecteurs d'égalité/sous-chaîne de classe préservent les valeurs de classe affectées ; l'analyse AST limite l'inspection des classes/attributs aux éléments identifiés statiquement, aux alias immuables et aux sous-arbres d'observateurs, en utilisant chaque page et ses dépendances JS/CSS locales. Les éléments non liés reçoivent toujours du bruit. Les récepteurs inconnus, les sélecteurs d'exécution, la déstructuration et les observateurs non résolus utilisent un repli conservateur et impriment des avertissements. Les balises script/style/meta/noscript, les éléments personnalisés et les nœuds SVG/MathML étrangers ne reçoivent pas d'attributs indésirables. Ces garde-fous couvrent les dépendances connues ; les sélecteurs calculés dynamiquement ou la réflexion ne peuvent pas toujours être déduits statiquement.
En mode DRM, WSC extrait automatiquement le JavaScript inline éligible vers des fichiers obfusqués wsc-inline-*.js à côté de chaque document HTML lorsqu'une configuration CSP prise en charge s'applique : _headers à la racine, vercel.json à la racine (règles headers), ou une balise meta CSP HTML. Il ajoute 'self' à script-src-elem dans la politique de sortie, en préservant les autres permissions de source, les règles script-src pour les gestionnaires d'événements, et les directives non liées. Cela élargit intentionnellement les permissions de script aux fichiers de même origine. Déployez le JavaScript émis et la configuration d'en-tête avec le HTML. Les nonces restent inchangés ; les fichiers générés incluent des hachages SRI. Les routes littérales et les jokers * sont pris en charge.