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. 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ç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.

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.

Testes e CI