Référence de l'API
Utilisez le paquet public javascript-obfuscator pour les builds en CLI et Node.js. Il gère le streaming et les envois volumineux. Les clients REST directs doivent implémenter le protocole ci-dessous.
Regarder
Using the Obfuscator.io API: API Keys, npm Package, CLI and Custom Presets
Créez une clé API dans Paramètres → Clés API. Un accès Pro, Team ou Business est requis. Conservez la clé sur votre serveur ou dans le coffre à secrets de votre CI, jamais dans du code exécuté par le navigateur. Le paquet javascript-obfuscator reçoit la clé via apiToken (--pro-api-token en CLI) ; une requête REST directe l'envoie dans l'en-tête Authorization: Bearer. Avec un forfait Team ou Business, le propriétaire de l'équipe peut cocher Clé de service de l'équipe dans la boîte de dialogue Créer une clé API ; cette clé appartient à l'équipe et non à une personne, et continue donc de fonctionner quand des membres partent.
Clés API · Utiliser le paquet NPM
Requête
POST https://obfuscator.io/api/v1/obfuscate
Envoyez du JSON contenant code et options. Activez au moins une fonctionnalité Pro : vmObfuscation: true ou parseHtml: true, directement ou via un préréglage. Épinglez le paramètre de requête version pour obtenir des builds reproductibles ; en son absence, la dernière version est utilisée. Il accepte une version exacte comme 8.0.0, ou une plage : ^8.0.0 suit les nouvelles versions mineures et correctives de 8.x, ~8.0.0 suit les versions correctives de 8.0.x, et une plage se résout vers la version la plus élevée qui correspond. Les plages nécessitent un forfait Team ou Business.
options peut nommer un préréglage au lieu d'énumérer chaque option : définissez optionsPreset sur un préréglage intégré comme vm-default (voir Choisir un préréglage) ou sur l'alias API d'un préréglage personnalisé. Un préréglage intégré est appliqué tel que le définit la version demandée de l'obfuscateur, et un alias est résolu avec la même visibilité que via le point de terminaison des préréglages. Le préréglage sert de base, et toute autre option de la requête le remplace. Un nom qui n'est ni l'un ni l'autre fait échouer la requête avec une erreur.
Si le propriétaire de l'équipe impose une version ou un préréglage, celui-ci remplace le version ou les options de la requête pour les membres de l'équipe et les clés de service de l'équipe. Voir Imposer une version à votre équipe et Préréglages partagés.
| En-tête | Valeur |
|---|---|
Content-Type | application/json |
Authorization | Bearer YOUR_API_KEY |
Réponse
Lisez le corps comme du JSON délimité par des sauts de ligne (NDJSON). Une lecture réseau peut couper une ligne JSON ou un caractère UTF-8. Une progression ne signifie pas la fin du traitement : exigez un message result ou chunk_end, et conservez les warnings.
Une petite sortie arrive dans un unique message result. Une sortie volumineuse arrive sous forme de messages chunk suivis de chunk_end. Les deux messages terminaux portent version, la version concrète de l'obfuscateur qui a produit la sortie (utile lorsque vous avez demandé une plage ou que l'équipe impose une version). warnings liste les avertissements d'obfuscation non bloquants sous la forme { type, message, functionName? } et est omis lorsqu'il n'y en a aucun ; traitez donc un champ absent comme une liste vide. Aucune source map n'est produite pour les builds VM ni pour une entrée HTML. Un build parseHtml de JavaScript simple avec sourceMap: true en renvoie une dans le champ sourceMap du message terminal, ou sous forme de fragments sourceMap lorsqu'elle est volumineuse.
Les échecs applicatifs arrivent sous forme de messages error dans le flux, généralement avec un HTTP 200. Vérifiez à la fois le statut HTTP et les erreurs transmises dans le flux. L'infrastructure et les points de terminaison d'envoi peuvent renvoyer des réponses HTTP autres que 2xx.
Node.js (.mjs)
Préréglages
GET https://obfuscator.io/api/v1/presets/{name}
Renvoie les options d'un préréglage, prêtes à être envoyées comme options de la requête d'obfuscation. Envoyez le même en-tête Authorization: Bearer. Le nom est comparé sans tenir compte de la casse, et la réponse est un unique objet JSON, pas un flux. Les exemples ci-dessous sont abrégés.
- Préréglages intégrés :
{name}est un préréglage intégré tel quevm-default(voir Choisir un préréglage). Le paramètre de requêteversionsélectionne la version de l'obfuscateur dont le préréglage est renvoyé ; il accepte les mêmes valeurs que le point de terminaison d'obfuscation et vaut par défaut la dernière version.descriptionetupdatedAtvalentnull. - Préréglages personnalisés :
{name}est l'alias API défini dans la boîte de dialogue d'enregistrement d'un préréglage personnalisé dans le tableau de bord, etoptionscontient la configuration enregistrée (toutes les options, pas seulement celles modifiées par rapport à un préréglage). La visibilité suit celle du tableau de bord : une clé API donne accès aux préréglages de son utilisateur ainsi qu'à ceux partagés par le propriétaire de son équipe, et une clé de service de l'équipe donne accès aux préréglages du propriétaire.
GET https://obfuscator.io/api/v1/presets/vm-default
GET https://obfuscator.io/api/v1/presets/production
| Statut | Signification |
|---|---|
| 200 | Le préréglage. |
| 400 | Le nom est mal formé (1 à 20 caractères, lettres a-z, chiffres, tirets ou tirets bas, en commençant par une lettre ou un chiffre), ou la version n'est pas prise en charge. |
| 401 | Clé API manquante, invalide ou expirée. |
| 403 | Compte suspendu, aucun abonnement actif, ou forfait sans accès à l'API. |
| 404 | Aucun préréglage intégré portant ce nom n'existe dans la version demandée, et aucun préréglage personnalisé portant cet alias n'est visible pour cette clé. |
| 429 | Limite de débit atteinte ; la requête partage les quotas par utilisateur et par IP décrits dans Limites et échecs. |
| 500 | La recherche du préréglage a échoué sur le serveur. Réessayez plus tard. |
Les erreurs ont la forme {"error": "..."}. Des exemples d'utilisation pour le paquet javascript-obfuscator et sa CLI figurent dans Utiliser le paquet NPM.
Quota
GET https://obfuscator.io/api/v1/quota
Renvoie l'utilisation qu'il reste à votre forfait, afin qu'un build puisse vérifier avant de démarrer qu'un ensemble de fichiers y tient, au lieu d'échouer en cours de route. Envoyez le même en-tête Authorization: Bearer. La réponse est un unique objet JSON, pas un flux, et la requête elle-même ne compte pas dans l'utilisation.
remainingBytes: ce que vous pouvez encore utiliser dès maintenant, soit la plus petite valeur entre ce qui reste aujourd'hui et ce qui reste ce mois-ci.nullquand votre forfait n'a pas de limite.minBytesPerBuild: le minimum décompté pour un seul build.dailyetmonthly: les octets utilisés et la limite de chaque fenêtre, ounullquand votre forfait n'a pas cette limite.resetsAtindique quand la fenêtre repart à zéro, en UTC au format ISO 8601 : la fenêtre quotidienne à 00:00 UTC, la fenêtre mensuelle à votre date de facturation chaque mois.- Dans une équipe, la clé d'un membre renvoie l'utilisation mensuelle partagée de l'équipe et l'utilisation quotidienne propre au membre. Une clé de service de l'équipe renvoie celle du propriétaire de l'équipe.
Un build est décompté selon la taille de son source en octets (UTF-8), une seule fois, quelles que soient les options utilisées, et au minimum minBytesPerBuild. La taille de la sortie ne compte pas. Pour un fichier HTML traité avec parseHtml, seuls les scripts sélectionnés pour l'obfuscation comptent. Additionnez les builds que vous vous apprêtez à lancer et comparez le total à remainingBytes.
Lorsqu'un build est refusé parce qu'une limite est épuisée, le message error du flux contient un errorCode :
errorCode | Signification |
|---|---|
dailyLimit | La limite quotidienne est épuisée. Réessayez après daily.resetsAt. |
monthlyLimit | La limite mensuelle est épuisée. Réessayez après monthly.resetsAt, ou passez à un forfait supérieur. |
usageCheckFailed | L'utilisation n'a pas pu être vérifiée. Réessayez dans un instant. |
Ces trois codes sont stables. D'autres erreurs peuvent aussi contenir un errorCode ; ne vous y fiez pas.
| Statut | Signification |
|---|---|
| 200 | Le quota. |
| 401 | Clé API manquante, invalide ou expirée. |
| 403 | Compte suspendu, aucun abonnement actif, ou forfait sans accès à l'API. |
| 429 | Limite de débit atteinte ; la requête partage les quotas par utilisateur et par IP décrits dans Limites et échecs. |
| 500 | L'utilisation n'a pas pu être lue. Réessayez plus tard. |
Limites et échecs
Les limites du forfait s'appliquent à la taille du source et à l'utilisation. Maintenez l'intégralité du corps JSON sérialisé, échappements et options compris, sous 4.4 Mo. Les sources plus volumineuses nécessitent des envois temporaires, disponibles avec les forfaits Team et Business uniquement via le paquet javascript-obfuscator. Consultez vos limites et votre utilisation actuelles dans le tableau de bord ou avec le point de terminaison du quota. Seuls les builds qui renvoient du code obfusqué comptent dans l'utilisation ; une requête qui se termine par une erreur ne compte pas.
L'API autorise 30 requêtes par minute et par utilisateur, réparties entre toutes ses clés, et 100 requêtes par minute et par IP. Les requêtes vers les points de terminaison des préréglages et du quota comptent dans les mêmes limites que les requêtes d'obfuscation.
Une limitation de débit, un dépassement de quota ou un flux interrompu doivent arrêter le build. Relancez de manière réfléchie : une requête répétée peut consommer davantage d'utilisation. Ne publiez pas de sortie partielle.
