Tương thích môi trường chạy
Chọn target theo môi trường thực tế. Bản dựng Browser và Node có thể có cơ chế bảo vệ khác nhau; target Browser không thay thế Node. Khai báo môi trường, giới hạn miền và công cụ chạy cũng phải khớp cấu hình.
target
browser- Chrome, Firefox, Safari, Edge.browser-no-eval- giốngbrowser, nhưng mã đầu ra không dùngeval(). Dùng khi trang mục tiêu có Content Security Policy cấmeval/unsafe-eval.node- môi trường Node.js. Các tùy chọn dành riêng cho trình duyệt bị vô hiệu hóa (chúng cầnwindow/documentvà sẽ không có tác dụng hoặc ném lỗi trong Node). Một số cơ chế phòng thủvmSelfDefendingdựa vào các API chỉ có trên trình duyệt - phát hiện trình duyệt headless, khôi phục realm sạch dựa trên iframe, kiểm tra chống inspector/DOM - không được phát ra cho target này.service-worker- ngữ cảnh Service Worker. Không cówindow, không códocument, biến toàn cụcselfkhác biệt.userscript- sandbox của trình quản lý userscript (ví dụ Tampermonkey). Các cơ chế phòng thủvmSelfDefendingđược điều chỉnh tương ứng. Yêu cầu obfuscator v6.9.0+.bytenode- dành cho mã sẽ được biên dịch thành.jscbằng bytenode. Yêu cầu obfuscator v6.13.0+.
JavaScript
Tên và văn bản mã nguồn của hàm có thể thay đổi khi làm rối. Không dùng .name hay .toString() làm dữ liệu ứng dụng ổn định; hãy dùng định danh rõ ràng. Tên toàn cục công khai có thể vẫn hiển thị tùy thiết lập.
strictMode
strictMode: null và strictMode: false vẫn nhận diện chỉ thị tường minh, mô-đun ES và phương thức lớp là strict. strictMode: true coi toàn bộ đầu vào là strict. Hãy khớp với môi trường cuối cùng; bundler thêm strict mode sau làm rối có thể thay đổi hành vi.
CLI / API
Biên dịch TypeScript hoặc JSX và đóng gói ứng dụng trước bước làm rối cuối cùng. Giữ chú thích chọn hàm VM đến bước đó. Không thu gọn, định dạng hay sửa đầu ra Self Defending sau đó. Source map không khả dụng với làm rối VM và HTML. Để kiểm thử chức năng bằng tác nhân, công cụ tự động hóa hoặc trình gỡ lỗi, xem Kiểm thử và CI.
