html-classes-obfuscator

Obfuscate class names in HTML, CSS and Javascript files.


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

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.