Старший консультант компании «ДАР» (ГК «КОРУС Консалтинг») Илья Кербатов столкнулся с типичной для BI-разработчиков проблемой: в проекте с несколькими сотнями приложений Qlik Sense нужно быстро находить, где используется конкретное поле, тему оформления или комментарий в скрипте. Штатные средства Qlik Sense отдают метаданные по одному объекту или приложению за раз, а не срезом по всему серверу, а сторонний софт в изолированный контур заказчика не пронести. Встроенные средства не позволяли получить ответы на вопросы вроде «в каких приложениях используется это поле» без ручного перебора сотен приложений.
Решение пришло в виде браузерной панели «Kerbatov UI Qlik Downloader», которая выгружает метаданные Qlik Sense — скрипты загрузки, меры, измерения, переменные, листы, закладки, мастер-объекты и общую информацию — по одному приложению, потоку или всему серверу. Инструмент написан целиком моделью Claude Fable 5: из примерно тысячи строк кода Кербатов не набрал руками ни одной. Разработка заняла около шести часов и пятнадцати содержательных промптов. Код открыт и лежит на GitHub.
Ключевая техническая сложность возникла при подключении к движку Qlik Sense. Первая версия выгрузки превью листов просто зависала: promise в консоли оставался в состоянии pending, потому что модель не предусмотрела обработку закрытия WebSocket. После добавления логирования выяснилось, что соединение открывается, проходит аутентификацию и тут же закрывается на первом запросе. Причиной оказалась защита от Cross-Site WebSocket Hijacking, которую Qlik включил в релизе November 2024: движок стал требовать CSRF-токен на WebSocket-соединениях.
Полная выгрузка информации из ста приложений занимает около двух минут при трёх параллельных соединениях.
Проект чуть не умер, когда поддержка заказчика отказалась отключать параметр WebSocketCSWSHCheckEnabled на прокси, как это делалось в прошлый раз. Выход предложила нейросеть: перед подключением панель запрашивает токен с эндпоинта /qps/csrftoken и передает его параметром qlik-csrf-token в URL сокета. Защита остаётся включённой, а вмешательств в сервер не требуется. Это решение дало проекту вторую жизнь.
Инструмент полезен Qlik-разработчикам и администраторам, которые ведут десятки приложений. Полная выгрузка информации из сотни приложений занимает около двух минут при трёх параллельных соединениях. Панель с галками и кнопкой «Запуск» не требует обучения: любой коллега может открыть её и получить нужные данные, не вникая в скрипты. Кербатов отмечает, что раньше на подобные вопросы уходил целый день ручных «раскопок», теперь — минуты.

