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
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łówek | Wartość |
|---|---|
Content-Type | application/json |
Authorization | Bearer YOUR_API_KEY |
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.
Node.js (.mjs)
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 jakvm-default(zobacz Wybór presetów). Parametr zapytaniaversionwybiera wersję obfuskatora, której preset zostanie zwrócony; przyjmuje te same wartości co endpoint obfuskacji, a domyślnie oznacza najnowszą wersję.descriptioniupdatedAtmają wartośćnull. - Własne presety:
{name}to alias API ustawiony w oknie zapisu własnego presetu w panelu, aoptionsto 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
GET https://obfuscator.io/api/v1/presets/production
| Status | Znaczenie |
|---|---|
| 200 | Preset. |
| 400 | Nazwa 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. |
| 401 | Brak klucza API albo klucz jest nieprawidłowy lub wygasł. |
| 403 | Konto zawieszone, brak aktywnej subskrypcji lub plan bez dostępu do API. |
| 404 | Brak wbudowanego presetu o tej nazwie w żądanej wersji i brak widocznego dla tego klucza własnego presetu o tym aliasie. |
| 429 | Przekroczono limit żądań; żądanie korzysta z tych samych limitów na użytkownika i na IP co opisane w sekcji Limity i błędy. |
| 500 | Wyszukiwanie 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.
