Referência da API
Use o pacote público javascript-obfuscator para builds pela CLI e pelo Node.js. Ele cuida do streaming e de uploads grandes. Clientes REST diretos precisam implementar o protocolo abaixo.
Assistir
Using the Obfuscator.io API: API Keys, npm Package, CLI and Custom Presets
Crie uma chave de API em Configurações → Chaves de API. É necessário acesso Pro, Team ou Business. Guarde a chave no seu servidor ou nos segredos do CI, nunca no código do navegador. O pacote javascript-obfuscator recebe a chave como apiToken (--pro-api-token na CLI); uma requisição REST direta a envia no cabeçalho Authorization: Bearer. Em um plano Team ou Business, o proprietário da equipe pode marcar Chave de serviço da equipe no diálogo Criar chave de API; essa chave pertence à equipe, e não a uma pessoa, então continua funcionando quando membros saem.
Chaves de API · Usando o pacote NPM
Requisição
POST https://obfuscator.io/api/v1/obfuscate
Envie um JSON com code e options. Ative pelo menos um recurso Pro: vmObfuscation: true ou parseHtml: true. Fixe o parâmetro de query version para ter builds reproduzíveis; se ele for omitido, a versão mais recente é usada. Ele aceita uma versão exata, como 8.0.0, ou um intervalo: ^8.0.0 acompanha as novas versões minor e patch da 8.x, ~8.0.0 acompanha as versões patch da 8.0.x, e um intervalo resolve para a versão mais alta correspondente. Os intervalos exigem um plano Team ou Business.
options lista as próprias opções; um nome de predefinição em optionsPreset não é aplicado. Para fazer um build com uma predefinição, integrada ou personalizada, busque as opções dela no endpoint de predefinições em uma requisição separada e envie-as como options.
Se o proprietário da equipe forçar uma versão ou uma predefinição, ela substitui a version ou as options da requisição para os membros da equipe e para as chaves de serviço da equipe. Veja Forçar uma versão para a sua equipe e Predefinições compartilhadas.
| Cabeçalho | Valor |
|---|---|
Content-Type | application/json |
Authorization | Bearer YOUR_API_KEY |
Resposta
Leia o corpo como JSON delimitado por quebras de linha (NDJSON). Uma leitura de rede pode dividir uma linha JSON ou um caractere UTF-8. Progresso não é conclusão: exija uma mensagem result ou chunk_end e guarde os warnings.
Uma saída pequena chega em uma única mensagem result. Uma saída grande chega como mensagens chunk seguidas de chunk_end. As duas mensagens finais trazem version, a versão concreta do ofuscador que produziu a saída (útil quando você solicitou um intervalo ou quando a equipe força uma versão). warnings lista os avisos não fatais da ofuscação como { type, message, functionName? } e é omitido quando não há nenhum, então trate um campo ausente como uma lista vazia. Source maps não são gerados para builds com VM nem para entrada HTML. Um build parseHtml de JavaScript puro com sourceMap: true retorna um no campo sourceMap da mensagem final, ou como chunks sourceMap quando ele é grande.
Falhas da aplicação chegam como mensagens error dentro do stream, normalmente com HTTP 200. Verifique tanto o status HTTP quanto os erros enviados no stream. Os endpoints de infraestrutura e de upload podem retornar respostas HTTP diferentes de 2xx.
Node.js (.mjs)
Predefinições
GET https://obfuscator.io/api/v1/presets/{name}
Retorna as opções de uma predefinição, prontas para serem enviadas como options da requisição de ofuscação. Envie o mesmo cabeçalho Authorization: Bearer. O nome é comparado sem diferenciar maiúsculas de minúsculas, e a resposta é um único objeto JSON, não um stream. Os exemplos abaixo estão abreviados.
- Predefinições integradas:
{name}é uma predefinição integrada, comovm-default(veja Escolhendo predefinições). O parâmetro de queryversionseleciona a versão do ofuscador cuja predefinição é retornada; ele aceita os mesmos valores que o endpoint de ofuscação e, por padrão, usa a versão mais recente.descriptioneupdatedAtsãonull. - Predefinições personalizadas:
{name}é o alias da API definido no diálogo de salvamento de uma predefinição personalizada no painel, eoptionsé a configuração salva (todas as opções, não apenas as alteradas em relação a uma predefinição). A visibilidade segue o painel: uma chave de API resolve as predefinições do próprio usuário e as compartilhadas pelo proprietário da equipe desse usuário, e uma chave de serviço da equipe resolve as predefinições do proprietário.
GET https://obfuscator.io/api/v1/presets/vm-default
GET https://obfuscator.io/api/v1/presets/production
| Status | Significado |
|---|---|
| 200 | A predefinição. |
| 400 | O nome está malformado (1-20 caracteres, letras a-z, dígitos, hifens ou sublinhados, começando com uma letra ou um dígito), ou a version não é suportada. |
| 401 | Chave de API ausente, inválida ou expirada. |
| 403 | Conta suspensa, nenhuma assinatura ativa ou um plano sem acesso à API. |
| 404 | Nenhuma predefinição integrada com esse nome na versão solicitada e nenhuma predefinição personalizada com esse alias visível para a chave. |
| 429 | Limite de taxa atingido; a requisição compartilha as cotas por usuário e por IP descritas em Limites e falhas. |
| 500 | A busca da predefinição falhou no servidor. Tente novamente mais tarde. |
Os erros têm o formato {"error": "..."}. Exemplos de uso com o pacote javascript-obfuscator e a CLI dele estão em Usando o pacote NPM.
Limites e falhas
Os limites do plano se aplicam ao tamanho do código-fonte e ao uso. Mantenha o corpo JSON serializado completo, incluindo escapes e opções, abaixo de 4.4 MB. Códigos-fonte maiores precisam de uploads temporários, que estão disponíveis nos planos Team e Business somente pelo pacote javascript-obfuscator. Confira os limites atuais do seu plano no painel.
A API permite 30 requisições por minuto por usuário, compartilhadas entre as chaves dele, e 100 requisições por minuto por IP. As requisições de predefinições contam nas mesmas cotas que as requisições de ofuscação.
Limites de taxa, falhas de cota e streams interrompidos devem interromper o build. Tente novamente de forma deliberada; uma requisição repetida pode consumir uso adicional. Não publique saídas parciais.
