Công cụ này làm gì
Công cụ làm rối JavaScript viết lại script sao cho nó vẫn chạy y hệt nhưng khó đọc và khó sao chép hơn nhiều. Tên biến và tên hàm trở thành những định danh vô nghĩa như _0x3f2a, các chuỗi ký tự được chuyển vào một bảng tra cứu đã mã hóa, và ở mức cao hơn luồng điều khiển bị xáo trộn và code chết được trộn vào.
Nó hữu ích cho game trên trình duyệt, bản demo, widget và cơ chế kiểm tra giấy phép mà bạn phát hành dưới dạng JavaScript thuần và không muốn bị sao chép nguyên văn.
Cách sử dụng
- Dán JavaScript của bạn hoặc mở một tệp
.js. - Chọn Mức độ:
- Thấp đổi tên cục bộ và chuyển chuỗi vào một mảng tra cứu. Đầu ra vẫn nhanh và khá nhỏ.
- Trung bình thêm chuỗi đã mã hóa, làm phẳng luồng điều khiển và một ít code chết.
- Cao áp dụng mọi thứ ở mức tối đa. Kết quả có thể lớn gấp nhiều lần và chậm hơn rõ rệt.
- Chỉ bật Đổi tên toàn cục nếu không có gì bên ngoài script tham chiếu tới các hàm hoặc biến cấp cao nhất của nó.
- Tắt Xuất ra một dòng nếu bạn muốn kết quả trải ra nhiều dòng.
- Sao chép hoặc tải code đã làm rối xuống và kiểm tra trước khi triển khai.
Ví dụ
Ví dụ mẫu định nghĩa một hàm greet và một bộ đếm lượt truy cập. Sau khi làm rối ở mức thấp, code chỉ còn một dòng toàn tên thập lục phân, nhưng khi chạy vẫn in ra Hello, Ada! You have visited 1 time(s).
Làm rối so với rút gọn
Rút gọn, như công cụ rút gọn JavaScript và CSS thực hiện, loại bỏ khoảng trắng và rút ngắn tên để tệp nhỏ hơn và tải nhanh hơn. Làm rối thì ngược lại về kích thước: nó cố ý thêm các lớp gián tiếp để code khó hiểu hơn. Nhiều dự án rút gọn mọi thứ và chỉ làm rối vài tệp chứa logic đáng bảo vệ.
Giới hạn
Làm rối không thể bảo vệ bí mật. Bất cứ thứ gì trình duyệt chạy được thì người dùng cuối cùng cũng có thể xem xét, vì vậy hãy giữ API key và các quy tắc nghiệp vụ cần bảo mật trên máy chủ của bạn. Cài đặt nặng cũng làm chậm code, nên hãy tránh dùng chúng cho các vòng lặp nóng và trang nhạy cảm về hiệu năng.
Câu hỏi thường gặp
› Làm rối code có thay đổi cách code của tôi chạy không?
Không. Script đã làm rối hoạt động giống hệt bản gốc; chỉ hình thức của nó thay đổi. Hãy luôn chạy test với bản build đã làm rối, vì code kiểm tra mã nguồn hoặc tên hàm của chính nó có thể hoạt động khác đi.
› Code đã làm rối có thể bị đảo ngược không?
Không hoàn toàn, nhưng một người quyết tâm và có thời gian vẫn có thể tìm ra nó làm gì. Hãy coi làm rối code là một gờ giảm tốc trước những kẻ sao chép tùy tiện, đừng bao giờ coi nó là nơi giấu bí mật như API key.
› Khi nào tôi nên bật Đổi tên toàn cục?
Chỉ khi script hoàn toàn độc lập. Đổi tên toàn cục sẽ làm hỏng các thuộc tính HTML, script khác hoặc test gọi các hàm cấp cao nhất của bạn theo tên.
› Code của tôi có bị tải lên không?
Không. Việc làm rối chạy trong trình duyệt của bạn bằng thư viện mã nguồn mở javascript-obfuscator.