Tài liệu
/

Tương thích môi trường chạy

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ống browser, nhưng mã đầu ra không dùng eval(). Dùng khi trang mục tiêu có Content Security Policy cấm eval/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ần window/document và sẽ không có tác dụng hoặc ném lỗi trong Node). Một số cơ chế phòng thủ vmSelfDefending dự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ục self khá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 .jsc bằ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.