Documentação
/

Referência da API

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

Assistir no YouTube

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, diretamente ou por meio de uma predefinição. 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 pode indicar uma predefinição em vez de listar todas as opções: defina optionsPreset como uma predefinição integrada, como vm-default (veja Escolhendo predefinições), ou como o alias da API de uma predefinição personalizada. Uma predefinição integrada é aplicada conforme a versão do ofuscador solicitada a define, e um alias é resolvido com a mesma visibilidade do endpoint de predefinições. A predefinição é a base, e todas as outras opções da requisição a substituem. Um nome que não seja nenhum dos dois faz a requisição falhar com um erro.

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çalhoValor
Content-Typeapplication/json
AuthorizationBearer YOUR_API_KEY

Código

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.

Código

Código

JSON

Node.js (.mjs)

JavaScript

Código

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, como vm-default (veja Escolhendo predefinições). O parâmetro de query version seleciona 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. description e updatedAt são null.
  • Predefinições personalizadas: {name} é o alias da API definido no diálogo de salvamento de uma predefinição personalizada no painel, e options é 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

JSON

GET https://obfuscator.io/api/v1/presets/production

JSON

StatusSignificado
200A predefinição.
400O 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.
401Chave de API ausente, inválida ou expirada.
403Conta suspensa, nenhuma assinatura ativa ou um plano sem acesso à API.
404Nenhuma predefinição integrada com esse nome na versão solicitada e nenhuma predefinição personalizada com esse alias visível para a chave.
429Limite de taxa atingido; a requisição compartilha as cotas por usuário e por IP descritas em Limites e falhas.
500A 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.

Cota

GET https://obfuscator.io/api/v1/quota

Retorna quanto uso ainda resta no seu plano, para que um build possa verificar se um conjunto de arquivos cabe antes de começar, em vez de falhar no meio do caminho. Envie o mesmo cabeçalho Authorization: Bearer. A resposta é um único objeto JSON, não um stream, e a própria requisição não conta para o uso.

JSON

  • remainingBytes: o que você ainda pode usar agora, o menor valor entre o que resta hoje e o que resta neste mês. null quando o seu plano não tem limite.
  • minBytesPerBuild: o mínimo contabilizado por um único build.
  • daily e monthly: os bytes usados e o limite de cada janela, ou null quando o seu plano não tem esse limite. resetsAt é quando a janela recomeça, em ISO 8601 UTC: a janela diária às 00:00 UTC e a janela mensal na sua data de cobrança, todo mês.
  • Em uma equipe, a chave de um membro informa o uso mensal compartilhado da equipe e o uso diário do próprio membro. Uma chave de serviço da equipe informa o uso do proprietário da equipe.

Cada build contabiliza o tamanho do seu código-fonte em bytes (UTF-8), uma única vez, quaisquer que sejam as opções usadas, e no mínimo minBytesPerBuild. O tamanho da saída não conta. Para um arquivo HTML processado com parseHtml, contam apenas os scripts selecionados para ofuscação. Some os builds que você está prestes a executar e compare o total com remainingBytes.

Quando um build é recusado porque um limite se esgotou, a mensagem error do stream traz um errorCode:

JSON

errorCodeSignificado
dailyLimitO limite diário se esgotou. Tente novamente depois de daily.resetsAt.
monthlyLimitO limite mensal se esgotou. Tente novamente depois de monthly.resetsAt ou faça upgrade do seu plano.
usageCheckFailedNão foi possível verificar o uso. Tente novamente em instantes.

Esses três códigos são estáveis. Outros erros também podem trazer um errorCode; não dependa dele.

StatusSignificado
200A cota.
401Chave de API ausente, inválida ou expirada.
403Conta suspensa, nenhuma assinatura ativa ou um plano sem acesso à API.
429Limite de taxa atingido; a requisição compartilha as cotas por usuário e por IP descritas em Limites e falhas.
500Não foi possível ler o uso. Tente novamente mais tarde.

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 seus limites e seu uso atuais no painel ou com o endpoint de cota. Somente builds que retornam código ofuscado contam para o uso; uma requisição que termina em erro não conta.

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 aos endpoints de predefinições e de cota contam nos mesmos limites 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.

Testes e CI