# Kaspersky MLAD: Исользование внутреннего API

### <span style="mso-ascii-font-family: Arial; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Arial; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Arial; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: Arial; mso-bidi-theme-font: minor-latin; color: windowtext;"><span style="mso-list: Ignore;">1.<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-ascii-font-family: Arial; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Arial; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: Arial; mso-bidi-theme-font: minor-latin; color: windowtext;">Назначение документа</span>

<span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">Данный документ описывает процесс подключения к внутреннему </span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-ansi-language: EN-US; mso-fareast-language: RU;">API</span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;"> </span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-ansi-language: EN-US; mso-fareast-language: RU;">Kaspersky</span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;"> </span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-ansi-language: EN-US; mso-fareast-language: RU;">MLAD</span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;"> </span><span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">для получения данных (значения тегов, информацию об инцидентах и артефакты работы моделей).</span>

### <span style="mso-ascii-font-family: Arial; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Arial; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Arial; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: Arial; mso-bidi-theme-font: minor-latin; color: windowtext;">2.<span style="font: 7.0pt 'Times New Roman';"> </span></span><span style="mso-ascii-font-family: Arial; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Arial; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: Arial; mso-bidi-theme-font: minor-latin; color: windowtext;">Общая информация</span>

<span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">На момент написания данной инструкции в </span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-ansi-language: EN-US; mso-fareast-language: RU;">Kaspersky</span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;"> </span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-ansi-language: EN-US; mso-fareast-language: RU;">MLAD</span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;"> </span><span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">не реализован официальный внешний </span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-ansi-language: EN-US; mso-fareast-language: RU;">API</span><span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">, через который можно было бы забирать данные во внешние системы. Тем не менее в системе присутствует </span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-ansi-language: EN-US; mso-fareast-language: RU;">API</span><span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">, используемый внутренними сервисами, к которому так же можно подключиться извне.</span>

<p class="callout warning"><span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">ВНИМАНИЕ: Описываемый в данном документе механизм подключения не является официальным функционалом </span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-ansi-language: EN-US; mso-fareast-language: RU;">Kaspersky</span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;"> </span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-ansi-language: EN-US; mso-fareast-language: RU;">MLAD</span><span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">, и производитель не несет ответственности при его использовании для коммуникации с внешними системами.</span></p>

### <span style="mso-ascii-font-family: Arial; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Arial; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: Arial; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: Arial; mso-bidi-theme-font: minor-latin; color: windowtext;">3.<span style="font: 7.0pt 'Times New Roman';"> </span></span><span style="mso-ascii-font-family: Arial; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Arial; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: Arial; mso-bidi-theme-font: minor-latin; color: windowtext;">Конфигурация</span>

[![image.png](https://www.ics-community.ru/uploads/images/gallery/2026-09/scaled-1680-/5uOimage.png)](https://www.ics-community.ru/uploads/images/gallery/2026-09/5uOimage.png)

<span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">Таким образом, для подключения необходимых данных нужно отправить соответствующий запрос на нужный эндпоинт </span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-ansi-language: EN-US; mso-fareast-language: RU;">API</span><span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">.</span>

<span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">Ниже будут приведены примеры скриптов </span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-ansi-language: EN-US; mso-fareast-language: RU;">python</span><span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;"> для подобных запросов. Но перед этим потребуется несколько предварительных шагов.</span>

##### **<span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">Извлечение хеша пароля</span>**

<span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">Пароль передается в хешированном виде, поэтому для его получения потребуются дополнительные действия, но только один раз (при условии, что пароль не меняется).</span>

<span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">Предположим, что у нас есть некий пользователь, от лица которого будут выполняться запросы. Порядок действий следующий:</span>

> <span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">- Открываем страницу логина в MLAD  
> \- Открываем "инструменты разработчика / developer tools" (F12 или правой кнопкой мыши в любом месте страницы -&gt; "Просмотреть код / Inspect")  
> \- В инструментах разработчика открываем вкладку "Network" / "Сеть"  
> \- Вверху вкладки ставим "галочку" "Preserve log", иначе не увидите нужных запросов  
> \- Авторизуемся под нашим пользователем  
> \- Ищем в логе запрос авторизации (/api/authorize/)  
> \- В "payload" будет искомый нами пароль, который мы можем использовать для авторизации в вызывающем API "скрипте".  
> \- Пароль будет в виде хеша, например: "7DFcwe0I6Ult8w422gQgWg2TPUXKPYXlkRFlWvhkrPKAs8kfWcInbHo7UYiKMVYUa/rHQ7K7GtEvP8S2ZLJQAw=="  
> \- Используем этот хеш в переменной ‘USER\_PASSWORD’в основном скрипте  
> </span>

##### **<span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">Поиск нужных </span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-ansi-language: EN-US; mso-fareast-language: RU;">UUID</span>**

<span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">Нужные нам </span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-ansi-language: EN-US; mso-fareast-language: RU;">UUID</span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;"> </span><span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">моделей и вообще любых элементов можно посмотреть в веб-интерфейсе </span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-ansi-language: EN-US; mso-fareast-language: RU;">MLAD</span><span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">.</span>

<span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">Выберите нужный предиктивный элемент в дереве проекта:</span>

[![image.png](https://www.ics-community.ru/uploads/images/gallery/2026-09/scaled-1680-/6msimage.png)](https://www.ics-community.ru/uploads/images/gallery/2026-09/6msimage.png)

<span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">После этого можно скопировать </span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-ansi-language: EN-US; mso-fareast-language: RU;">UUID</span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;"> </span><span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">из адресной строки:</span>

[![image.png](https://www.ics-community.ru/uploads/images/gallery/2026-09/scaled-1680-/Jkdimage.png)](https://www.ics-community.ru/uploads/images/gallery/2026-09/Jkdimage.png)

<span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">Аналогично, чтобы узнать номер нужного тега:</span>

[![image.png](https://www.ics-community.ru/uploads/images/gallery/2026-09/scaled-1680-/StAimage.png)](https://www.ics-community.ru/uploads/images/gallery/2026-09/StAimage.png)

##### <span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">**Запрос значений тегов и предиктов через** </span>**<span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-ansi-language: EN-US; mso-fareast-language: RU;">API</span>**

<span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">Ниже приведен пример скрипта для запроса значений тегов и артефактов работы моделей:</span>

> <div>\# импортируем нужные модули</div><div>import requests</div><div>import json</div><div>import logging</div><div>import time</div><div>from datetime import datetime</div><div>  
> </div><div>\# учетная запись пользователя, от имени которого происходит подключение</div><div>USER_EMAIL = test@admin.com</div><div>\# пароль в хешированном виде – см. инструкцию по извлечению хеша пароля выше</div><div>USER_PASSWORD = "z24y0qIWIn/zfnbI8YJlO3K+E38GcKtY8kRTyU2moNagGLUABgl9HeJrHWWblGdOE9cNmey2s3szM0Iy3v9l4w==" #hashed password</div><div>\# IP адрес или имя хоста Kaspersky MLAD</div><div>MLAD_HOST = "192.168.179.131"</div><div>  
> </div><div>requests.packages.urllib3.disable_warnings()</div><div>  
> </div><div>logging.basicConfig(</div><div> level=logging.INFO,</div><div> format='%(asctime)s - %(levelname)s - %(message)s',</div><div> datefmt='%Y-%m-%d %H:%M:%S'</div><div>)</div><div>logging.info(f"{20*'-'}START{20*'-'}")</div><div>  
> </div><div>auth_response = requests.post(</div><div>url=f'https://{MLAD_HOST}/api/authorize/',</div><div>json={</div><div>'username': USER_EMAIL,</div><div>'password': USER_PASSWORD,</div><div>},</div><div>verify=False,</div><div>)</div><div>logging.info(json.dumps(auth_response.json(), indent=4))</div><div>  
> </div><div>\# timestamp - момент времени, от которого все будет рассчитываться, задается в миллисекундах</div><div>\# для отправки запроса в реальном времени можно брать текущую метку времени:</div><div>\# int(time()*1000)</div><div>  
> </div><div>timestamp_string = '2026-03-12 12:00:00'</div><div>timestamp_format = '%Y-%m-%d %H:%M:%S'</div><div>timestamp_obj = datetime.strptime(timestamp_string, timestamp_format)</div><div>timestamp_ms = int(timestamp_obj.timestamp() * 1000)</div><div>logging.info(f'{timestamp_obj} = {timestamp_ms} ms')</div><div>  
> </div><div>\# period (ms)- Период, за который планируется достать данные из истории в миллисекундах. На странице истории выбирается из выпадающего списка.</div><div>\# если мы хотим значение за конкретную метку времени, то можно поставить значение значительно ниже дискретности, с которой приходят данные, например, 10мс</div><div>\# interval (ms) - интервал группировки (ресемпл) данных. Если данные приходят очень часто, то позволит группировать данные по окнам</div><div>\# Если мы хотим получать одно значение раз в 5 минут, но не знаем точные метки времени, можно отправлять запрос каждые (T&lt;5min) минут и указать период равный T. В таком случае будет возвращаться либо одно значение, либо ни одного.</div><div>\# timestamp_position - Позиционирование центра времени, т.к. timestamp - обычно `center` т.е. значения будут браться по обе стороны от него.</div><div>\# Т.е. если мы говорим "дай данные за 1 минуту", значит возьмутся 30 секунд до заданного timestamp и 30 секунд после. В целом можно не менять.</div><div>\# element_uuid_list - UUID элементов моделей, чьи артефакты необходимо получить наравне с тегами</div><div>  
> </div><div>request_data = {</div><div>'period': 300000,</div><div>'interval': 150000,</div><div>'tag_id_list': [76], # список с номерами тегов – можно посмотреть во вкладке Активы</div><div>'timestamp_position': 'center',</div><div>'timestamp': timestamp_ms,</div><div>\# element_uuid_list – список с UID моделей, из которых мы хотим брать предсказания для тегов из списка tag_id_list. Можно посмотреть в адресной строке браузера после выбора соответствующей модели в веб-интерфейсе – см инструкцию выше</div><div>'element_uuid_list': [</div><div>'ca6e5966-1c7f-11f1-8bb3-72a1019c5619'</div><div>],</div><div>}</div><div>  
> </div><div>history_data = requests.post(</div><div>url=f'https://{MLAD_HOST}/api/trends/',</div><div>json=request_data,</div><div>verify=False,</div><div>headers={</div><div>'Token': auth_response.json()['token'],</div><div>}</div><div>)</div><div>  
> </div><div>logging.info(json.dumps(history_data.json(), indent=4))</div><div>  
> </div><div>\# Пример вывода:</div><div>\# 2026-03-13 13:25:29 - INFO - 2026-03-12 12:00:00 = 1773306000000 ms</div><div>\# 2026-03-13 13:25:29 - INFO - {</div><div> # "REAL": {</div><div> # "76": [</div><div> # {</div><div> # "timestamp": 1773306080000000000,</div><div> # "y": 997.8019959509448</div><div> # }</div><div> # ]</div><div> # },</div><div> # "PRED": {</div><div> # "ca6e5966-1c7f-11f1-8bb3-72a1019c5619": {</div><div> # "76": [</div><div> # {</div><div> # "timestamp": 1773306080000000000,</div><div> # "y": 1002.8917846679688</div><div> # }</div><div> # ]</div><div> # }</div><div> # },</div><div> # "DIFF": {</div><div> # "ca6e5966-1c7f-11f1-8bb3-72a1019c5619": {</div><div> # "76": [</div><div> # {</div><div> # "timestamp": 1773306080000000000,</div><div> # "y": 0.002571807693983069</div><div> # }</div><div> # ],</div><div> # "ca6e5966-1c7f-11f1-8bb3-72a1019c5619": [</div><div> # {</div><div> # "timestamp": 1773306080000000000,</div><div> # "y": 0.6879152193599999</div><div> # }</div><div> # ]</div><div> # }</div><div> # },</div><div> # "tags_order": [</div><div> # 76</div><div> # ],</div><div> # "tag_independent": [</div><div> # "ca6e5966-1c7f-11f1-8bb3-72a1019c5619"</div><div> # ]</div><div>\# }</div><div>  
> </div><div>\#- REAL - Измеренные (реальные) значения по запрошенным тегам</div><div>\#- PRED - Предсказания значения тегов, сделанные конкретными элементами модели (сгруппированные по UUID элементам модели)</div><div>\#- DIFF - Артефакты элементов модели, так же сгруппированы по UUID элемента модели. Могут внутри содержать как артефакты по тегам, так и собственные</div><div>\#- RULE - Артефакты элементов типа "Правило"</div><div>\#- tags_order - порядок тегов, нужно для UI.</div><div>\#- tag_independent - перечисление всех артефактов, нужно для UI.</div><div>  
> </div><div>\#Некоторых ключей может не быть, если при заданных параметрах, не окажется данных.</div>

##### **<span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">Запрос инцидентов через </span><span lang="EN-US" style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-ansi-language: EN-US; mso-fareast-language: RU;">API</span>**

<span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">Пример кода для запроса инцидентов:</span>

> <span style="mso-bidi-font-size: 12.0pt; font-family: 'Segoe UI',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: #444444; mso-fareast-language: RU;">start\_date = datetime(2024, 1, 1, 0, 0, 0).isoformat()  
> end\_date = datetime(2024, 12, 31, 23, 59, 59).isoformat()  
> incidents = requests.get(  
>  f'https://mlad/api/incidents/external?start\_date={start\_date}&amp;end\_date={end\_date}',  
>  verify=False,  
>  headers={  
>  'Token': auth\_response.json()\['token'\],  
>  },  
> )  
> </span>