Документация
/

Справочник API

Справочник API

Для сборок через CLI и Node.js используйте публичный пакет javascript-obfuscator. Он сам обрабатывает потоковые ответы и загрузку больших файлов. REST-клиенты, работающие с API напрямую, должны реализовать описанный ниже протокол.

Смотреть

Using the Obfuscator.io API: API Keys, npm Package, CLI and Custom Presets

Смотреть на YouTube

Создайте API-ключ в разделе Настройки → API-ключи. Для этого нужен тариф Pro, Team или Business. Храните ключ на своём сервере или в хранилище секретов CI и никогда не помещайте его в браузерный код. Пакет javascript-obfuscator принимает ключ в параметре apiToken (--pro-api-token в CLI); прямой REST-запрос передаёт его в заголовке Authorization: Bearer. На тарифе Team или Business владелец команды может отметить Сервисный ключ команды в диалоге Создать API-ключ; такой ключ принадлежит команде, а не конкретному человеку, поэтому продолжает работать после ухода участников.

API-ключи · Использование NPM-пакета

Запрос

POST https://obfuscator.io/api/v1/obfuscate

Отправьте JSON с полями code и options. Включите хотя бы одну функцию Pro: vmObfuscation: true или parseHtml: true. Для воспроизводимых сборок зафиксируйте параметр запроса version; без него используется последняя версия. Параметр принимает точную версию, например 8.0.0, или диапазон: ^8.0.0 следует за новыми минорными и патч-релизами 8.x, ~8.0.0 - за патч-релизами 8.0.x, а диапазон разрешается в наибольший подходящий релиз. Диапазоны доступны только на тарифе Team или Business.

options перечисляет сами опции; имя пресета в optionsPreset не применяется. Чтобы собрать код с пресетом, встроенным или пользовательским, получите его опции из эндпоинта пресетов отдельным запросом и отправьте их в options.

Если владелец команды принудительно задаёт версию или пресет, они заменяют version или options из запроса для участников команды и сервисных ключей команды. См. Принудительная версия для команды и Общие пресеты.

ЗаголовокЗначение
Content-Typeapplication/json
AuthorizationBearer YOUR_API_KEY

Код

Ответ

Читайте тело ответа как JSON с разделением по строкам (NDJSON). Одна сетевая операция чтения может разрезать строку JSON или символ UTF-8. Сообщение о прогрессе не означает завершения: дождитесь сообщения result или chunk_end и сохраните warnings.

Небольшой результат приходит одним сообщением result. Большой результат приходит сообщениями chunk, за которыми следует chunk_end. Оба завершающих сообщения содержат version - конкретную версию обфускатора, которая создала результат (это полезно, если вы запросили диапазон или команда принудительно задаёт версию). warnings перечисляет нефатальные предупреждения обфускации в виде { type, message, functionName? } и отсутствует, если предупреждений нет, поэтому считайте отсутствующее поле пустым списком. Source maps не создаются для VM-сборок и для HTML на входе. Сборка parseHtml обычного JavaScript с sourceMap: true возвращает карту в поле sourceMap завершающего сообщения или, если она большая, чанками sourceMap.

Ошибки приложения приходят внутри потока как сообщения error, обычно при HTTP-статусе 200. Проверяйте и HTTP-статус, и ошибки в потоке. Инфраструктура и эндпоинты загрузки могут возвращать HTTP-ответы с кодом вне диапазона 2xx.

Код

Код

JSON

Node.js (.mjs)

JavaScript

Код

Пресеты

GET https://obfuscator.io/api/v1/presets/{name}

Возвращает опции пресета, которые можно сразу передать как options запроса на обфускацию. Передайте тот же заголовок Authorization: Bearer. Имя сравнивается без учёта регистра, а ответ - один JSON-объект, а не поток. Примеры ниже сокращены.

  • Встроенные пресеты: {name} - встроенный пресет, например vm-default (см. Выбор пресета). Параметр запроса version выбирает версию обфускатора, пресет которой возвращается; он принимает те же значения, что и эндпоинт обфускации, и по умолчанию указывает на последнюю версию. description и updatedAt равны null.
  • Пользовательские пресеты: {name} - псевдоним для API, заданный в диалоге сохранения пользовательского пресета в панели управления, а options - сохранённая конфигурация (все опции, а не только изменённые относительно пресета). Видимость такая же, как в панели управления: API-ключ находит собственные пресеты своего пользователя и пресеты, которыми поделился владелец его команды, а сервисный ключ команды находит пресеты владельца.

GET https://obfuscator.io/api/v1/presets/vm-default

JSON

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

JSON

СтатусЗначение
200Пресет.
400Некорректное имя (от 1 до 20 символов: латинские буквы a-z, цифры, дефисы или подчёркивания; первым символом должна быть буква или цифра) или неподдерживаемая version.
401API-ключ отсутствует, недействителен или истёк.
403Аккаунт заблокирован, нет активной подписки или тариф не включает доступ к API.
404Встроенного пресета с таким именем в запрошенной версии нет, и пользовательский пресет с таким псевдонимом недоступен для этого ключа.
429Превышен лимит частоты запросов; запрос расходует общие лимиты на пользователя и на IP, описанные в разделе Лимиты и сбои.
500Поиск пресета завершился ошибкой на сервере. Повторите попытку позже.

Ошибки возвращаются в виде {"error": "..."}. Примеры использования пакета javascript-obfuscator и его CLI приведены в разделе Использование NPM-пакета.

Лимиты и сбои

Лимиты тарифа распространяются на размер исходного кода и на объём использования. Всё сериализованное JSON-тело, включая экранирование и опции, должно быть меньше 4.4 МБ. Для более крупного исходного кода нужна временная загрузка файлов, доступная на тарифах Team и Business только через пакет javascript-obfuscator. Текущие лимиты своего тарифа смотрите в панели управления.

API допускает 30 запросов в минуту на пользователя (общий лимит для всех его ключей) и 100 запросов в минуту с одного IP-адреса. Запросы пресетов расходуют те же лимиты, что и запросы на обфускацию.

Превышение лимита частоты запросов, исчерпание квоты и прерванный поток должны останавливать сборку. Повторяйте запросы осознанно: повторный запрос может расходовать квоту заново. Не публикуйте неполный результат.

Тестирование и CI