Browser Environment
Khai báo cách bản dựng production của bạn được phục vụ để mã được bảo vệ có thể ràng buộc tính toàn vẹn vào đó.
Tùy chọn browserEnvironment khai báo các thông tin về môi trường mà bản dựng production của bạn được phục vụ, để mã được bảo vệ có thể tự ràng buộc vào chúng hoặc phản ứng với chúng. Đây là một đối tượng nhỏ, và mỗi trường chỉ có hiệu lực khi đi cùng một cơ chế bảo vệ cụ thể — tự thân tùy chọn này không làm gì cả:
browserEnvironment: { transport: 'https', hosting: 'remote' }
transport
Giao thức mà môi trường production của bạn dùng để phục vụ bundle — 'http' hoặc 'https'. Có hiệu lực cùng vmSelfDefending.
Với 'https', một bản sao được một kỹ sư dịch ngược phục vụ qua HTTP thuần sẽ không chạy đúng. 'http' hoặc để trống trường này thì không thêm sự bảo vệ đó.
hosting
Nơi bundle production của bạn được phục vụ — 'remote' hoặc 'local'. Có hiệu lực cùng vmDebugProtection, và chỉ trên các target browser và browser-no-eval. Yêu cầu trình làm rối phiên bản 7.14.0 trở lên.
Với 'remote', bản sao mà một người dịch ngược lấy về và chạy trong môi trường cục bộ của họ sẽ bị coi là không khớp môi trường thực thi, và các cơ chế phòng thủ chống tự động hóa sẽ phản ứng theo cấu hình trong vmDefenseReaction. 'local' hoặc trường không được đặt sẽ không thêm sự bảo vệ đó.
Các target được hỗ trợ
browserEnvironment chỉ áp dụng cho các target browser, browser-no-eval và service-worker. Với node, userscript và bytenode, tùy chọn này bị từ chối — việc làm rối thất bại với lỗi xác thực thay vì âm thầm bỏ qua thiết lập. hosting còn hẹp hơn: được chấp nhận trên service worker nhưng không ràng buộc gì ở đó.
Yêu cầu
transportcó hiệu lực cùngvmSelfDefending,hostingcùngvmDebugProtection; nếu không, cả hai đều không làm gì.- Một target
browser,browser-no-evalhoặcservice-worker(browserhoặcbrowser-no-evalđối vớihosting). - Trình làm rối phiên bản 7.9.0 trở lên cho
transport, 7.14.0 trở lên chohosting.
Ví dụ
JavaScriptObfuscator.obfuscate(code, {
vmObfuscation: true,
vmSelfDefending: true,
vmDebugProtection: true,
target: 'browser',
browserEnvironment: { transport: 'https', hosting: 'remote' }
});