Tham khảo API
Dùng gói công khai javascript-obfuscator cho bản dựng bằng CLI và Node.js. Gói này tự xử lý phản hồi dạng luồng và tải lên tệp lớn. Client gọi REST trực tiếp phải tự triển khai giao thức dưới đây.
Xem
Using the Obfuscator.io API: API Keys, npm Package, CLI and Custom Presets
Tạo khóa API trong Cài đặt → Khóa API. Cần có quyền truy cập Pro, Team hoặc Business. Giữ khóa trên máy chủ hoặc trong kho bí mật của CI, không bao giờ đặt trong mã chạy trên trình duyệt. Gói javascript-obfuscator nhận khóa qua apiToken (--pro-api-token trên CLI); một yêu cầu REST trực tiếp gửi khóa trong header Authorization: Bearer. Với gói Team hoặc Business, chủ sở hữu nhóm có thể đánh dấu Khóa dịch vụ của nhóm trong hộp thoại Tạo khóa API; khóa đó thuộc về nhóm chứ không thuộc về một cá nhân, nên vẫn hoạt động khi thành viên rời nhóm.
Yêu cầu
POST https://obfuscator.io/api/v1/obfuscate
Gửi JSON gồm code và options. Bật ít nhất một tính năng Pro: vmObfuscation: true hoặc parseHtml: true, trực tiếp hoặc thông qua một preset. Ghim tham số truy vấn version để bản dựng có thể lặp lại; nếu bỏ qua, phiên bản mới nhất sẽ được dùng. Tham số này nhận một phiên bản chính xác như 8.0.0, hoặc một phạm vi: ^8.0.0 theo các bản phát hành minor và patch mới của 8.x, ~8.0.0 theo các bản phát hành patch của 8.0.x, và một phạm vi sẽ được phân giải thành bản phát hành cao nhất khớp với nó. Phạm vi phiên bản yêu cầu gói Team hoặc Business.
options có thể chỉ định một preset thay vì liệt kê mọi tùy chọn: đặt optionsPreset thành một preset có sẵn như vm-default (xem Chọn preset) hoặc thành bí danh API của một preset tùy chỉnh. Preset có sẵn được áp dụng đúng như phiên bản obfuscator được yêu cầu định nghĩa nó, còn bí danh được phân giải với cùng phạm vi nhìn thấy như endpoint preset. Preset là nền, và mọi tùy chọn khác trong yêu cầu sẽ ghi đè lên nó. Một tên không thuộc loại nào trong hai loại trên sẽ khiến yêu cầu thất bại kèm một lỗi.
Nếu chủ sở hữu nhóm bắt buộc một phiên bản hoặc một preset, thiết lập đó sẽ ghi đè version hoặc options của yêu cầu đối với thành viên nhóm và khóa dịch vụ của nhóm. Xem Bắt buộc một phiên bản cho nhóm của bạn và Preset dùng chung.
| Header | Giá trị |
|---|---|
Content-Type | application/json |
Authorization | Bearer YOUR_API_KEY |
Phản hồi
Đọc body dưới dạng JSON phân tách bằng dòng mới (NDJSON). Một lần đọc mạng có thể cắt đôi một dòng JSON hoặc một ký tự UTF-8. Tiến trình không có nghĩa là đã hoàn tất: hãy chờ thông điệp result hoặc chunk_end, và giữ lại warnings.
Đầu ra nhỏ được gửi trong một thông điệp result duy nhất. Đầu ra lớn được gửi dưới dạng các thông điệp chunk, theo sau là chunk_end. Cả hai thông điệp kết thúc đều mang version, phiên bản obfuscator cụ thể đã tạo ra đầu ra (hữu ích khi bạn yêu cầu một phạm vi phiên bản hoặc nhóm bắt buộc một phiên bản). warnings liệt kê các cảnh báo làm rối không gây lỗi dưới dạng { type, message, functionName? } và bị lược bỏ khi không có cảnh báo nào, vì vậy hãy coi trường bị thiếu là một danh sách rỗng. Source map không được tạo cho bản dựng VM hoặc cho đầu vào HTML. Một bản dựng parseHtml với JavaScript thuần và sourceMap: true sẽ trả về source map trong trường sourceMap của thông điệp kết thúc, hoặc dưới dạng các chunk sourceMap khi nó lớn.
Lỗi của ứng dụng được gửi dưới dạng thông điệp error bên trong luồng, thường kèm HTTP 200. Hãy kiểm tra cả mã trạng thái HTTP lẫn lỗi trong luồng. Hạ tầng và các endpoint tải lên có thể trả về phản hồi HTTP không phải 2xx.
Node.js (.mjs)
Preset
GET https://obfuscator.io/api/v1/presets/{name}
Trả về các tùy chọn của một preset, sẵn sàng để gửi làm options của yêu cầu làm rối. Gửi cùng header Authorization: Bearer. Tên được so khớp không phân biệt chữ hoa chữ thường, và phản hồi là một đối tượng JSON duy nhất, không phải luồng. Các ví dụ dưới đây được rút gọn.
- Preset có sẵn:
{name}là một preset có sẵn nhưvm-default(xem Chọn preset). Tham số truy vấnversionchọn phiên bản obfuscator có preset được trả về; tham số này nhận cùng các giá trị như endpoint làm rối và mặc định là phiên bản mới nhất.descriptionvàupdatedAtcó giá trịnull. - Preset tùy chỉnh:
{name}là bí danh API được đặt trong hộp thoại lưu của một preset tùy chỉnh trong bảng điều khiển, vàoptionslà cấu hình đã lưu (mọi tùy chọn, không chỉ những tùy chọn đã thay đổi so với một preset). Phạm vi nhìn thấy giống như trong bảng điều khiển: một khóa API truy xuất được các preset của chính người dùng sở hữu nó cùng các preset do chủ sở hữu nhóm của người dùng đó chia sẻ, còn khóa dịch vụ của nhóm truy xuất được các preset của chủ sở hữu nhóm.
GET https://obfuscator.io/api/v1/presets/vm-default
GET https://obfuscator.io/api/v1/presets/production
| Trạng thái | Ý nghĩa |
|---|---|
| 200 | Preset. |
| 400 | Tên sai định dạng (từ 1 đến 20 ký tự, gồm chữ cái a-z, chữ số, dấu gạch nối hoặc dấu gạch dưới, bắt đầu bằng một chữ cái hoặc chữ số), hoặc version không được hỗ trợ. |
| 401 | Thiếu khóa API, khóa không hợp lệ hoặc đã hết hạn. |
| 403 | Tài khoản bị tạm ngưng, không có gói đăng ký đang hoạt động, hoặc gói không có quyền truy cập API. |
| 404 | Không có preset có sẵn nào mang tên này trong phiên bản được yêu cầu, và khóa không nhìn thấy preset tùy chỉnh nào có bí danh này. |
| 429 | Bị giới hạn tần suất; yêu cầu này dùng chung hạn mức theo người dùng và theo IP trong Giới hạn và lỗi. |
| 500 | Việc tra cứu preset gặp lỗi trên máy chủ. Hãy thử lại sau. |
Lỗi có dạng {"error": "..."}. Ví dụ sử dụng cho gói javascript-obfuscator và CLI của nó có trong Sử dụng gói NPM.
Hạn mức
GET https://obfuscator.io/api/v1/quota
Trả về mức sử dụng còn lại trong gói của bạn, để bản dựng có thể kiểm tra trước khi bắt đầu rằng một tập tệp có nằm trong phần còn lại hay không, thay vì thất bại giữa chừng. Gửi cùng header Authorization: Bearer. Phản hồi là một đối tượng JSON duy nhất, không phải luồng, và bản thân yêu cầu này không được tính vào mức sử dụng.
remainingBytes: lượng bạn vẫn có thể dùng ngay lúc này, tức giá trị nhỏ hơn giữa phần còn lại của hôm nay và phần còn lại của tháng này. Có giá trịnullkhi gói của bạn không có giới hạn.minBytesPerBuild: lượng tối thiểu được tính cho một bản dựng.dailyvàmonthly: số byte đã dùng và giới hạn của từng chu kỳ, hoặcnullkhi gói của bạn không có giới hạn đó.resetsAtlà thời điểm chu kỳ bắt đầu lại, theo định dạng ISO 8601 UTC: chu kỳ ngày bắt đầu lại lúc 00:00 UTC, chu kỳ tháng bắt đầu lại vào ngày thanh toán của bạn mỗi tháng.- Trong một nhóm, khóa của thành viên báo cáo mức sử dụng hằng tháng dùng chung của nhóm và mức sử dụng hằng ngày của chính thành viên đó. Khóa dịch vụ của nhóm báo cáo mức sử dụng của chủ sở hữu nhóm.
Mỗi bản dựng được tính theo kích thước mã nguồn của nó tính bằng byte (UTF-8), chỉ một lần, bất kể dùng tùy chọn nào, và tối thiểu là minBytesPerBuild. Kích thước đầu ra không được tính. Với tệp HTML được dựng bằng parseHtml, chỉ các script được chọn để làm rối mới được tính. Hãy cộng các bản dựng bạn sắp chạy lại và so sánh tổng với remainingBytes.
Khi một bản dựng bị từ chối vì đã dùng hết một giới hạn, thông điệp error trong luồng sẽ kèm theo errorCode:
errorCode | Ý nghĩa |
|---|---|
dailyLimit | Đã dùng hết giới hạn theo ngày. Hãy thử lại sau daily.resetsAt. |
monthlyLimit | Đã dùng hết giới hạn theo tháng. Hãy thử lại sau monthly.resetsAt, hoặc nâng cấp gói. |
usageCheckFailed | Không thể kiểm tra mức sử dụng. Hãy thử lại sau ít phút. |
Ba mã này là ổn định. Các lỗi khác cũng có thể kèm theo errorCode; đừng dựa vào nó.
| Trạng thái | Ý nghĩa |
|---|---|
| 200 | Hạn mức. |
| 401 | Thiếu khóa API, khóa không hợp lệ hoặc đã hết hạn. |
| 403 | Tài khoản bị tạm ngưng, không có gói đăng ký đang hoạt động, hoặc gói không có quyền truy cập API. |
| 429 | Bị giới hạn tần suất; yêu cầu này dùng chung hạn mức theo người dùng và theo IP trong Giới hạn và lỗi. |
| 500 | Không thể đọc mức sử dụng. Hãy thử lại sau. |
Giới hạn và lỗi
Giới hạn của gói áp dụng cho kích thước mã nguồn và mức sử dụng. Hãy giữ toàn bộ body JSON đã tuần tự hóa, kể cả phần ký tự thoát và tùy chọn, dưới 4.4 MB. Mã nguồn lớn hơn cần tải lên tạm thời, tính năng chỉ có trên Team và Business và chỉ thông qua gói javascript-obfuscator. Hãy xem giới hạn và mức sử dụng hiện tại của bạn trong bảng điều khiển hoặc qua endpoint hạn mức. Chỉ những bản dựng trả về mã đã làm rối mới được tính vào mức sử dụng; yêu cầu kết thúc bằng lỗi thì không được tính.
API cho phép 30 yêu cầu mỗi phút cho mỗi người dùng, dùng chung giữa các khóa của họ, và 100 yêu cầu mỗi phút cho mỗi IP. Các yêu cầu tới endpoint preset và endpoint hạn mức được tính vào cùng giới hạn với các yêu cầu làm rối.
Giới hạn tần suất, lỗi hạn mức và luồng bị gián đoạn phải dừng bản dựng. Hãy thử lại một cách có chủ đích; một yêu cầu lặp lại có thể tiêu tốn thêm mức sử dụng. Không phát hành đầu ra chưa hoàn chỉnh.
