API リファレンス
CLI や Node.js でのビルドには、公開パッケージ javascript-obfuscator を使用してください。ストリーミングや大きなファイルのアップロードはパッケージが処理します。REST を直接呼び出すクライアントは、以下のプロトコルを実装する必要があります。
視聴する
Using the Obfuscator.io API: API Keys, npm Package, CLI and Custom Presets
設定 → API キー で API キーを作成します。Pro、Team、Business のいずれかのアクセス権が必要です。キーはサーバーまたは CI のシークレットストアに保管し、ブラウザーのコードには決して含めないでください。javascript-obfuscator パッケージはキーを apiToken(CLI では --pro-api-token)として受け取り、REST を直接呼び出すリクエストでは Authorization: Bearer ヘッダーで送信します。Team プランまたは Business プランでは、チームオーナーが API キーを作成 ダイアログで チームサービスキー にチェックを入れることもできます。そのキーは個人ではなくチームに属するため、メンバーが抜けても引き続き使えます。
リクエスト
POST https://obfuscator.io/api/v1/obfuscate
code と options を含む JSON を送信します。Pro の機能を少なくとも 1 つ有効にしてください(vmObfuscation: true または parseHtml: true)。再現可能なビルドのために version クエリパラメーターを固定してください。省略すると最新バージョンが使用されます。8.0.0 のような正確なバージョン、または範囲を指定できます。^8.0.0 は 8.x の新しいマイナーリリースとパッチリリースに、~8.0.0 は 8.0.x のパッチリリースに追従し、範囲は一致する最も新しいリリースに解決されます。範囲指定には Team プランまたは Business プランが必要です。
options にはオプションそのものを列挙します。optionsPreset にプリセット名を指定しても適用されません。組み込みかカスタムかを問わずプリセットでビルドするには、別のリクエストでプリセットのエンドポイントからそのオプションを取得し、options として送信してください。
チームオーナーがバージョンやプリセットを強制している場合、チームメンバーとチームサービスキーについては、それがリクエストの version や options より優先されます。チームにバージョンを強制すると共有プリセットを参照してください。
| ヘッダー | 値 |
|---|---|
Content-Type | application/json |
Authorization | Bearer YOUR_API_KEY |
レスポンス
レスポンス本文は改行区切りの JSON(NDJSON)として読み取ります。ネットワークからの 1 回の読み取りで、JSON の行や UTF-8 の文字が途中で分割されることがあります。進捗は完了を意味しません。result または chunk_end メッセージを受け取ったことを必ず確認し、warnings を保持してください。
小さな出力は 1 つの result メッセージで届きます。大きな出力は chunk メッセージの後に chunk_end が続く形で届きます。どちらの終端メッセージにも、出力を生成した具体的な難読化ツールのバージョンである version が含まれます(範囲を指定した場合や、チームがバージョンを強制している場合に役立ちます)。warnings は致命的ではない難読化の警告を { type, message, functionName? } の形式で列挙し、警告がない場合は省略されるため、フィールドがない場合は空のリストとして扱ってください。VM ビルドや HTML 入力ではソースマップは生成されません。プレーンな JavaScript を sourceMap: true 付きで parseHtml ビルドした場合は、終端メッセージの sourceMap フィールドで、サイズが大きい場合は sourceMap チャンクとしてソースマップが返されます。
アプリケーションのエラーはストリーム内の error メッセージとして届き、通常 HTTP ステータスは 200 です。HTTP ステータスとストリーム内のエラーの両方を確認してください。インフラやアップロード用のエンドポイントは、2xx 以外の HTTP レスポンスを返すことがあります。
Node.js (.mjs)
プリセット
GET https://obfuscator.io/api/v1/presets/{name}
プリセットのオプションを、そのまま難読化リクエストの options として送信できる形で返します。同じ Authorization: Bearer ヘッダーを送信してください。名前は大文字と小文字を区別せずに照合され、レスポンスはストリームではなく単一の JSON オブジェクトです。下の例は省略形です。
- 組み込みプリセット:
{name}はvm-defaultなどの組み込みプリセットです(プリセットの選択を参照)。versionクエリパラメーターで、どの難読化ツールのバージョンのプリセットを返すかを選択します。難読化エンドポイントと同じ値を受け付け、省略すると最新バージョンになります。descriptionとupdatedAtはnullです。 - カスタムプリセット:
{name}は、ダッシュボードでカスタムプリセットの保存ダイアログに設定した API エイリアスです。optionsは保存された設定(プリセットから変更したものだけでなく、すべてのオプション)です。参照できる範囲はダッシュボードと同じです。API キーは、そのユーザー自身のプリセットと、そのユーザーのチームオーナーが共有したプリセットを解決します。チームサービスキーはオーナーのプリセットを解決します。
GET https://obfuscator.io/api/v1/presets/vm-default
GET https://obfuscator.io/api/v1/presets/production
| ステータス | 意味 |
|---|---|
| 200 | プリセット。 |
| 400 | 名前の形式が不正です(1〜20 文字で、英字 a-z、数字、ハイフン、アンダースコアのみ使用でき、先頭は英字または数字である必要があります)。または version がサポートされていません。 |
| 401 | API キーがない、無効、または期限切れです。 |
| 403 | アカウントが停止されている、有効なサブスクリプションがない、または API アクセスのないプランです。 |
| 404 | 要求されたバージョンにこの名前の組み込みプリセットがなく、このエイリアスを持つカスタムプリセットのうちキーから参照できるものもありません。 |
| 429 | レート制限に達しました。このリクエストは、制限と失敗に記載のユーザー単位および IP 単位の上限を共有します。 |
| 500 | サーバー側でプリセットの取得に失敗しました。後で再試行してください。 |
エラーは {"error": "..."} の形式です。javascript-obfuscator パッケージとその CLI での使用例は NPM パッケージの利用にあります。
制限と失敗
ソースのサイズと使用量にはプランの制限が適用されます。エスケープやオプションを含む、シリアライズされた JSON 本文全体を 4.4 MB 未満に収めてください。それより大きなソースには一時アップロードが必要です。一時アップロードは Team と Business で、javascript-obfuscator パッケージを通じてのみ利用できます。現在のプランの制限はダッシュボードで確認してください。
API のリクエスト数の上限は、ユーザーごとに毎分 30 件(そのユーザーのすべてのキーで共有)、IP ごとに毎分 100 件です。プリセットのリクエストも、難読化リクエストと同じ上限に含まれます。
レート制限、使用量上限による失敗、ストリームの中断が起きた場合は、ビルドを停止する必要があります。再試行は意図的に行ってください。リクエストを繰り返すと、追加の使用量が消費されることがあります。不完全な出力を公開しないでください。
