{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Андрей Садулин",
    "_rss_description": "Андрей Садулин — заметки разработчика",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/closed-ai.tech\/",
    "feed_url": "https:\/\/closed-ai.tech\/rss\/",
    "icon": "https:\/\/closed-ai.tech\/pictures\/userpic\/userpic@2x.jpg?1715292324",
    "authors": [
        {
            "name": "Андрей Садулин",
            "url": "https:\/\/closed-ai.tech\/",
            "avatar": "https:\/\/closed-ai.tech\/pictures\/userpic\/userpic@2x.jpg?1715292324"
        }
    ],
    "items": [
        {
            "id": "34",
            "url": "https:\/\/closed-ai.tech\/all\/kiro-novaya-sreda-razrabotki-c-ai-programmisty-poka-eschyo-nuzhn\/",
            "title": "Kiro — новая среда разработки c AI (программисты пока ещё нужны)",
            "content_html": "<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/CleanShot-2025-08-15-at-05.03.43@2x.png.jpg\" width=\"2560\" height=\"1487\" alt=\"\" \/>\n<\/div>\n<p>Участвую в бета-тестировании нового редактора от Amazon: <a href=\"https:\/\/kiro.dev\">Kiro<\/a>. На данный момент он полностью бесплатен, и лимитов на использование ИИ-функций тоже, кстати, нет.<\/p>\n<p>Концепция очень похожа на широко известный Cursor —  по сути, это VS Code с дополнительными плагинами, обеспечивающими интеграцию с LLM, в случае с Kiro — это модели Claude 3.7 и 4.0 от Anthropic. Умное автодополнение, окно с чатом в режиме агента, доступ ко всей кодовой базе проекта, загрузка файлов и документации из сети — всё это мы уже видели, и работает оно ожидаемо хорошо.<\/p>\n<p class=\"loud\">Основная фишка редактора — режим планирования работы AI в 3 шага: формирование требований, написание дизайна и создание упорядоченного списка задач с зависимостями между ними.<\/p>\n<p>То есть, можно как обычно поставить задачу в общих чертах, и Kiro сам всё формализует, опишет user stories, нарисует структуру папок и файлов, сформирует модели и интерфейсы, и в конце даст возможность по шагам выполнять то, что он предложил, попутно корректируя его работу, если потребуется. Да, то же самое можно сделать и с помощью Cursor: так же попросить его сгенерировать документы с требованиями и планом их реализации, но Kiro специально делает ставку именно на этом подходе, максимально упрощая его и делая доступным для начинающего пользователя.<\/p>\n<p>И это работает. Сам процесс взаимодействия с редактором и конечный результат меня, честно говоря, очень удивили (в хорошем смысле слова): я точно знал, что ожидать от ИИ на каждом этапе, а если вдруг он всё же начинал делать что-то странное, я легко поправлял его (чаще всего прямо там, в окне чата, но пару раз всё-таки пришлось лезть в код самому, благо написан он был хорошо).<\/p>\n<p>Тем не менее, несмотря на все эти умные фишки, наличие опыта в программировании все-таки пока крайне желательно — уж слишком легко по-умолчанию согласиться с тем, что предлагает ИИ, и получить в итоге пусть и рабочее, но несколько уступающее в деталях и в глубине проработки решение.<\/p>\n",
            "date_published": "2025-08-15T05:09:41+05:00",
            "date_modified": "2025-08-15T05:08:27+05:00",
            "tags": [
                "development"
            ],
            "image": "https:\/\/closed-ai.tech\/pictures\/CleanShot-2025-08-15-at-05.03.43@2x.png.jpg",
            "_date_published_rfc2822": "Fri, 15 Aug 2025 05:09:41 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "34",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/closed-ai.tech\/pictures\/CleanShot-2025-08-15-at-05.03.43@2x.png.jpg"
                ]
            }
        },
        {
            "id": "33",
            "url": "https:\/\/closed-ai.tech\/all\/ubuntu-na-vmware-fusion\/",
            "title": "Ubuntu на VMware Fusion",
            "content_html": "<p>Попробовал поработать на виртуалке c Ubuntu 25.04, поднятой в VMware Fusion — пока что очень нравится. Хост машина у меня — MacBook на M1 Pro с 32 GB памяти, для гостевой я немного поправил базовые настройки: выделил ей 4 vCPU, 8 GB RAM, 40 GB HDD и ткнул опцию «Use full resolution for Retina display». Уже в Ubuntu выбрал разрешение экрана 4K и поднял масштабирование интерфейса до 200%. Супер. Работает быстро, визуально разве что скроллинг не такой плавный, как на Mac, ну и есть явно ощутимые задержки в выводе звука, например, с видео на YouTube. И пока почему-то не работает copy-paste ни в какую сторону даже после установки VMware Tools — пока не понятно, почему, попробую разобраться на досуге. В целом, с учетом того, что VMware Fusion официально распространяется бесплатно (хотя нынче всё-таки, видимо, придется регистрироваться на портале Broadcom — я раньше писал, что можно было скачать его напрямую по <a href=\"https:\/\/softwareupdate.vmware.com\/cds\/vmw-desktop\/\">ссылке<\/a> или с помощью <a href=\"https:\/\/formulae.brew.sh\/cask\/vmware-fusion#default\">Brew<\/a>, но лавочку прикрыли), на текущий момент это неплохая замена платному Parallels, если вам не нужна бесшовная интеграция с MacOS.<\/p>\n",
            "date_published": "2025-08-11T06:17:13+05:00",
            "date_modified": "2025-08-11T06:16:12+05:00",
            "tags": [
                "administration"
            ],
            "_date_published_rfc2822": "Mon, 11 Aug 2025 06:17:13 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "33",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "32",
            "url": "https:\/\/closed-ai.tech\/all\/nebolshoe-napominanie-pro-ssl-sertifikaty\/",
            "title": "Небольшое напоминание про SSL-сертификаты",
            "content_html": "<p>На самом деле, здесь можно было бы просто оставить <a href=\"https:\/\/www.cloudflare.com\/learning\/ssl\/types-of-ssl-certificates\/\">вот эту статью<\/a> в качестве ликбеза, но если интересны детали, то кратко: на сайте суда Советского района г. Нижнего Новгорода, доступного по адресу <a href=\"https:\/\/sovetsky.nnov.sudrf.ru\">https:\/\/sovetsky.nnov.sudrf.ru<\/a> , установлен wildcard-сертификат с Common Name (CN) <tt>*.sudrf.ru<\/tt> и двумя Subject Alternative Name (SAN): <tt>sudrf.ru<\/tt> и <tt>*.sudrf.ru<\/tt>. Наверное, подразумевалось, что он будет применяться как для основного домена, так и для всех его поддоменов, но, к сожалению, это так не работает, потому что <b>для субдоменов второго уровня и выше уже необходим Multi-Domain SSL Certificate (MDC)<\/b>, который обычно требует доп. проверку организации. <i>В общем, надо чинить, а то пользователи теряются — сегодня как раз так и случилось.<\/i><\/p>\n",
            "date_published": "2025-08-07T01:59:23+05:00",
            "date_modified": "2025-08-14T13:06:29+05:00",
            "tags": [
                "networking"
            ],
            "_date_published_rfc2822": "Thu, 07 Aug 2025 01:59:23 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "32",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "31",
            "url": "https:\/\/closed-ai.tech\/all\/tailand-singapur-malayziya\/",
            "title": "Таиланд 🇹🇭 Сингапур 🇸🇬 Малайзия 🇲🇾",
            "content_html": "<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/IMG20250323114351.jpg\" width=\"2560\" height=\"1920\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/IMG20250325101504.jpg\" width=\"2560\" height=\"1920\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/IMG20250331162556.jpg\" width=\"2560\" height=\"1920\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/IMG20250403114204.jpg\" width=\"2560\" height=\"1920\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/IMG20250403114604.jpg\" width=\"2560\" height=\"1920\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/IMG20250403122715.jpg\" width=\"2560\" height=\"1920\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/IMG20250404143650.jpg\" width=\"1920\" height=\"2560\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/IMG20250404203422.jpg\" width=\"2560\" height=\"1920\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/IMG20250406180928.jpg\" width=\"2560\" height=\"1920\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/IMG20250407161410.jpg\" width=\"1920\" height=\"2560\" alt=\"\" \/>\n<\/div>\n",
            "date_published": "2025-05-26T04:00:04+05:00",
            "date_modified": "2025-05-26T03:59:52+05:00",
            "tags": [
                "фото"
            ],
            "image": "https:\/\/closed-ai.tech\/pictures\/IMG20250323114351.jpg",
            "_date_published_rfc2822": "Mon, 26 May 2025 04:00:04 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "31",
            "_e2_data": {
                "is_favourite": true,
                "links_required": [],
                "og_images": [
                    "https:\/\/closed-ai.tech\/pictures\/IMG20250323114351.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/IMG20250325101504.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/IMG20250331162556.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/IMG20250403114204.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/IMG20250403114604.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/IMG20250403122715.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/IMG20250404143650.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/IMG20250404203422.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/IMG20250406180928.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/IMG20250407161410.jpg"
                ]
            }
        },
        {
            "id": "28",
            "url": "https:\/\/closed-ai.tech\/all\/29\/",
            "title": "29",
            "content_html": "<p>Сегодня мне 29 лет. Захотелось поделиться тем, как прошел этот год, и немного подумать о том, как провести следующий.<\/p>\n<p>Итак, за прошедшие 366 дней я:<br \/>\n<br \/><\/p>\n<ol start=\"1\">\n<li>Много работал, стал руководителем небольшой группы разработчиков, линейным и нанимающим менеджером, увеличил свой доход.<\/li>\n<\/ol>\n<blockquote>\n<p>Уволил сотрудника. Занимался наймом, проводил много интервью, придумывал тестовые задания для кандидатов. Получил пару интересных предложений трудоустройства в российские компании с ростом как в зарплате, так и в уровне ответственности, но сознательно отклонил их, отдав предпочтение развитию компетенций на своем текущем месте работы. К слову, в прошлом году я был сотрудником своей компании уже восьмой год подряд.<\/p>\n<\/blockquote>\n<blockquote>\n<p>Летом курировал работу стажеров, придумал им классную задачу и довёл её до конца, получив отличные отзывы от коллег на защите проекта.<\/p>\n<\/blockquote>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/IMG20240828180951.jpg\" width=\"2560\" height=\"1920\" alt=\"\" \/>\n<\/div>\n<ol start=\"2\">\n<li>Дважды съездил в отпуск с девушкой: во Вьетнам и в Азербайджан. Во Вьетнаме жил в шикарном отеле, в номере с балконом и видом на море, без толп отдыхающих, без детей, аниматоров и дискотек по ночам. Попробовал свежий дуриан (тот самый фрукт с противоречивым ароматом), посетил местный аква- и зоопарк, много гулял по Нячангу, ездил в тур по стране на бывшем военном УАЗике, купался под водопадом, ел свежеприготовленных на костре креветок, прошел путь монаха внутри каменного дракона.<\/li>\n<\/ol>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/IMG20240324163309.jpg\" width=\"1920\" height=\"2560\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/IMG20240321114316.jpg\" width=\"2560\" height=\"1920\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/IMG20240322130531.jpg\" width=\"2560\" height=\"1920\" alt=\"\" \/>\n<\/div>\n<blockquote>\n<p>В Азербайджане мы были на свадьбе друга, но успели и погулять по старому Баку, и посетить музей Гейдара Алиева, и прекрасно поужинать в ресторане Аркадия Новикова, и даже пожить один день в прекрасном отеле на берегу Каспийского моря, несколько раз с удовольствием там же искупавшись.<\/p>\n<\/blockquote>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/IMG20240816163700.jpg\" width=\"2560\" height=\"1920\" alt=\"\" \/>\n<\/div>\n<ol start=\"3\">\n<li>Избавился от вредных привычек. Больше не пью пиво вечером (иногда разве что безалкогольное), почти не употребляю мучного и сладкого (хотя, если честно, с последним пока ещё есть проблемы: мне очень нравится местный зефир), не курю.<\/li>\n<li>Пережил 2 землетрясения магнитудой в 5-6 баллов каждое.<\/li>\n<li>Сделал себе вот этот блог, где могу делиться своим опытом, мыслями и интересными находками без каких-либо функциональных ограничений социальных сетей.<\/li>\n<li>Немного катался на сноуборде, но под конец горнолыжного сезона, к сожалению, бросил — очень хотелось приобрести свой собственный комплект экипировки, и в процессе езды у меня редко получалось уверенно менять кант с переднего на задний, что закономерно приводило к падениям.<\/li>\n<li>Совсем не катался на мотоцикле — в предыдущих выездах сильно уставал от низкой посадки на KTM 350 Freeride, а Yamaha 450 была для меня слишком тяжелой и неповоротливой. Недавно появилась возможность взять в аренду новенькие Husqvarna 350 — надеюсь, на них будет комфортнее.<\/li>\n<li>Много занимался в спортзале. Тренировки стали для меня отличным способом избавиться от стресса, обрести уверенность в себе, стать сильнее и выносливее. На сегодняшний день я вежу 112 кг при росте 203 см, мой присед со штангой — 120 кг, жим от груди лежа на горизонтальной скамье — 90 кг, становая тяга — 120 кг (всё на 1 повторение). Очень доволен результатами, однако, определённо ещё есть, к чему стремиться. В двух упражнениях рубеж в 100 кг был преодолён как раз в прошлом году.<\/li>\n<li>Так и не получил водительское удостоверение, не купил машину и мотоцикл.<\/li>\n<li>Не доделал своё мобильное приложение, не прошел курс по 3D-моделированию.<\/li>\n<li>Не прочитал подаренную мне книжку, не прошел видеоигры, которые хотел, постоянно откладывал просмотр интересных мне фильмов.<\/li>\n<li>Мне отказали в визе в Италию и, соответственно, я не поехал в командировку.<\/li>\n<li>Оформил наконец-то военный билет.<\/li>\n<li>Посетил несколько летних open-air музыкальных фестивалей, концерт любимой группы, дегустацию вина и ужин от шеф-повара со звездой Мишлен в ресторане в горах.<\/li>\n<\/ol>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/IMG20240620204802.jpg\" width=\"1920\" height=\"2560\" alt=\"\" \/>\n<\/div>\n<p>Вот. Надеюсь, через год список будет длиннее, а писать я его буду не с горьким сожалением об окончательно прошедшей молодости, а с приятным предвкушением того, что принесет мне новая страница моей истории. <i>И писать желательно где-нибудь, где подают «Секс на пляже». <\/i><\/p>\n<p>Ну что, за работу?<\/p>\n",
            "date_published": "2024-11-20T04:14:16+05:00",
            "date_modified": "2025-01-08T19:33:51+05:00",
            "tags": [],
            "image": "https:\/\/closed-ai.tech\/pictures\/IMG20240828180951.jpg",
            "_date_published_rfc2822": "Wed, 20 Nov 2024 04:14:16 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "28",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/closed-ai.tech\/pictures\/IMG20240828180951.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/IMG20240324163309.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/IMG20240321114316.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/IMG20240322130531.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/IMG20240816163700.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/IMG20240620204802.jpg"
                ]
            }
        },
        {
            "id": "25",
            "url": "https:\/\/closed-ai.tech\/all\/surf-coffee-propaganda-machine-100-joe-lemenovsky-tribute\/",
            "title": "Surf Coffee Propaganda Machine №100 — Joe Lemenovsky tribute ✨",
            "content_html": "<iframe width=\"100%\" height=\"166\" scrolling=\"no\" frameborder=\"no\" allow=\"autoplay\" src=\"https:\/\/w.soundcloud.com\/player\/?url=https%3A\/\/api.soundcloud.com\/tracks\/1866974208&color=%23ff5500&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true\"><\/iframe>\n<div style=\"font-size: 10px; color: #cccccc;line-break: anywhere;word-break: normal;overflow: hidden;white-space: nowrap;text-overflow: ellipsis; font-family: Interstate,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Garuda,Verdana,Tahoma,sans-serif;font-weight: 100;\"><p><a href=\"https:\/\/soundcloud.com\/scpmrecords\" title=\"Propaganda Machine by Surf Coffee ®\" target=\"_blank\" style=\"color: #cccccc; text-decoration: none;\">Propaganda Machine by Surf Coffee ®<\/a> · <a href=\"https:\/\/soundcloud.com\/scpmrecords\/peace-division-vol100-by-scpm-records\" title=\"Peace Division Vol.100 By SCPM Records\" target=\"_blank\" style=\"color: #cccccc; text-decoration: none;\">Peace Division Vol.100 By SCPM Records<\/a><\/p>\n<\/div><p>Удобно, что embedded-трек с Soundcloud можно перематывать без регистрации, но в этом конкретном случае я советую слушать от начала и до самого конца.<\/p>\n",
            "date_published": "2024-09-11T12:56:42+05:00",
            "date_modified": "2024-09-11T13:01:17+05:00",
            "tags": [
                "музыка"
            ],
            "_date_published_rfc2822": "Wed, 11 Sep 2024 12:56:42 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "25",
            "_e2_data": {
                "is_favourite": true,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "23",
            "url": "https:\/\/closed-ai.tech\/all\/nepopulyarnoe-mnenie\/",
            "title": "Непопулярное мнение",
            "content_html": "<p>После того, как в России <s>заблокировали<\/s> замедлили YouTube, я присмотрелся к его альтернативам, и обнаружил с удивлением, что на RUTUBE есть множество классных фильмов с отличным качеством картинки и звука, в том числе и зарубежные новинки 2023 и -24-х годов: «Индиана Джонс и Колесо Судьбы», «Головоломка 2», «Трансформеры — Восхождение Звероботов» <i>(вот он, кстати, отвратительный!)<\/i>, «Наполеон» и др. Мой папа любит сериалы по вселенной «Звездных Войн» — пожалуйста: «Мандалорец», «Книга Бобы Фетта» — всё доступно.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-09-02-at-23.58.19@2x.png.jpg\" width=\"2560\" height=\"1461\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Работает всё, кстати, довольно неторопливо, но видео «не тормозит». И рекомендации, конечно, так себе.<\/div>\n<\/div>\n<p>А вот чего я там не нашел — так это фильмов и сериалов, каким-либо образом аффилированных с Кинопоиском (например, «Беспринципные», или новый «Майор Гром: Игра»): Яндекс за авторские права может и спросить, в отличие от зарубежных дистрибьюторов 😁<\/p>\n<p>Если не принимать во внимание этический и юридический аспекты такого «пиратства» , то в сухом остатке для конечного пользователя мы имеем большой плюс в отсутствии необходимости смотреть тот же самый контент на сомнительных сайтах с рекламой букмекеров и казино <i>(уверен, вы хотя бы раз на такой точно заходили и понимаете, о чем я)<\/i> или искать его на торрент-трекерах. Естественно, о полноценной замене YouTube речи не идет, но, как говорится, нет худа без добра.<\/p>\n",
            "date_published": "2024-09-03T00:02:17+05:00",
            "date_modified": "2024-09-03T00:24:12+05:00",
            "tags": [
                "разное"
            ],
            "image": "https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-09-02-at-23.58.19@2x.png.jpg",
            "_date_published_rfc2822": "Tue, 03 Sep 2024 00:02:17 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "23",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-09-02-at-23.58.19@2x.png.jpg"
                ]
            }
        },
        {
            "id": "19",
            "url": "https:\/\/closed-ai.tech\/all\/pro-plohie-interfeysy\/",
            "title": "Про плохие интерфейсы",
            "content_html": "<p>...и про то, как делать так, чтобы они были хорошими. Крайне интересное выступление <a href=\"https:\/\/ilyabirman.ru\/\">Ильи Бирмана<\/a> на прошедшей в июне конференции <a href=\"https:\/\/events.yandex.ru\/events\/ya-love-frontend-2024\">YFF<\/a>, рекомендую к просмотру.<\/p>\n<div class=\"e2-text-video\">\n<iframe src=\"https:\/\/www.youtube.com\/embed\/KWSaJJsDvtw?enablejsapi=1\" allow=\"autoplay\" frameborder=\"0\" allowfullscreen><\/iframe>\n<\/div>\n",
            "date_published": "2024-06-20T16:26:54+05:00",
            "date_modified": "2024-06-20T16:26:50+05:00",
            "tags": [
                "development"
            ],
            "image": "https:\/\/closed-ai.tech\/pictures\/remote\/youtube-KWSaJJsDvtw-cover.jpg",
            "_date_published_rfc2822": "Thu, 20 Jun 2024 16:26:54 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "19",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/closed-ai.tech\/pictures\/remote\/youtube-KWSaJJsDvtw-cover.jpg"
                ]
            }
        },
        {
            "id": "18",
            "url": "https:\/\/closed-ai.tech\/all\/cloudflare-https-i-ssl\/",
            "title": "Cloudflare: HTTPS и SSL",
            "content_html": "<p>Итак, у вас есть домен, который вы перенесли в Cloudflare. Сразу же после его добавления и настройки на платформе к нему автоматически выдаются два SSL-сертификата: основной и запасной, с разными Certificate Authority — Let’s Encrypt, Sectigo, Google Trust Services. Время жизни сертификатов — 3 месяца, после — автопродление. Удобно.<\/p>\n<p>Вот, как это выглядит:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-21.57.37@2x.png.jpg\" width=\"2560\" height=\"1672\" alt=\"\" \/>\n<\/div>\n<p>Обратите внимание, что это <b>Edge Certificates<\/b>. Поскольку платформа по-умолчанию проксирует трафик на сайт через себя, эти «пограничные» сертификаты используются <b>только на участке «пользователь — Cloudflare»<\/b>. Там же можно включить настройку «Always use HTTPS», и ожидаемо получить автоматические редиректы — но только всё на том же участке! Трафик от Cloudflare до сервера будет передаваться без шифрования!<\/p>\n<p>Обновив страницу блога, я получил несколько ошибок в консоли вида <a href=\"https:\/\/developers.cloudflare.com\/ssl\/troubleshooting\/mixed-content-errors\/.\" class=\"nu\">«<u>Mixed content: request has been blocked<\/u>»<\/a> — падали асинхронные запросы, инициированные где-то в JavaScript. Также не работало сохранение записей и некоторые редиректы — видимо, всё по той же причине 😭<\/p>\n<p>Опытным путем я понял, что надо бы шифровать весь трафик E2E, а для этого нам понадобится <b>Origin Certificate<\/b> — как раз-таки тот, который отвечает за оставшийся путь от Cloudflare до сервера (в моем случае до Nginx).<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-22.44.07@2x.png.jpg\" width=\"2560\" height=\"1672\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Да, его действительно можно получить на 15 (!) лет<\/div>\n<\/div>\n<p>Нажав на кнопку «Create», мы получим, по сути, две строки: сам сертификат и приватный ключ для него. Для добавления их в Nginx Proxy Manager, я сохранил их как файлы и импортировал так, как показано на втором снимке в галерее ниже:<\/p>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"2560\" data-ratio=\"1.5311004784689\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-22.51.14@2x.png.jpg\" width=\"2560\" height=\"1672\" alt=\"\" \/>\n<img src=\"https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-22.53.04@2x.png.jpg\" width=\"2560\" height=\"1672\" alt=\"\" \/>\n<\/div>\n<\/div>\n<p>Отлично, осталось только подключить полное шифрование в Cloudflare...<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-23.04.00@2x.png.jpg\" width=\"2560\" height=\"1657\" alt=\"\" \/>\n<\/div>\n<p>...и проверить, что всё прекрасно работает.<\/p>\n",
            "date_published": "2024-05-28T23:10:48+05:00",
            "date_modified": "2025-11-07T11:59:20+05:00",
            "tags": [
                "administration",
                "cloudflare",
                "networking"
            ],
            "image": "https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-21.57.37@2x.png.jpg",
            "_date_published_rfc2822": "Tue, 28 May 2024 23:10:48 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "18",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "jquery\/jquery.js",
                    "fotorama\/fotorama.css",
                    "fotorama\/fotorama.js"
                ],
                "og_images": [
                    "https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-21.57.37@2x.png.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-22.44.07@2x.png.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-22.51.14@2x.png.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-22.53.04@2x.png.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-23.04.00@2x.png.jpg"
                ]
            }
        },
        {
            "id": "17",
            "url": "https:\/\/closed-ai.tech\/all\/obnovlenie-infrastruktury\/",
            "title": "Обновление инфраструктуры",
            "content_html": "<p>Сегодня хочу рассказать про то, как я подключил платформу <b>Cloudflare<\/b> для обеспечения безопасного доступа к сервисным приложениям, которыми я пользуюсь для управления этим сайтом.<\/p>\n<h3>Начало<\/h3>\n<p>Кратко про архитектуру: «под капотом» здесь VPS c Ubuntu 22.04, веб-сервер и база данных запускаются в Docker-контейнерах, для их удобного администрирования я использую <a href=\"https:\/\/docs.portainer.io\/v\/2.20\">Portainer<\/a>. Также здесь установлен <a href=\"https:\/\/nginxproxymanager.com\/\">Nginx Proxy Manager<\/a> (тоже в контейнере), который перенаправляет трафик с www на основной домен, обеспечивает подключение по HTTPS, проверяет подлинность домена, и т. д. В качестве удобного интерфейса для конфигурации сервера и доступа к терминалу я выбрал <a href=\"https:\/\/cockpit-project.org\/\">Cockpit<\/a>.<\/p>\n<p>Поскольку все эти инструменты — веб-приложения, доступные публично (мне хотелось иметь возможность подключаться с любого устройства), необходимо было по-максимуму <b>защитить их от несанкционированного доступа<\/b>. Да, у них у всех по-умолчанию есть формы авторизации, но проверка там однофакторная, по логину и паролю — они хоть и длинные, но все равно могут быть скомпрометированы путем фишинга или подбора. Также вполне возможно появление уязвимостей и эксплойтов для них, позволяющих, в теории, каким-то образом обойти защиту. В общем, хотелось бы что-то понадежнее, в идеале — вообще не давать случайному пользователю доступ к этим сервисам.<\/p>\n<h3>Подключаем Cloudflare<\/h3>\n<p><a href=\"https:\/\/developers.cloudflare.com\/cloudflare-one\/connections\/connect-networks\/\">Zero Trust Tunnel<\/a> позволяет связать субдомен и внутренний адрес на host-машине с установленным приложением-коннектором (его, кстати, тоже можно развернуть в контейнере). Не нужно открывать порты или отключать firewall, т. к. коннектор поднимает egress-соединение с облаком, и самое крутое — через панель управления Cloudflare можно также <b>задать правила доступа<\/b> к ресурсу и <b>подключить дополнительный фактор аутентификации<\/b>, например, отправку одноразового кода на почту или вход через Google-аккаунт.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/network-diagram_hu35c98d3bbf0ecf738b5b543af7009e44_79161_2296x1101_resize_q75_box_3-fe1feb83.png.jpg\" width=\"2560\" height=\"1427\" alt=\"\" \/>\n<\/div>\n<p class=\"lead\">То есть, можно буквально в два клика открыть доступ по HTTPS к <tt>localhost:9090<\/tt> через <tt>private-service.my-site.com<\/tt> для тех, кто введет правильный email из whitelist’а и укажет верный код, отправленный в письме.<\/p>\n<p>Красота! ❤️<\/p>\n<p>Вот, как это выглядит в панели управления Cloudflare: на каждый «приватный» сервис я создал отдельный туннель. Обратите внимание на адреса — контейнер с коннектором <tt>cloudflared<\/tt> я добавил в bridge-сеть в Docker, которую создал вручную. Благодаря этому, во-первых, работает DNS, и можно обращаться к контейнерам по имени, а также легко можно получить доступ к host, указав Default Gateway.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-01.52.08@2x.png.jpg\" width=\"2560\" height=\"1722\" alt=\"\" \/>\n<\/div>\n<p>Добавим policy с группой доступа по-умолчанию — у меня это «разрешить любому пользователю с email из списка получать одноразовый код на почту». Настраивать можно как угодно: работает фильтрация по странам, по IP-адресам, можно проверять токены и т. д.<\/p>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"2560\" data-ratio=\"1.3897937024973\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-15.51.20@2x.png.jpg\" width=\"2560\" height=\"1842\" alt=\"\" \/>\n<img src=\"https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-15.51.49@2x.png.jpg\" width=\"2560\" height=\"1842\" alt=\"\" \/>\n<\/div>\n<\/div>\n<p>Теперь при попытке обратиться к туннелю по public hostname, откроется форма авторизации. Выглядит она вот так, и её, кстати, можно настроить — добавить свой логотип, поменять цвет фона, написать какой-нибудь текст, добавить подсказки для входа.<\/p>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"2560\" data-ratio=\"1.4997070884593\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-03.57.53@2x.png.jpg\" width=\"2560\" height=\"1707\" alt=\"\" \/>\n<img src=\"https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-04.38.08@2x.png.jpg\" width=\"2560\" height=\"1722\" alt=\"\" \/>\n<\/div>\n<\/div>\n<p>На всякий случай повторюсь — если введенного адреса нет в whitelist, код просто не придет.<\/p>\n<p>А ещё можно создать «приложения» и добавить их на главный экран — он называется App Launcher. Естественно, он тоже доступен только для авторизованных пользователей.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-01.47.32@2x.png.jpg\" width=\"2560\" height=\"1722\" alt=\"\" \/>\n<\/div>\n<p>Отмечу, что работает это всё только с доменами, перенесенными в Cloudflare или изначально приобретенными у них. Мой был куплен в reg.ru, перенос занял минут 15, ничего сложного.<\/p>\n<h3>Сколько стоит?<\/h3>\n<p>Весь описанный выше функционал <b>абсолютно бесплатен<\/b>, как и кэширование, защита от DDOS, и куча разных дополнительных виртуальных сетевых функций, но нужно привязать карточку. Наверное, единственный минус, который я могу выделить — Cloudflare функционально довольно перегружен: много дашбордов, панелей, настроек; но, благо, есть хорошая документация.<\/p>\n<h3>P. S.<\/h3>\n<p>В Cloudflare можно автоматически добавить SSL-сертификат и настроить редиректы с HTTP на HTTPS — об этом читайте <a href=\"\/all\/cloudflare-https-i-ssl\/\">в следующей заметке<\/a>.<\/p>\n<p>Большое спасибо Михаилу Щербине за консультации.<\/p>\n",
            "date_published": "2024-05-28T04:58:32+05:00",
            "date_modified": "2024-07-02T00:27:54+05:00",
            "tags": [
                "administration",
                "cloudflare",
                "docker",
                "networking"
            ],
            "image": "https:\/\/closed-ai.tech\/pictures\/network-diagram_hu35c98d3bbf0ecf738b5b543af7009e44_79161_2296x1101_resize_q75_box_3-fe1feb83.png.jpg",
            "_date_published_rfc2822": "Tue, 28 May 2024 04:58:32 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "17",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "jquery\/jquery.js",
                    "fotorama\/fotorama.css",
                    "fotorama\/fotorama.js"
                ],
                "og_images": [
                    "https:\/\/closed-ai.tech\/pictures\/network-diagram_hu35c98d3bbf0ecf738b5b543af7009e44_79161_2296x1101_resize_q75_box_3-fe1feb83.png.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-01.52.08@2x.png.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-15.51.20@2x.png.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-15.51.49@2x.png.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-03.57.53@2x.png.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-04.38.08@2x.png.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/CleanShot-2024-05-28-at-01.47.32@2x.png.jpg"
                ]
            }
        },
        {
            "id": "13",
            "url": "https:\/\/closed-ai.tech\/2024\/05\/20\/1\/",
            "title": "Все новое — это хорошо забытое старое",
            "content_html": "<p>На прошлой неделе вышло переиздание игры Braid 2009 года: добавили новые уровни, улучшили музыкальное сопровождение, перерисовали визуальную часть, появился раздел с комментариями разработчиков. Кто пропустил — крайне рекомендую попробовать! <b>Braid: Anniversary Edition<\/b> доступна на всех цифровых площадках, включая Steam и Google Play (<i>на 4PDA можно найти версию для Android без привязки к подписке Netflix<\/i>).<\/p>\n<div class=\"e2-text-video\">\n<iframe src=\"https:\/\/www.youtube.com\/embed\/U738YZG1k1I?enablejsapi=1\" allow=\"autoplay\" frameborder=\"0\" allowfullscreen><\/iframe>\n<\/div>\n<div class=\"e2-text-video\">\n<iframe src=\"https:\/\/www.youtube.com\/embed\/YLxoIGG1-qM?enablejsapi=1\" allow=\"autoplay\" frameborder=\"0\" allowfullscreen><\/iframe>\n<\/div>\n",
            "date_published": "2024-05-20T00:40:41+05:00",
            "date_modified": "2024-05-29T01:18:46+05:00",
            "tags": [],
            "image": "https:\/\/closed-ai.tech\/pictures\/remote\/youtube-U738YZG1k1I-cover.jpg",
            "_date_published_rfc2822": "Mon, 20 May 2024 00:40:41 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "13",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/closed-ai.tech\/pictures\/remote\/youtube-U738YZG1k1I-cover.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/remote\/youtube-YLxoIGG1-qM-cover.jpg"
                ]
            }
        },
        {
            "id": "10",
            "url": "https:\/\/closed-ai.tech\/all\/ne-podnimalsya-tot-kto-ne-padal\/",
            "title": "Не поднимался тот, кто не падал",
            "content_html": "<p>... и это я о wildcard-сертификате. Да, всё заработало.<\/p>\n<p>Оказалось, что у reg.ru в личном кабинете <b>нужно задать список IP-адресов<\/b> (или сразу подсеть), с которых разрешается обращение к их API. Указав IP своей машины, я попробовал получить сертификат ещё раз — и запрос упал с Gateway Time-out.<\/p>\n<p>Что ж, попробуем ещё раз — результат тот же.<\/p>\n<p>ОК, у Nginx Proxy Manager есть параметр «Propagation seconds». Увеличив его в 2.5 раза, я снова словил таймаут, полез в логи посмотреть — <b>и оказалось, что всё сработало!<\/b><\/p>\n<p>Настройки nginx получились примерно следующие:<\/p>\n<p>🔎 <tt>www.[domain]<\/tt><\/p>\n<blockquote>\n<p><tt>301<\/tt> ➡️ <tt><b><s>www.<\/s><\/b>[domain]<\/tt> (wildcard-сертификат)<\/p>\n<\/blockquote>\n<p>🔎 <tt>[domain]<\/tt><\/p>\n<blockquote>\n<p>принудительный переход на SSL ➡️ <tt><b>https<\/b> + [domain]<\/tt> (отдельный сертификат под <tt>[domain]<\/tt>)<\/p>\n<\/blockquote>\n<p>Нет, в принципе, можно было бы обойтись и без wildcard-сертификата, просто это добавляет дополнительный шаг при создании очередного субдомена.<\/p>\n<p>P. S. У cloud.ru потрясающая техподдержка. Если кому-то нужна бесплатная виртуальная машина на linux — наверное, это один из лучших вариантов на данный момент: <a href=\"https:\/\/cloud.ru\/ru\/free-tier\">тык<\/a><\/p>\n",
            "date_published": "2024-05-12T02:49:56+05:00",
            "date_modified": "2024-05-28T20:37:30+05:00",
            "tags": [],
            "_date_published_rfc2822": "Sun, 12 May 2024 02:49:56 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "10",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "7",
            "url": "https:\/\/closed-ai.tech\/all\/neskolko-sluchaynyh-fotografiy\/",
            "title": "Несколько случайных фотографий",
            "content_html": "<p>Галерею можно листать<\/p>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"2560\" data-ratio=\"1.3333333333333\">\n<img src=\"https:\/\/closed-ai.tech\/pictures\/20180904_175303_HDR.jpg\" width=\"2560\" height=\"1920\" alt=\"\" \/>\n<img src=\"https:\/\/closed-ai.tech\/pictures\/20190130_083114_HDR.jpg\" width=\"2560\" height=\"1920\" alt=\"\" \/>\n<img src=\"https:\/\/closed-ai.tech\/pictures\/20220529_093557.jpg\" width=\"2560\" height=\"1920\" alt=\"\" \/>\n<img src=\"https:\/\/closed-ai.tech\/pictures\/20210611_224957.jpg\" width=\"2560\" height=\"1920\" alt=\"\" \/>\n<\/div>\n<\/div>\n",
            "date_published": "2024-05-10T21:28:14+05:00",
            "date_modified": "2024-05-10T21:27:37+05:00",
            "tags": [
                "фото"
            ],
            "image": "https:\/\/closed-ai.tech\/pictures\/20180904_175303_HDR.jpg",
            "_date_published_rfc2822": "Fri, 10 May 2024 21:28:14 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "7",
            "_e2_data": {
                "is_favourite": true,
                "links_required": [
                    "jquery\/jquery.js",
                    "fotorama\/fotorama.css",
                    "fotorama\/fotorama.js"
                ],
                "og_images": [
                    "https:\/\/closed-ai.tech\/pictures\/20180904_175303_HDR.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/20190130_083114_HDR.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/20220529_093557.jpg",
                    "https:\/\/closed-ai.tech\/pictures\/20210611_224957.jpg"
                ]
            }
        },
        {
            "id": "5",
            "url": "https:\/\/closed-ai.tech\/all\/pro-dengi\/",
            "title": "Про деньги",
            "content_html": "<p>Что мне особенно нравится — всё это удовольствие (сервер, IP, домен, SSL-сертификат, artifactory для Docker-образов) стоит всего<\/p>\n<p class=\"loud\">147 рублей в месяц* <br\/><span style=\"font-size: 20px;\">+ 119 рублей за домен на год<\/span><\/p>\n<p class=\"foot\">* и первые 2 месяца бесплатно<\/p>\n",
            "date_published": "2024-05-10T05:12:16+05:00",
            "date_modified": "2024-05-10T21:03:32+05:00",
            "tags": [],
            "_date_published_rfc2822": "Fri, 10 May 2024 05:12:16 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "5",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "4",
            "url": "https:\/\/closed-ai.tech\/all\/nochnoy-nu-disco\/",
            "title": "Ночной nu-disco ✨",
            "content_html": "<div class=\"e2-text-audio\">\n<div class=\"e2-text-super-wrapper e2-jouele-wrapper\"><a class=\"jouele\" data-space-control=\"true\" data-length=\"4380\" href=\"https:\/\/closed-ai.tech\/audio\/Discolicious_vol.5.mp3\">Discolicious_vol.5.mp3<\/a><\/div>\n<p>\n18:30... самый сочный дроп<br \/>\n<\/p>\n<\/div>\n<p class=\"foot\">но слушать, конечно, надо полностью<\/p>\n",
            "date_published": "2024-05-10T05:03:11+05:00",
            "date_modified": "2024-05-10T06:05:02+05:00",
            "tags": [
                "музыка"
            ],
            "_date_published_rfc2822": "Fri, 10 May 2024 05:03:11 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "4",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "jquery\/jquery.js",
                    "jouele\/jouele.css",
                    "jouele\/jouele.js"
                ],
                "og_images": []
            }
        },
        {
            "id": "3",
            "url": "https:\/\/closed-ai.tech\/all\/pro-dvizhok\/",
            "title": "О платформе",
            "content_html": "<div class=\"e2-text-video\">\n<iframe src=\"https:\/\/www.youtube.com\/embed\/vrcXLs_PhVA?enablejsapi=1\" allow=\"autoplay\" frameborder=\"0\" allowfullscreen><\/iframe>\n<div class=\"e2-text-caption\">Интересный доклад Ильи о том, как много всего там скрыто «под капотом»<\/div>\n<\/div>\n",
            "date_published": "2024-05-10T04:45:46+05:00",
            "date_modified": "2024-05-10T04:45:40+05:00",
            "tags": [
                "эгея"
            ],
            "image": "https:\/\/closed-ai.tech\/pictures\/remote\/youtube-vrcXLs_PhVA-cover.jpg",
            "_date_published_rfc2822": "Fri, 10 May 2024 04:45:46 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "3",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/closed-ai.tech\/pictures\/remote\/youtube-vrcXLs_PhVA-cover.jpg"
                ]
            }
        }
    ],
    "_e2_version": 4134,
    "_e2_ua_string": "Aegea 11.3 (v4134)"
}