html-classes-obfuscator

Obfuscate class names in HTML, CSS and Javascript files.


Keywords
html, obfuscator
License
MIT
Install
pip install html-classes-obfuscator==1.0.1

Documentation

๐Ÿ‘‹ HTML-Classes-Obfuscator ๐Ÿ”’

CLI tool that obfuscates HTML classes:

Normal HTML file :

<div class="card w-50">
  <div class="card-body">Hello World</div>
</div>

Obfuscated HTML file :

<div class="oywdon tgmvkg">
  <div class=emnpzm>Hello World</div>
</div>

๐Ÿš€ Usage

Via command line...

git clone git@github.com:xandermann/html-classes-obfuscator.git

cp html-classes-obfuscator/html_classes_obfuscator/html_classes_obfuscator.py ./YOUR_PROJECT

python3 html_classes_obfuscator.py --htmlpath="**/*.html" --csspath="**/*.css" --jspath="**/*.js"

...Or via a python script

# https://pypi.org/project/html-classes-obfuscator/
pip install html-classes-obfuscator
import glob
import random
import string
from html_classes_obfuscator import html_classes_obfuscator

# [...]

htmlfiles = glob.glob("./**/*.html", recursive=True)
cssfiles = glob.glob("./**/*.css", recursive=True)
jsfiles = glob.glob("./**/*.js", recursive=True)

print(htmlfiles)
print(cssfiles)
print(jsfiles)

# Generate random string
def generate_class(current_classes_list):

    def random_class():
        # Offers (26*2)^6 random class name possibilities
        return ''.join(random.choice(string.ascii_letters) for i in range(6))

    res = random_class()

    while res in current_classes_list.values():
        res = random_class()

    return res

html_classes_obfuscator.html_classes_obfuscator(htmlfiles, cssfiles, jsfiles, generate_class)

โš ๏ธ๏ธ Important notes

  1. Make a backup before use.
  2. DON'T use if you have duplicate class names in your css files.
  3. If you modify the class generator, be sure that the generated name doesnโ€™t begin with a number:

In CSS, identifiers (including element names, classes, and IDs in selectors) can contain only the characters [a-zA-Z0-9] and ISO 10646 characters U+00A0 and higher, plus the hyphen (-) and the underscore (_); they cannot start with a digit, two hyphens, or a hyphen followed by a digit. Identifiers can also contain escaped characters and any ISO 10646 character as a numeric code (see next item). For instance, the identifier โ€œB&W?โ€ may be written as โ€œB&W?โ€ or โ€œB\26 W\3Fโ€. https://www.w3.org/TR/CSS21/syndata.html#characters

โœ… Run tests

python3 -m unittest tests/*.py

๐Ÿค Contributing

Contributions, issues and feature requests are welcome.

Feel free to check issues page if you want to contribute.

Check the contributing guide.