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, 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ç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.
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.
remainingBytes: o que você ainda pode usar agora, o menor valor entre o que resta hoje e o que resta neste mês.nullquando o seu plano não tem limite.minBytesPerBuild: o mínimo contabilizado por um único build.dailyemonthly: os bytes usados e o limite de cada janela, ounullquando 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:
errorCode | Significado |
|---|---|
dailyLimit | O limite diário se esgotou. Tente novamente depois de daily.resetsAt. |
monthlyLimit | O limite mensal se esgotou. Tente novamente depois de monthly.resetsAt ou faça upgrade do seu plano. |
usageCheckFailed | Nã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.
| Status | Significado |
|---|---|
| 200 | A cota. |
| 401 | Chave de API ausente, inválida ou expirada. |
| 403 | Conta suspensa, nenhuma assinatura ativa ou um plano sem acesso à API. |
| 429 | Limite de taxa atingido; a requisição compartilha as cotas por usuário e por IP descritas em Limites e falhas. |
| 500 | Nã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.
