Загружаю файл…
Что проверяем
Анализирую приложение…
Обфускация
Обнаружение угроз
Целостность
Подготовка…
Приложение защищено
Что изменилось
Подпись приложения
Authorization: Bearer csk_…
· Каждый ключ привязан к аккаунту и видит только ваши задачи.
https://87-199-206-120.nip.io
/v1/protect
Загрузить APK
/v1/jobs/{id}
Ждать готовности
…/download
Скачать результат
/v1/protect
Отправить APK на защиту
/v1/jobs/{id} для получения результата.apkfileAPK-файл обяз.optionsJSONПараметры защиты (см. справочник)keystorefileKeystore для подписи (.jks/.p12)keystore_passwordstringПароль от keystorekeystore_aliasstringАлиас ключаcurl -X POST https://87-199-206-120.nip.io/v1/protect \
-H "Authorization: Bearer $KEY" \
-F "apk=@myapp.apk" \
-F 'options={"encryptStrings":true,"renameClasses":true}'
{
"job_id": "xK9mP2qR...",
"status": "queued",
"poll_url": "/v1/jobs/xK9mP2qR...",
"created_at": "2026-08-10T12:00:00.000Z"
}
/v1/jobs/{id}
Статус задачи
status не станет done или failed.curl https://87-199-206-120.nip.io/v1/jobs/xK9mP2qR... \ -H "Authorization: Bearer $KEY"
{
"job_id": "xK9mP2qR...",
"status": "done",
"download_url": "/v1/jobs/xK9mP2qR.../download",
"mapping_url": "/v1/jobs/xK9mP2qR.../mapping",
"created_at": "2026-08-10T12:00:00.000Z",
"updated_at": "2026-08-10T12:02:14.000Z"
}
download_url и mapping_url доступныerror содержит причину/v1/jobs/{id}/download
Скачать защищённый APK
302 редирект на файл. Флаг -L в curl следует редиректам автоматически.curl -L https://87-199-206-120.nip.io/v1/jobs/xK9mP2qR.../download \ -H "Authorization: Bearer $KEY" \ -o protected.apk
/v1/jobs/{id}/mapping
Скачать mapping.txt
curl -L https://87-199-206-120.nip.io/v1/jobs/xK9mP2qR.../mapping \ -H "Authorization: Bearer $KEY" \ -o mapping.txt
/v1/jobs
Список задач
curl https://87-199-206-120.nip.io/v1/jobs \ -H "Authorization: Bearer $KEY"
renameClassestrueПереименование классовrenameMemberstrueПереименование методов и полейencryptStringstrueШифрование строковых литераловrenameResourcestrueПереименование ресурсовhideLayoutsfalseСкрыть XML-разметку (codegen)encryptUiTextfalseШифрование UI-текстовstripCommentsfalseУдалить debug-директивыaddJunkfalseДобавить junk-ресурсы и шумpinDextrueПинировать DEX-чексумму (по умолчанию включено)pinSigningCertfalseПинировать сертификат подписиpinLibfalseВзаимная проверка DEX ↔ .soimport time, requests
KEY = "csk_ваш_ключ"
BASE = "https://87-199-206-120.nip.io"
HDR = {"Authorization": f"Bearer {KEY}"}
with open("app.apk", "rb") as f:
r = requests.post(f"{BASE}/v1/protect", headers=HDR,
files={"apk": f},
data={"options": '{"encryptStrings":true}'})
job_id = r.json()["job_id"]
while True:
s = requests.get(f"{BASE}/v1/jobs/{job_id}", headers=HDR).json()
if s["status"] == "done": break
if s["status"] == "failed": raise RuntimeError(s.get("error"))
time.sleep(5)
resp = requests.get(f"{BASE}/v1/jobs/{job_id}/download",
headers=HDR, allow_redirects=True)
open("protected.apk", "wb").write(resp.content)
if s.get("mapping_url"):
m = requests.get(f"{BASE}{s['mapping_url']}",
headers=HDR, allow_redirects=True)
open("mapping.txt", "wb").write(m.content)
X-Cryptor-Signature: sha256=<hmac> — верифицируйте на стороне сервера.
Используйте токены для вызова Cryptor API из GitHub Actions, скриптов и других CI/CD инструментов без браузера.