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

options wymienia same opcje; nazwa presetu w optionsPreset nie jest stosowana. Aby zbudować kod z presetem, wbudowanym lub własnym, pobierz jego opcje z endpointu presetów w osobnym żądaniu i wyślij je jako options.

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.

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 swojego planu sprawdzisz w panelu.

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 presetów 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