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, 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łó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.
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.
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.dailyimonthly: wykorzystane bajty i limit każdego okresu albonull, gdy Twój plan nie ma takiego limitu.resetsAtto 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:
errorCode | Znaczenie |
|---|---|
dailyLimit | Dzienny limit został wyczerpany. Ponów próbę po daily.resetsAt. |
monthlyLimit | Miesięczny limit został wyczerpany. Ponów próbę po monthly.resetsAt lub przejdź na wyższy plan. |
usageCheckFailed | Nie 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.
| Status | Znaczenie |
|---|---|
| 200 | Stan limitu użycia. |
| 401 | Brak klucza API albo klucz jest nieprawidłowy lub wygasł. |
| 403 | Konto zawieszone, brak aktywnej subskrypcji lub plan bez dostępu do API. |
| 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 | Nie 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.
