Dokumentacja
/

Dokumentacja API

Dokumentacja API

Do buildów z CLI i Node.js używaj publicznego pakietu javascript-obfuscator. Obsługuje on strumieniowanie i przesyłanie dużych plików. Klienci korzystający bezpośrednio z REST muszą zaimplementować poniższy protokół.

Obejrzyj

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

Obejrzyj na YouTube

Utwórz klucz API w Ustawienia → Klucze API. Wymagany jest dostęp Pro, Team lub Business. Przechowuj klucz na serwerze lub w sekretach CI, nigdy w kodzie przeglądarki. Pakiet javascript-obfuscator przyjmuje klucz jako apiToken (w CLI jako --pro-api-token); bezpośrednie żądanie REST wysyła go w nagłówku Authorization: Bearer. W planie Team lub Business właściciel zespołu może zaznaczyć Klucz serwisowy zespołu w oknie Utwórz klucz API; taki klucz należy do zespołu, a nie do konkretnej osoby, więc działa nadal po odejściu członków.

Klucze API · Korzystanie z pakietu NPM

Żądanie

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

Wyślij JSON z polami code i options. Włącz co najmniej jedną funkcję Pro: vmObfuscation: true lub parseHtml: true, bezpośrednio lub przez preset. Aby buildy były powtarzalne, przypnij wersję w parametrze zapytania version; jego pominięcie oznacza użycie najnowszej wersji. Parametr przyjmuje dokładną wersję, taką jak 8.0.0, albo zakres: ^8.0.0 śledzi nowe wydania minor i patch linii 8.x, ~8.0.0 śledzi wydania patch linii 8.0.x, a zakres wskazuje najwyższe pasujące wydanie. Zakresy wymagają planu Team lub Business.

Zamiast wymieniać wszystkie opcje, options może wskazać preset: ustaw optionsPreset na wbudowany preset, taki jak vm-default (zobacz Wybór presetów), albo na alias API własnego presetu. Wbudowany preset jest stosowany tak, jak definiuje go żądana wersja obfuskatora, a alias jest rozwiązywany z tą samą widocznością co w endpoincie presetów. Preset stanowi bazę, a każda inna opcja w żądaniu go nadpisuje. Nazwa, która nie jest ani jednym, ani drugim, kończy żądanie błędem.

Jeśli właściciel zespołu wymusza wersję lub preset, nadpisuje to version lub options żądania w przypadku członków zespołu i kluczy serwisowych zespołu. Zobacz Wymuszanie wersji w zespole i Udostępnione presety.

NagłówekWartość
Content-Typeapplication/json
AuthorizationBearer YOUR_API_KEY

Kod

Odpowiedź

Odczytuj treść odpowiedzi jako JSON rozdzielany znakami nowego wiersza (NDJSON). Pojedynczy odczyt z sieci może przeciąć wiersz JSON lub znak UTF-8. Postęp nie oznacza zakończenia: wymagaj komunikatu result lub chunk_end i zachowuj warnings.

Niewielki wynik przychodzi w pojedynczym komunikacie result. Duży wynik przychodzi jako komunikaty chunk, po których następuje chunk_end. Oba komunikaty końcowe zawierają version, czyli konkretną wersję obfuskatora, która wygenerowała wynik (przydatne, gdy żądasz zakresu lub zespół wymusza wersję). warnings wymienia niekrytyczne ostrzeżenia obfuskacji w postaci { type, message, functionName? } i jest pomijane, gdy ich nie ma, więc brak tego pola traktuj jak pustą listę. Mapy źródeł nie są generowane dla buildów VM ani dla wejścia HTML. Build parseHtml zwykłego JavaScriptu z sourceMap: true zwraca mapę w polu sourceMap komunikatu końcowego, a gdy jest duża - jako fragmenty sourceMap.

Błędy aplikacji przychodzą jako komunikaty error wewnątrz strumienia, zwykle ze statusem HTTP 200. Sprawdzaj zarówno status HTTP, jak i błędy w strumieniu. Endpointy infrastruktury i przesyłania mogą zwracać odpowiedzi HTTP spoza zakresu 2xx.

Kod

Kod

JSON

Node.js (.mjs)

JavaScript

Kod

Presety

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

Zwraca opcje presetu gotowe do wysłania jako options żądania obfuskacji. Wyślij ten sam nagłówek Authorization: Bearer. Nazwa jest dopasowywana bez rozróżniania wielkości liter, a odpowiedź to pojedynczy obiekt JSON, a nie strumień. Poniższe przykłady są skrócone.

  • Wbudowane presety: {name} to wbudowany preset, taki jak vm-default (zobacz Wybór presetów). Parametr zapytania version wybiera wersję obfuskatora, której preset zostanie zwrócony; przyjmuje te same wartości co endpoint obfuskacji, a domyślnie oznacza najnowszą wersję. description i updatedAt mają wartość null.
  • Własne presety: {name} to alias API ustawiony w oknie zapisu własnego presetu w panelu, a options to zapisana konfiguracja (wszystkie opcje, nie tylko te zmienione względem presetu). Widoczność jest taka sama jak w panelu: klucz API rozwiązuje własne presety swojego użytkownika oraz presety udostępnione przez właściciela jego zespołu, a klucz serwisowy zespołu rozwiązuje presety właściciela.

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

JSON

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

JSON

StatusZnaczenie
200Preset.
400Nazwa ma nieprawidłowy format (dozwolone jest 1-20 znaków, litery a-z, cyfry, myślniki i podkreślenia, zaczynając od litery lub cyfry) albo version nie jest obsługiwana.
401Brak klucza API albo klucz jest nieprawidłowy lub wygasł.
403Konto zawieszone, brak aktywnej subskrypcji lub plan bez dostępu do API.
404Brak wbudowanego presetu o tej nazwie w żądanej wersji i brak widocznego dla tego klucza własnego presetu o tym aliasie.
429Przekroczono limit żądań; żądanie korzysta z tych samych limitów na użytkownika i na IP co opisane w sekcji Limity i błędy.
500Wyszukiwanie presetu nie powiodło się po stronie serwera. Spróbuj ponownie później.

Błędy mają postać {"error": "..."}. Przykłady użycia pakietu javascript-obfuscator i jego CLI znajdziesz w Korzystanie z pakietu NPM.

Limit użycia

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

Zwraca, ile użycia zostało w Twoim planie, dzięki czemu build może przed startem sprawdzić, czy zestaw plików się zmieści, zamiast przerwać się w połowie. Wyślij ten sam nagłówek Authorization: Bearer. Odpowiedź to pojedynczy obiekt JSON, a nie strumień, a samo żądanie nie liczy się do użycia.

JSON

  • remainingBytes: ile możesz jeszcze wykorzystać w tej chwili, czyli mniejsza z dwóch wartości: tego, co zostało na dziś, i tego, co zostało na ten miesiąc. null, gdy Twój plan nie ma limitu.
  • minBytesPerBuild: najmniejsza wartość, jaka jest liczona za pojedynczy build.
  • daily i monthly: wykorzystane bajty i limit każdego okresu albo null, gdy Twój plan nie ma takiego limitu. resetsAt to moment, w którym okres zaczyna się od nowa, w formacie ISO 8601 UTC: okres dzienny o 00:00 UTC, okres miesięczny co miesiąc w dniu rozliczenia.
  • W zespole klucz członka zwraca wspólne miesięczne użycie zespołu i własne dzienne użycie tego członka. Klucz serwisowy zespołu zwraca użycie właściciela zespołu.

Do użycia liczy się rozmiar źródła builda w bajtach (UTF-8), jeden raz, niezależnie od użytych opcji, i co najmniej minBytesPerBuild. Rozmiar wyniku się nie liczy. W przypadku pliku HTML budowanego z parseHtml liczą się tylko skrypty wybrane do obfuskacji. Zsumuj buildy, które zamierzasz uruchomić, i porównaj sumę z remainingBytes.

Gdy build zostaje odrzucony z powodu wyczerpania limitu, komunikat error w strumieniu zawiera errorCode:

JSON

errorCodeZnaczenie
dailyLimitDzienny limit został wyczerpany. Ponów próbę po daily.resetsAt.
monthlyLimitMiesięczny limit został wyczerpany. Ponów próbę po monthly.resetsAt lub przejdź na wyższy plan.
usageCheckFailedNie udało się sprawdzić użycia. Ponów próbę za chwilę.

Te trzy kody są stabilne. Inne błędy także mogą zawierać errorCode; nie polegaj na nim.

StatusZnaczenie
200Stan limitu użycia.
401Brak klucza API albo klucz jest nieprawidłowy lub wygasł.
403Konto zawieszone, brak aktywnej subskrypcji lub plan bez dostępu do API.
429Przekroczono limit żądań; żądanie korzysta z tych samych limitów na użytkownika i na IP co opisane w sekcji Limity i błędy.
500Nie udało się odczytać użycia. Spróbuj ponownie później.

Limity i błędy

Limity planu dotyczą rozmiaru źródła i użycia. Cała serializowana treść JSON, wraz z escapowaniem i opcjami, musi mieścić się w 4.4 MB. Większe źródła wymagają tymczasowych uploadów, dostępnych w planach Team i Business wyłącznie przez pakiet javascript-obfuscator. Aktualne limity i użycie sprawdzisz w panelu lub za pomocą endpointu limitu użycia. Do użycia liczą się tylko buildy, które zwracają obfuskowany kod; żądanie zakończone błędem się nie liczy.

API pozwala na 30 żądań na minutę na użytkownika, wspólnie dla wszystkich jego kluczy, oraz 100 żądań na minutę na adres IP. Żądania do endpointów presetów i limitu użycia liczą się do tych samych limitów co żądania obfuskacji.

Przekroczenie limitu żądań, wyczerpanie limitu użycia i przerwane strumienie muszą zatrzymać build. Ponawiaj żądania świadomie; powtórzone żądanie może zużyć dodatkowy limit. Nie publikuj częściowego wyniku.

Testy i CI