Riferimento API
Usa il pacchetto pubblico javascript-obfuscator per le build da CLI e Node.js. Gestisce lo streaming e i caricamenti di grandi dimensioni. I client REST diretti devono implementare il protocollo descritto di seguito.
Guarda
Using the Obfuscator.io API: API Keys, npm Package, CLI and Custom Presets
Crea una chiave API in Impostazioni → Chiavi API. È richiesto un accesso Pro, Team o Business. Conserva la chiave sul tuo server o nell'archivio dei segreti della CI, mai nel codice eseguito nel browser. Il pacchetto javascript-obfuscator riceve la chiave come apiToken (--pro-api-token nella CLI); una richiesta REST diretta la invia nell'intestazione Authorization: Bearer. Con un piano Team o Business, il proprietario del team può selezionare Chiave di servizio del team nella finestra di dialogo Crea chiave API; quella chiave appartiene al team anziché a una persona, quindi continua a funzionare quando i membri se ne vanno.
Chiavi API · Utilizzo del pacchetto NPM
Richiesta
POST https://obfuscator.io/api/v1/obfuscate
Invia un JSON con code e options. Attiva almeno una funzionalità Pro: vmObfuscation: true oppure parseHtml: true, direttamente o tramite un preset. Fissa il parametro di query version per ottenere build ripetibili; se lo ometti viene usata la versione più recente. Accetta una versione esatta come 8.0.0 oppure un intervallo: ^8.0.0 segue le nuove release minor e patch della 8.x, ~8.0.0 segue le release patch della 8.0.x, e un intervallo si risolve nella release corrispondente più alta. Gli intervalli richiedono un piano Team o Business.
options può indicare un preset invece di elencare ogni opzione: imposta optionsPreset su un preset integrato come vm-default (vedi Scegliere i preset) oppure sull'alias API di un preset personalizzato. Un preset integrato viene applicato così come lo definisce la versione dell'offuscatore richiesta, e un alias viene risolto con la stessa visibilità dell'endpoint dei preset. Il preset fa da base, e ogni altra opzione della richiesta lo sovrascrive. Un nome che non è né l'uno né l'altro fa fallire la richiesta con un errore.
Se il proprietario del team impone una versione o un preset, questi sostituiscono la version o le options della richiesta per i membri del team e le chiavi di servizio del team. Consulta Imporre una versione al team e Preset condivisi.
| Intestazione | Valore |
|---|---|
Content-Type | application/json |
Authorization | Bearer YOUR_API_KEY |
Risposta
Leggi il corpo come JSON delimitato da ritorni a capo (NDJSON). Una lettura dalla rete può spezzare una riga JSON o un carattere UTF-8. L'avanzamento non indica il completamento: attendi un messaggio result o chunk_end e conserva i warnings.
Un output piccolo arriva in un unico messaggio result. Un output grande arriva come messaggi chunk seguiti da chunk_end. Entrambi i messaggi finali contengono version, la versione concreta dell'offuscatore che ha prodotto l'output (utile quando hai richiesto un intervallo o quando il team impone una versione). warnings elenca gli avvisi di offuscamento non bloccanti nella forma { type, message, functionName? } e viene omesso quando non ce ne sono, quindi tratta un campo mancante come un elenco vuoto. Le source map non vengono prodotte per le build VM né per l'input HTML. Una build parseHtml di JavaScript semplice con sourceMap: true ne restituisce una nel campo sourceMap del messaggio finale, oppure come chunk sourceMap quando è grande.
Gli errori applicativi arrivano come messaggi error all'interno dello stream, di solito con HTTP 200. Controlla sia lo stato HTTP sia gli errori nello stream. Gli endpoint di infrastruttura e di caricamento possono restituire risposte HTTP diverse da 2xx.
Node.js (.mjs)
Preset
GET https://obfuscator.io/api/v1/presets/{name}
Restituisce le opzioni di un preset, pronte per essere inviate come options della richiesta di offuscamento. Invia la stessa intestazione Authorization: Bearer. Il nome viene confrontato senza distinzione tra maiuscole e minuscole, e la risposta è un singolo oggetto JSON, non uno stream. Gli esempi qui sotto sono abbreviati.
- Preset integrati:
{name}è un preset integrato comevm-default(vedi Scegliere i preset). Il parametro di queryversionseleziona la versione dell'offuscatore di cui viene restituito il preset; accetta gli stessi valori dell'endpoint di offuscamento e per impostazione predefinita usa l'ultima versione.descriptioneupdatedAtsononull. - Preset personalizzati:
{name}è l'alias API impostato nella finestra di salvataggio di un preset personalizzato nella dashboard, eoptionsè la configurazione salvata (tutte le opzioni, non solo quelle modificate rispetto a un preset). La visibilità segue la dashboard: una chiave API risolve i preset del proprio utente più quelli condivisi dal proprietario del team di quell'utente, mentre una chiave di servizio del team risolve i preset del proprietario.
GET https://obfuscator.io/api/v1/presets/vm-default
GET https://obfuscator.io/api/v1/presets/production
| Stato | Significato |
|---|---|
| 200 | Il preset. |
| 400 | Il nome non è valido (da 1 a 20 caratteri, lettere a-z, cifre, trattini o underscore, e deve iniziare con una lettera o una cifra), oppure la version non è supportata. |
| 401 | Chiave API mancante, non valida o scaduta. |
| 403 | Account sospeso, nessun abbonamento attivo oppure un piano senza accesso API. |
| 404 | Non esiste alcun preset integrato con questo nome nella versione richiesta, e nessun preset personalizzato con questo alias è visibile alla chiave. |
| 429 | Limite di frequenza raggiunto; la richiesta condivide i budget per utente e per IP descritti in Limiti ed errori. |
| 500 | La ricerca del preset non è riuscita sul server. Riprova più tardi. |
Gli errori hanno la forma {"error": "..."}. Gli esempi d'uso per il pacchetto javascript-obfuscator e la relativa CLI si trovano in Utilizzo del pacchetto NPM.
Quota
GET https://obfuscator.io/api/v1/quota
Restituisce quanto utilizzo resta al tuo piano, così una build può verificare che un insieme di file ci stia prima di iniziare, invece di fallire a metà. Invia la stessa intestazione Authorization: Bearer. La risposta è un singolo oggetto JSON, non uno stream, e la richiesta stessa non conta ai fini dell'utilizzo.
remainingBytes: quanto puoi ancora usare in questo momento, ovvero il valore minore tra ciò che resta oggi e ciò che resta questo mese.nullquando il tuo piano non ha limiti.minBytesPerBuild: il minimo conteggiato per una singola build.dailyemonthly: i byte usati e il limite di ciascuna finestra, oppurenullquando il tuo piano non prevede quel limite.resetsAtindica quando la finestra ricomincia, in ISO 8601 UTC: la finestra giornaliera alle 00:00 UTC, quella mensile ogni mese alla tua data di fatturazione.- In un team, la chiave di un membro riporta l'utilizzo mensile condiviso del team e l'utilizzo giornaliero del membro stesso. Una chiave di servizio del team riporta quello del proprietario del team.
Per ogni build si conteggia la dimensione del sorgente in byte (UTF-8), una sola volta, indipendentemente dalle opzioni usate, e almeno minBytesPerBuild. La dimensione dell'output non conta. Per un file HTML elaborato con parseHtml, contano solo gli script selezionati per l'offuscamento. Somma le build che stai per eseguire e confronta il totale con remainingBytes.
Quando una build viene rifiutata perché un limite è esaurito, il messaggio error dello stream contiene un errorCode:
errorCode | Significato |
|---|---|
dailyLimit | Il limite giornaliero è esaurito. Riprova dopo daily.resetsAt. |
monthlyLimit | Il limite mensile è esaurito. Riprova dopo monthly.resetsAt, oppure passa a un piano superiore. |
usageCheckFailed | Non è stato possibile verificare l'utilizzo. Riprova a breve. |
Questi tre codici sono stabili. Anche altri errori possono contenere un errorCode; non farci affidamento.
| Stato | Significato |
|---|---|
| 200 | La quota. |
| 401 | Chiave API mancante, non valida o scaduta. |
| 403 | Account sospeso, nessun abbonamento attivo oppure un piano senza accesso API. |
| 429 | Limite di frequenza raggiunto; la richiesta condivide i budget per utente e per IP descritti in Limiti ed errori. |
| 500 | Non è stato possibile leggere l'utilizzo. Riprova più tardi. |
Limiti ed errori
I limiti del piano si applicano alla dimensione del sorgente e all'utilizzo. Mantieni l'intero corpo JSON serializzato, inclusi l'escaping e le opzioni, sotto 4.4 MB. I sorgenti più grandi richiedono caricamenti temporanei, disponibili con Team e Business solo tramite il pacchetto javascript-obfuscator. Controlla i limiti e l'utilizzo attuali nella dashboard o con l'endpoint della quota. Solo le build che restituiscono codice offuscato contano ai fini dell'utilizzo; una richiesta che termina con un errore non conta.
L'API consente 30 richieste al minuto per utente, condivise tra le sue chiavi, e 100 richieste al minuto per IP. Le richieste dei preset e della quota rientrano negli stessi budget delle richieste di offuscamento.
Il superamento del limite di frequenza, l'esaurimento della quota e gli stream interrotti devono fermare la build. Ripeti le richieste in modo consapevole: una richiesta ripetuta può consumare ulteriore utilizzo. Non pubblicare output parziali.
