<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <language>ru</language>
    <title>Браузеры</title>
    <description>Новости о разработке, обновлениях популярных браузеров и статьи об их особенностях.</description>
    <link>https://tproger.ru/tag/browsers</link>
    <atom:link href="https://tproger.ru/tag/browsers/feed" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Fri, 23 Oct 2026 17:28:58 GMT</lastBuildDate>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>12</sy:updateFrequency>
    <image>
      <title>Браузеры</title>
      <link>https://tproger.ru</link>
      <url>https://tproger.ru/apple-touch-icon.png</url>
    </image>
    <item>
      <title>Обновил, но не работает: как устроен кэш и почему его нельзя просто выключить</title>
      <link>https://tproger.ru/articles/obnovil-no-ne-rabotaet-kak-ustroen-kew-i-pochemu-ego-nelzya-pro</link>
      <comments>https://tproger.ru/articles/obnovil-no-ne-rabotaet-kak-ustroen-kew-i-pochemu-ego-nelzya-pro?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дима Дмитриев]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/obnovil-no-ne-rabotaet-kak-ustroen-kew-i-pochemu-ego-nelzya-pro</guid>
      <description><![CDATA[<p>Как устроен кэш браузера, CDN и приложения: Cache-Control, ETag, TTL, purge, Redis и стратегии обновления без отключения кэширования.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/obnovil-no-ne-rabotaet-kak-ustroen-kew-i-pochemu-ego-nelzya-pro">Обновил, но не работает: как устроен кэш и почему его нельзя просто выключить</a>»</p>]]></description>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[CDN]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 19 Oct 2026 11:52:09 GMT</pubDate>
      <content:encoded><![CDATA[<p>Знакомая ситуация: вы поправили баг, задеплоили, обновили страницу — а там всё то же самое. Проверяете код в репо, смотрите логи пайплайна, коммит точно смёржен и ушёл в прод. А пользователи как писали, что у них старая версия, так и пишут. Первая мысль — «наверное, что-то не задеплоилось». На деле почти всегда виноват кэш, причём не один: сразу несколько, каждый на своём уровне и со своей логикой обновления.</p><h2>Кто вообще кэширует ваш сайт</h2><p>Кэш редко бывает один. Между вашим сервером и пользователем обычно стоит минимум три независимых хранилища копий:</p><ul><li>браузер пользователя хранит файлы на диске и в памяти;</li><li>CDN держит копии на edge-серверах ближе к пользователю;</li><li>сам сервер или приложение кэширует результаты запросов — рендер страницы, ответ базы данных, посчитанную агрегацию.</li></ul><p>Каждый уровень обновляется по своим правилам и не знает о существовании соседних. Поэтому «обновил — не работает» может означать три совершенно разные проблемы, и решать их нужно по отдельности.</p><h2>Почему браузер не видит обновление</h2><p>Браузер решает, использовать ли сохранённую копию файла или запросить новую, по заголовку Cache-Control, который сервер прислал вместе с этим файлом в прошлый раз. Директив несколько, и путаница вокруг них — обычное дело: no-cache не значит «не кэшировать», это значит «кэшировать, но каждый раз ревалидировать перед показом»; за настоящее «не хранить вообще» отвечает no-store. Если сервер прислал max-age=86400, браузер имеет полное право сутки ничего не спрашивать — то есть сутки отдавать сохранённую копию, даже не обращаясь к серверу.</p><p>Ревалидация тоже работает не вслепую. Для <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Conditional_requests">проверки</a> актуальности файла сервер присылает ETag, то есть идентификатор его версии. При следующем запросе браузер подставляет его в заголовок If-None-Match. Если файл не изменился, сервер отвечает 304 Not Modified без тела ответа. Браузер использует сохранённую версию, поэтому трафик на повторную загрузку не тратится.</p><p>Поэтому жёсткое обновление страницы (Ctrl+Shift+R) часто «чинит» проблему — оно заставляет браузер игнорировать сохранённую копию и переспросить сервер заново. Но это симптоматическое решение: у пользователя, который просто открыл сайт как обычно, тот же файл ещё какое-то время будет браться из кэша.</p><h2>Почему CDN отдаёт старую версию, даже когда ориджин уже обновлён</h2><p>CDN — ещё один слой кэша: его копии лежат на edge-серверах между вашим сервером и браузером пользователя, физически ближе к тому, кто делает запрос. Edge-серверы CDN решают, отдать сохранённую версию или сходить на origin, по ключу кэша. Обычно это URL плюс набор заголовков, которые указаны в Vary, указывающем, какие варианты ответа нужно различать. <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cache-Control">Директива</a> Cache-Control: s-maxage работает именно для таких shared-кэшей и имеет приоритет над max-age в CDN, хотя браузер её игнорирует.</p><p>Здесь и кроется вторая причина «обновил — не работает»: вы поменяли файл на origin, но edge-серверы CDN узнают об этом, только когда истечёт TTL их собственной копии — или когда вы явно скажете им сбросить кэш через purge. Purge — это команда, отличная от кэш-бастинга на стороне браузера. Purge удаляет сохранённый файл, поэтому при следующем запросе CDN обращается к origin. У крупных провайдеров эта операция быстрая: и <a href="https://blog.cloudflare.com/instant-purge/">Cloudflare</a>, и <a href="https://www.fastly.com/blog/fastly-instant-purge-under-150ms-for-over-a-decade">Fastly</a> заявляют медианное время распространения purge по всей сети менее 150 мс. Но всё равно запуск очистки остается отдельным этапом, который обычно добавляют в CI/CD-пайплайн и выполняют после успешного деплоя.</p><h2>А что кэширует сам сервер</h2><p>Третий уровень — кэш внутри приложения: сохранённый результат тяжёлого запроса к базе, посчитанная агрегация, готовый рендер страницы. Здесь чаще всего используют отдельное хранилище вроде Redis, которое инвалидируется вручную или по TTL — так же, как и CDN, только этим занимается уже код приложения.</p><p>Проблема та же, что и с CDN: если вы поменяли логику или данные, но забыли инвалидировать соответствующий ключ в этом кэше, приложение продолжит отдавать посчитанный заранее результат — код при этом будет полностью новым, а ответ пользователю — старым.</p><h2>Почему нельзя просто выключить кэш</h2><p>Соблазн понятен: раз кэш создаёт столько путаницы, почему бы не выставить везде no-store и не жить спокойно? Дело в том, что кэш — основа современной веб-инфраструктуры: без него задержки и нагрузка на серверы выросли бы на порядок.</p><p>Без кэша браузера каждая загрузка страницы заново скачивает все статические файлы: шрифты, картинки, JS-бандлы — даже если они не менялись между визитами. Без кэша CDN каждый запрос долетает до origin-сервера, который физически может находиться в другом регионе: значит, для пользователя это лишние сотни миллисекунд задержки на каждый клик, а для инфраструктуры — нагрузка на origin, снимать которую как раз и должен CDN. Без кэша на уровне приложения тяжёлый запрос к базе будет выполняться заново при каждом обращении, даже если результат не изменился ни на бит.</p><p>Иными словами, выключить кэш — значит вернуть всю нагрузку, которую он снимал, обратно на серверы и заплатить за это временем ответа, трафиком и стоимостью инфраструктуры. Задача — научиться обновлять кэш синхронно с тем, что реально изменилось.</p><h2>Как правильно обновлять то, что закэшировано</h2><p>Рабочий подход строится на двух связанных приёмах.</p><p>Для файлов, которые меняются вместе с деплоем (CSS, JS, картинки), используют версионирование имени: хэш содержимого зашивается прямо в имя файла (app.a1b2c3.js вместо app.js). Новый файл — новое имя, значит, старая закэшированная копия просто не совпадает с URL, который запрашивает обновлённая страница, и конфликта не возникает. Для таких файлов можно смело ставить долгий max-age и директиву immutable: раз имя гарантированно уникально, ревалидация браузеру не нужна вовсе.</p><p>Для остального контента, который должен обновляться без смены URL (тексты, данные API, HTML-страницы), работает сочетание короткого max-age с stale-while-revalidate: пользователь получает мгновенный ответ из кэша, а в фоне кэш обновляется, и уже следующий запрос получит свежую версию. Для больших изменений добавляют явный purge на CDN и точечную инвалидацию нужных ключей в серверном кэше вместо полного сброса всего подряд.</p><p>Если изменение рискованное, ситуацию с кэшем это тоже упрощает: canary деплой на часть трафика и feature flag позволяют проверить новую версию до того, как она уйдёт на всех пользователей, — а значит, и до того, как её экземпляры разойдутся по кэшам на разных уровнях.</p><h2>Что проверить, если «обновил, но не работает»</h2><ul><li>Откройте страницу в режиме инкогнито или через Ctrl+Shift+R — если там всё новое, проблема была в браузерном кэше конкретного пользователя: на сервере уже всё актуально.</li><li>Посмотрите заголовки ответа (Cache-Control, Age, ETag) в инструментах разработчика — заголовок Age покажет, сколько секунд назад ответ был сгенерирован и отдаётся ли он вообще из кэша.</li><li>Проверьте, был ли выполнен purge на CDN после деплоя — если у вас настроен автоматический purge в CI/CD-пайплайне, убедитесь по логам, что он реально отработал: одного факта запуска недостаточно.</li><li>Проверьте кэш на уровне приложения — не остался ли в Redis или аналогичном хранилище старый ключ, который никто не инвалидировал.</li><li>И только после этого возвращайтесь к вопросу «а точно ли задеплоилось» — если все слои кэша чистые, а старая версия всё равно на месте, проблема, скорее всего, действительно в деплое.</li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Mozilla планирует включить Nova в Firefox 157 для всех пользователей</title>
      <link>https://tproger.ru/news/mozilla-planiruet-vklyuchit-nova-v-firefox-157-dlya-vseh-polzovat</link>
      <comments>https://tproger.ru/news/mozilla-planiruet-vklyuchit-nova-v-firefox-157-dlya-vseh-polzovat?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/mozilla-planiruet-vklyuchit-nova-v-firefox-157-dlya-vseh-polzovat</guid>
      <description><![CDATA[<p>Релиз браузера намечен на 29 сентября. В Nova вернули компактный режим, а ранний вариант можно проверить через browser.nova.enabled в стабильной версии.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/mozilla-planiruet-vklyuchit-nova-v-firefox-157-dlya-vseh-polzovat">Mozilla планирует включить Nova в Firefox 157 для всех пользователей</a>»</p>]]></description>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Firefox]]></category>
      <category><![CDATA[Mozilla]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 07 Sep 2026 09:40:05 GMT</pubDate>
      <content:encoded><![CDATA[<p>Mozilla планирует включить новый интерфейс Firefox, который разрабатывается с марта под названием Nova, для всех пользователей в Firefox 157. Релиз намечен на 29 сентября, <a href="https://www.omgubuntu.co.uk/2026/09/firefox-nova-redesign-coming-september">сообщает</a> издание OMG! Ubuntu со ссылкой на текущие планы команды; оговорка «если ничего не изменится в последний момент» там стоит прямо в тексте. Это первый крупный редизайн браузера с 2021 года, когда вышел Proton.</p><p>Для пользователя Firefox изменится привычное расположение и оформление панелей браузера. Проверить ранний вариант можно уже в стабильной версии через скрытую настройку. При этом текущая реализация отличается от будущего релиза, а наиболее близкое представление о новом виде, по совету издания, даёт Nightly, ежедневная сборка разработки.</p><ul><li>Mozilla планирует сделать Nova интерфейсом по умолчанию в Firefox 157; релиз намечен на 29 сентября 2026 года, планы могут измениться.</li><li>Скруглённые вкладки и адресная строка, панель вкладок и навигации в отдельной цветной области, отдельные кнопки приватного режима и встроенного VPN на панели инструментов.</li><li>Компактный режим вернули: он уменьшает отступы для тех, кому новая разметка занимает слишком много места.</li><li>Включить заранее: в about:config выставить browser.nova.enabled в true; в стабильной версии вид будет отличаться от финального, точнее всего показывает Nightly.</li><li>Предыдущие редизайны: Australis в 2014 году, Photon в 2017-м, Proton в 2021-м.</li></ul><h2>Что именно меняется в интерфейсе</h2><p>По сводке OpenNET, в Nova скруглены кнопки вкладок и поле адресной строки, а панель вкладок, панель навигации и боковая панель вынесены в отдельно окрашенную область. На панель инструментов добавлены кнопки для перехода в приватный режим и для встроенного VPN. Упрощён доступ к группам вкладок, вертикальным вкладкам и режиму просмотра двух вкладок рядом. Обновлены пиктограммы, изменена цветовая палитра с оттенками фиолетового и более тёплыми светлыми тонами, у активной вкладки появился эффект свечения, пересмотрены отступы между всеми элементами.</p><p>OMG! Ubuntu отмечает, что за полгода разработки замысел заметно смягчили. Мартовские макеты показывали сильно скруглённые элементы, «плавающие» панели с зазорами между ними и содержимым страницы и много пастельных градиентов. К сентябрю скругления уменьшили, зазоры убрали, градиент по умолчанию сделали мягче, а компактный режим вернули. На Linux в стандартной теме градиентов в окне браузера нет вовсе.</p><p>Компактный режим относится к плотности интерфейса: он уменьшает увеличенные отступы. Сохранение этой настройки важно при сравнении вариантов, потому что свободное пространство между элементами влияет на то, сколько места остаётся странице. В ранних макетах панели визуально отделялись от контента зазорами, но к сентябрю, по описанию OMG! Ubuntu, от этих зазоров отказались. Поэтому мартовские изображения уже не описывают подготовленный к релизу вариант.</p><p>Различия есть и между платформами: в стандартном оформлении Linux, по наблюдению издания, градиентов на рамке окна нет. Это ограничивает сравнение по отдельному скриншоту с другой системы. При ранней проверке стоит отдельно смотреть форму вкладок, отступы и цветовые эффекты: часть изменений общая, часть зависит от оформления. Ни новых показателей скорости загрузки страниц, ни результатов тестов производительности этот материал о Nova не приводит.</p><h2>Как включить Nova уже сегодня и как выключить</h2><p>Для пробы Nova откройте about:config и найдите browser.nova.enabled. Значение true включает новый интерфейс. Мгновенное переключение без перезапуска не гарантируется. Перед сравнением запишите исходное значение параметра, чтобы при необходимости вернуть его. Результат ранней пробы относится к установленной версии браузера.</p><p>В текущих стабильных выпусках Firefox Nova доступна через скрытый флаг. Значение false возвращает прежний вид. После релиза этот способ останется доступным лишь пока флаг существует; срок его сохранения источник не называет. OMG! Ubuntu предупреждает, что текущий вариант в стабильной ветке отличается от будущего Firefox 157, и рекомендует Nightly для более близкого знакомства с результатом разработки.</p><p>Если оформление настроено через userChrome.css, перед переходом стоит проверить его вместе с Nova: собственные CSS-правила меняют внешний вид поверх интерфейса браузера. Это рекомендация редакции для раннего тестирования, а не подтверждение поломки конкретной темы. Обратную связь Mozilla <a href="https://connect.mozilla.org/t5/discussions/take-project-nova-for-a-spin-in-nightly/td-p/104417">собирает в обсуждении на Mozilla Connect</a>. В сообщении о проблеме полезно указать версию браузера и используемое оформление.</p><h2>Как Nova связана с другими обновлениями Firefox?</h2><p>До Nova браузер получил Australis в 2014 году, Photon в 2017-м и Proton в 2021-м, напоминает OMG! Ubuntu. Издание рассматривает нынешний редизайн вместе с уже обновлённой страницей настроек, виджетами новой вкладки и иллюстрациями с талисманом Kit. Это изменения разных частей браузера, поэтому скриншот одного окна не показывает весь набор нововведений. Дата включения Nova относится именно к новому оформлению основных панелей.</p><p>Отдельного анонса в блоге Mozilla с датой на момент публикации мы не нашли: дата 29 сентября следует из графика выпусков и подтверждена OMG! Ubuntu. Не названо и то, останется ли флаг browser.nova.enabled после релиза и как долго можно будет вернуть старый вид. На сайте мы недавно разбирали, что <a href="https://tproger.ru/news/firefox-dlya-ios-poluchil-vstroennyj-blokirovshhik-reklamy-a-firefo">принёс Firefox 155</a>, а также <a href="https://tproger.ru/news/google-ubral-ublock-origin-i-ostalnye-raswireniya-manifest-v2-iz">удаление uBlock Origin из Chrome Web Store</a>, после которого часть пользователей как раз присматривается к Firefox.</p><p>Источники: <a href="https://www.omgubuntu.co.uk/2026/09/firefox-nova-redesign-coming-september">OMG! Ubuntu: Firefox's Nova Redesign Arrives in Firefox 157</a>, <a href="https://www.opennet.ru/opennews/art.shtml?num=66226">OpenNET: В Firefox 157 будет существенно переделан интерфейс пользователя</a>, <a href="https://connect.mozilla.org/t5/discussions/take-project-nova-for-a-spin-in-nightly/td-p/104417">Mozilla Connect: обсуждение проекта Nova</a></p><p>Изображение на обложке: Mozilla, логотип Firefox</p>]]></content:encoded>
    </item>
    <item>
      <title>CSS-функции sibling-index() и sibling-count() заработали во всех движках</title>
      <link>https://tproger.ru/news/css-funkcii-sibling-index-i-sibling-count-zarabotali-vo-vseh</link>
      <comments>https://tproger.ru/news/css-funkcii-sibling-index-i-sibling-count-zarabotali-vo-vseh?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/css-funkcii-sibling-index-i-sibling-count-zarabotali-vo-vseh</guid>
      <description><![CDATA[<p>С Firefox 154 функции sibling-index() и sibling-count() есть во всех трёх движках. Как задать задержку анимации по номеру элемента без JS и где они вернут 0.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/css-funkcii-sibling-index-i-sibling-count-zarabotali-vo-vseh">CSS-функции sibling-index() и sibling-count() заработали во всех движках</a>»</p>]]></description>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[CSS]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Фронтенд]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 03 Sep 2026 08:40:06 GMT</pubDate>
      <content:encoded><![CDATA[<p>Функции sibling-index() и sibling-count() стали доступны во всех трёх основных браузерных движках: последним 18 августа их <a href="https://web-platform-dx.github.io/web-features-explorer/features/sibling-count/">поддержал</a> Firefox 154, а 2 сентября разработчики <a href="https://www.reddit.com/r/css/comments/1w52o07/siblingindex_and_siblingcount_the_css_functions/">разобрали</a> в r/css, что это меняет. Функции возвращают номер элемента среди соседей и общее число детей у родителя, и оба значения можно использовать в calc().</p><p>Практический смысл простой: то, что раньше делали через --i в инлайн-стиле каждого элемента или через JavaScript, теперь считает сам браузер. Ступенчатые задержки анимации в списке, ширина колонок по числу карточек, позиционирование по индексу без нумерации в разметке. По данным Web Platform DX, функции получили статус «newly available» с 18 августа 2026 года; статус «widely available» по правилам Baseline ожидается 18 февраля 2029 года, то есть старые браузеры ещё долго будут требовать запасного варианта.</p><ul><li>sibling-index() возвращает позицию элемента среди соседей, начиная с 1; sibling-count() возвращает число прямых детей родителя, включая текущий.</li><li>Поддержка: Chrome и Edge 138 (июнь 2025), Safari 26.2 (декабрь 2025), Firefox 154 (18 августа 2026).</li><li>Функции считают по дереву DOM, а не по flat tree; при попытке пересечь границу Shadow DOM результат может быть 0.</li><li>Типичные применения: transition-delay и animation-delay по номеру, размер элемента в зависимости от числа соседей, раскладка без JavaScript.</li><li>CSSWG допускает будущую форму с фильтром of, чтобы считать только соседей по селектору.</li></ul><h2>Как это выглядит в коде</h2><p>Классический пример из обсуждения: список, где каждый следующий пункт появляется чуть позже предыдущего. Раньше для этого либо писали style="--i: 3" в каждом li, либо перечисляли :nth-child() вручную. Теперь достаточно одного правила:</p><p>Обе функции возвращают целое число без единиц, поэтому умножение на 80ms или на 100px внутри calc() работает как с обычной переменной. В спецификации CSS Values and Units Level 5 их называют tree-counting functions, функциями подсчёта по дереву.</p><h2>Где функции ведут себя не так, как ожидается</h2><ul><li>Считается дерево DOM, а не flat tree: слоты и элементы внутри Shadow DOM учитываются иначе, чем при рендеринге; на границе теневого дерева функция может вернуть 0, чтобы не раскрывать его содержимое.</li><li>Учитываются все элементы-соседи, а не только подходящие под селектор. Если в списке есть скрытый li, он всё равно попадёт в счёт; форма с фильтром of пока только обсуждается в CSSWG.</li><li>Индексация начинается с 1, как у :nth-child(), а не с 0.</li></ul><h2>Можно ли использовать в проде</h2><p>Для декоративных эффектов вроде задержек анимации можно уже сейчас: в браузере без поддержки calc(sibling-index() * 80ms) будет невалидным значением, и правило просто не применится, элементы появятся одновременно. Для раскладки, от которой зависит читаемость, стоит завернуть правило в @supports:</p><p>Кому это ничего не даст: проектам, которые обязаны поддерживать браузеры старше Chrome 138 и Safari 26.2, а также тем, кто уже генерирует индексы на сервере. По данным Web Platform DX, Chrome и Chrome Android получили функции в версии 138 от 24 июня 2025 года, Edge 138 от 26 июня 2025 года, Safari и iOS Safari в 26.2 от 12 декабря 2025 года, Firefox и Firefox Android в 154 от 18 августа 2026 года.</p><p>Из соседних CSS-новостей на сайте: Firefox 155 <a href="https://tproger.ru/news/firefox-dlya-ios-poluchil-vstroennyj-blokirovshhik-reklamy-a-firefo">добавил</a> функцию progress(), а в Chrome 154 beta появились режимы links и tabs у scroll-marker-group. Черновик спецификации с формальным описанием функций лежит на <a href="https://drafts.csswg.org/css-values-5/">сайте CSSWG</a>.</p><p>Источники: <a href="https://www.reddit.com/r/css/comments/1w52o07/siblingindex_and_siblingcount_the_css_functions/">Обсуждение в r/css</a>, <a href="https://web-platform-dx.github.io/web-features-explorer/features/sibling-count/">Web Platform DX: sibling-count и sibling-index</a>, <a href="https://drafts.csswg.org/css-values-5/">CSS Values and Units Module Level 5</a></p>]]></content:encoded>
    </item>
    <item>
      <title>WebLLM запускает языковую модель в браузере без сервера за один вечер</title>
      <link>https://tproger.ru/articles/webllm-zapuskaet-yazykovuyu-model-v-brauzere-bez-servera-za-odin</link>
      <comments>https://tproger.ru/articles/webllm-zapuskaet-yazykovuyu-model-v-brauzere-bez-servera-za-odin?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/webllm-zapuskaet-yazykovuyu-model-v-brauzere-bez-servera-za-odin</guid>
      <description><![CDATA[<p>Разбор WebLLM 0.2.84: установка, код чата со стримингом, видеопамять для 9 моделей от 0,7 до 6,4 ГБ, 71–80% нативной скорости и поддержка WebGPU в браузерах.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/webllm-zapuskaet-yazykovuyu-model-v-brauzere-bez-servera-za-odin">WebLLM запускает языковую модель в браузере без сервера за один вечер</a>»</p>]]></description>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[WebAssembly]]></category>
      <category><![CDATA[Фронтенд]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 03 Sep 2026 06:49:32 GMT</pubDate>
      <content:encoded><![CDATA[<p><a href="https://github.com/mlc-ai/web-llm">WebLLM</a> — открытый движок команды MLC AI, который выполняет языковую модель внутри браузера на WebGPU и отдаёт её через API в стиле OpenAI. Сервера для инференса нет: веса скачиваются один раз, дальше промпты и ответы не покидают вкладку. Проект живёт с 2023 года, но 2 сентября 2026 года <a href="https://news.ycombinator.com/item?id=49536411">снова поднялся</a> на первую страницу Hacker News с 92 очками, а на GitHub у него 18 846 звёзд и 1 372 форка по данным API на 3 сентября.</p><p>Я разбираю WebLLM как рабочий инструмент: что нужно от железа и браузера, сколько весят модели, какой скоростью придётся заплатить за отказ от сервера и где проще остаться на облачном API. Все команды и фрагменты кода взяты из README репозитория, цифры производительности из статьи авторов на arXiv, требования к видеопамяти из файла конфигурации в исходниках.</p><p>Материал для фронтенд- и фулстек-разработчиков, которым нужен чат, классификатор или JSON-извлекатель на клиенте без счёта за токены и без передачи пользовательских данных третьей стороне.</p><ul><li>WebLLM выполняет модель в браузере на WebGPU, без сервера; API совместим с OpenAI Chat Completions: стриминг, JSON-режим, seed. Вызов функций помечен в README как незавершённый.</li><li>Актуальная версия пакета @mlc-ai/web-llm — 0.2.84 от 27 мая 2026 года; в 2025–2026 годах вышло всего 7 релизов против 63 за 2024 год по данным реестра npm.</li><li>По замерам авторов на MacBook Pro M3 Max WebLLM выдаёт 41,1 токена/с на Llama-3.1-8B и 71,1 токена/с на Phi-3.5-mini, то есть 71–80% от нативного MLC-LLM на том же железе.</li><li>Модели в 4-битной квантизации требуют от 0,7 ГБ видеопамяти (gemma3-1b) до 6,4 ГБ (Qwen3.5-9B) по значениям vram_required_MB в src/config.ts; первый запуск качает всё это с huggingface.co.</li><li>WebGPU по данным MDN есть в Chrome и Edge с версии 113, в Safari 26 с сентября 2025 года, в Firefox с 141 только частично: Linux и Intel-маки не поддерживаются.</li></ul><h2>Как WebLLM выполняет модель в браузере и при чём тут WebGPU?</h2><p>Модель считается на видеокарте пользователя через WebGPU, а всё, что не ложится на GPU, крутится в WebAssembly. Авторы <a href="https://arxiv.org/abs/2412.15803">описывают</a> схему так: родственный проект MLC LLM компилирует открытую модель заранее в два артефакта, конвертированные веса и WASM-библиотеку с WebGPU-ядрами и вспомогательными функциями. WebLLM в браузере загружает оба артефакта с хостинга, инициализирует WebGPU-устройство и дальше исполняет граф вычислений локально.</p><blockquote>Everything runs inside the browser with no server support and is accelerated with WebGPU.</blockquote><p>Отсюда же и главное ограничение, о котором в статье авторы говорят прямо: в отличие от CUDA у WebGPU нет готовых ускоренных библиотек для типовых ядер, поэтому матричные умножения и внимание команде пришлось писать и оптимизировать самой. Цена этого видна в замерах: на Apple MacBook Pro M3 Max в Chrome Canary 133 WebLLM версии 0.2.75 выдавал 41,1 токена/с на 4-битной Llama-3.1-8B против 57,7 у нативного MLC-LLM с Metal-ядрами на той же машине, и 71,1 против 89,3 токена/с на Phi-3.5-mini. Это 71,2% и 79,6% нативной скорости соответственно, замер вендора, другого железа в статье нет.</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-09-03/faf6a5ef-05f1-4c84-a5b3-0de9ac78a2a2.webp" alt="Столбчатая диаграмма: скорость декодирования WebLLM и MLC-LLM в токенах в секунду на Llama-3.1-8B (41,1 против 57,7) и Phi-3.5-mini (71,1 против 89,3)" /><figcaption>Скорость декодирования в браузере и нативно на одном MacBook Pro M3 Max, 4-битная квантизация. График: Tproger по данным статьи авторов WebLLM на arXiv 2412.15803</figcaption></figure><p>Второй компонент, о котором обычно забывают, это кэш. Веса и WASM-библиотека скачиваются при первом обращении и складываются в хранилище браузера. README перечисляет четыре бэкенда, которые задаются полем cacheBackend в AppConfig: Cache API по умолчанию, IndexedDB, Origin Private File System и экспериментальный cross-origin через расширение Chrome, чтобы одни и те же веса не качались заново для каждого сайта. Без расширения движок сам откатывается на Cache API.</p><p>JSON-режим, который в серверных API обычно реализован на стороне провайдера, здесь тоже выполняется локально: по README структурированная генерация встроена в WebAssembly-часть библиотеки модели, а попробовать её со своей JSON-схемой можно в <a href="https://huggingface.co/spaces/mlc-ai/WebLLM-JSON-Playground">JSON Playground</a> на Hugging Face. Про то, как WASM-рантаймы догоняют нативный код, мы писали в заметке про <a href="https://tproger.ru/news/wasmi-2-0-uskoril-interpretaciyu-webassembly-v-2-2-raza">Wasmi 2.0</a>.</p><h2>Что нужно, чтобы запустить первый чат?</h2><p>Достаточно npm-пакета, одного вызова фабрики и терпения на первую загрузку весов. README даёт три варианта установки и импорт через CDN для JSFiddle и CodePen без сборщика.</p><p>Движок создаётся функцией CreateMLCEngine: это асинхронная фабрика: она возвращает Promise, а готовый движок с загруженной моделью получают через await. Колбэк прогресса обязателен на практике, потому что без него пользователь смотрит на пустой экран, пока качаются гигабайты.</p><blockquote>loading models requires downloading and it can take a significant amount of time for the very first run without caching previously</blockquote><p>Дальше интерфейс тот же, что у клиента OpenAI: engine.chat.completions.create({ messages }). Одна ловушка: параметр model в запросе игнорируется, модель выбирается при создании движка или через engine.reload(model). Стриминг включается флагом stream: true, а статистика по токенам приходит только в последнем чанке, если попросить её через stream_options.</p><p>Готовый чат для проверки железа не нужно собирать самому: <a href="https://chat.webllm.ai/">WebLLM Chat</a> сделан на том же пакете, а его код открыт в отдельном репозитории.</p><h2>Какие модели доступны и сколько видеопамяти им нужно?</h2><p>В список prebuiltAppConfig.model_list в <a href="https://github.com/mlc-ai/web-llm/blob/main/src/config.ts">src/config.ts</a> на 3 сентября входят 165 записей: это варианты квантизации и длины контекста для семейств Llama 3.x, Qwen 2.5, Qwen 3 и Qwen 3.5, Phi 3.5 и Phi 4 mini, Gemma 2 и Gemma 3, Mistral и Ministral 3, дистилляты DeepSeek-R1, SmolLM2, OLMo 2, а также две модели эмбеддингов snowflake-arctic-embed. README при этом всё ещё перечисляет старый набор с Llama 2 и Qwen2, так что актуальный набор виден только в коде.</p><p>У каждой записи есть поле vram_required_MB, и это честнее любого «весит N гигабайт»: оно включает не только веса, но и память под KV-кэш при заданном контексте. Для 4-битных вариантов с половинной точностью (суффикс q4f16_1) разброс такой:</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-09-03/dd4f8b13-a996-4064-b90b-4c012e309271.webp" alt="Горизонтальная диаграмма: требуемая видеопамять в гигабайтах для девяти моделей WebLLM от 0,7 ГБ у gemma3-1b до 6,4 ГБ у Qwen3.5-9B" /><figcaption>Значение vram_required_MB для вариантов q4f16_1 с контекстом по умолчанию. График: Tproger по данным src/config.ts репозитория mlc-ai/web-llm, 3 сентября 2026</figcaption></figure><ul><li>gemma3-1b-it — 0,71 ГБ; Llama-3.2-1B-Instruct — 0,88 ГБ; Qwen2.5-0.5B-Instruct — 0,94 ГБ. Помечены флагом low_resource_required, это кандидаты для встроенной графики и ноутбуков.</li><li>Qwen3-0.6B — 1,40 ГБ; gemma-2-2b-it — 1,90 ГБ; Llama-3.2-3B-Instruct — 2,26 ГБ.</li><li>Qwen3-4B — 3,43 ГБ; Phi-3.5-mini-instruct — 3,67 ГБ; Llama-3.1-8B-Instruct — 5,00 ГБ; Qwen3-8B — 5,70 ГБ; Qwen3.5-9B — 6,43 ГБ.</li><li>Есть и Llama-3.1-70B-Instruct в 3-битной квантизации с требованием 31,15 ГБ; на потребительской видеокарте это не запустится.</li></ul><p>Варианты с суффиксом «-1k» урезают контекст до одной тысячи токенов и экономят память: у Llama-3.1-8B это 4,60 ГБ вместо 5,00, у Phi-3.5-mini 2,52 ГБ вместо 3,67. Все эти гигабайты приезжают с <a href="https://huggingface.co/mlc-ai">huggingface.co/mlc-ai</a>, поэтому доступность и скорость этого хоста в вашей сети стоит проверить до того, как обещать пользователям «работает без сервера». Свою модель в формате MLC подключают через appConfig.model_list, указав URL весов и WASM-библиотеки. Какие небольшие открытые модели вышли в августе и на чём их запускать дома, мы собирали в <a href="https://tproger.ru/news/otkrytye-nejroseti-avgusta-frontir-na-odnoj-videokarte-i-chto-za">обзоре открытых нейросетей</a>.</p><p>Полный каталог собранных моделей лежит на mlc.ai/models. Номер совместимой сборки библиотек зашит в пакет: для 0.2.84 это константа modelVersion со значением «v0_2_84/base», так что после обновления npm-пакета кэшированные WASM-библиотеки могут потребовать перезагрузки.</p><h2>Как не заморозить интерфейс: Web Worker или Service Worker?</h2><p>Для обычного приложения хватает выделенного Web Worker, а Service Worker нужен, когда модель должна переживать переходы между страницами. Оба варианта в README оформлены одинаково: в потоке живёт обработчик, в основном скрипте создаётся движок-прокси с тем же интерфейсом MLCEngineInterface.</p><p>С Service Worker сложнее. Его жизненным циклом управляет браузер и может убить поток без предупреждения; движок шлёт heartbeat каждые 10 секунд по умолчанию (значение keepAliveMs в src/service_worker.ts), но авторы просят закладывать обработку ошибок и в приложении. README отдельно требует создавать ServiceWorkerMLCEngineHandler на верхнем уровне скрипта и запрещает делать это внутри обработчиков activate или message: браузер перезапускает уже активный воркер без повторного события activate.</p><blockquote>Service Worker's life cycle is managed by the browser and can be killed any time without notifying the webapp. ServiceWorkerMLCEngine will try to keep the service worker thread alive by periodically sending heartbeat events, but your application should also include proper error handling.</blockquote><p>Отдельная ветка применения — расширения Chrome: в репозитории есть примеры базового расширения и расширения на Service Worker с WebGPU, которое держит модель в фоне. По данным MDN, в Firefox WebGPU недоступен именно в контексте Service Worker, так что этот сценарий пока привязан к Chromium.</p><h2>Где WebLLM выигрывает у серверного API, а где проигрывает?</h2><p>Выигрывает там, где важны приватность промптов и нулевая стоимость токена, проигрывает там, где нельзя выбирать пользователю железо. Разложу по пунктам, отделяя проверяемое от обещаний.</p><ul><li><b>Деньги.</b> Инференс идёт на GPU пользователя, счёт за токены равен нулю. Платите трафиком: каждый новый пользователь качает от 0,7 до 6,4 ГБ весов с Hugging Face; свой CDN нужен только тем, кто перехостит артефакты сам.</li><li><b>Приватность.</b> Промпты и ответы на сервер не уходят, это следует из архитектуры. Но сетевые запросы есть: веса и WASM скачиваются с huggingface.co и jsdelivr, поэтому формулировка «данные никогда не покидают устройство» некорректна, и в политике приватности так писать нельзя.</li><li><b>Скорость.</b> 71–80% от нативного инференса по замеру авторов на M3 Max. На ноутбуке с встроенной графикой цифр в статье нет, и обещать «десятки токенов в секунду» без своего замера нельзя.</li><li><b>Первый запуск.</b> Минуты загрузки против миллисекунд первого ответа у API. Кэш спасает повторные визиты, но не первый.</li><li><b>Браузеры.</b> По данным MDN, WebGPU есть в Chrome и Edge с версии 113 (полная поддержка на Linux только с 144 и только на Intel Gen12 и новее), в Safari 26 на macOS и iOS с 15 сентября 2025 года, в Firefox с 141 частично: есть Windows и Apple Silicon, нет Linux и Intel-маков. Проверка navigator.gpu обязательна.</li><li><b>Управление моделью.</b> Серверный API даёт одну версию модели для всех и мгновенную замену. В WebLLM версия модели живёт в кэше каждого браузера, а обновление пакета может потребовать перекачки библиотек.</li><li><b>Функции.</b> Вызов инструментов через tools и tool_choice в README помечен как WIP с предварительной поддержкой. Для агентских сценариев это стоп-фактор; про выбор стека для агентов у нас есть <a href="https://tproger.ru/articles/kak-vybrat-frejmvork-dlya-ii-agentov">отдельный разбор</a>.</li></ul><p>Есть и организационный риск. По реестру npm пакет обновлялся 19 раз в 2023 году, 63 раза в 2024-м, 3 раза в 2025-м и 4 раза с начала 2026 года; последний релиз 0.2.84 вышел 27 мая. Код в репозитории при этом продолжает меняться, последний push был 3 сентября. Для продакшена это означает, что свежие модели из config.ts могут ждать релиза месяцами.</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-09-03/4059bf51-0d09-422e-8e6b-ba9c40176049.webp" alt="Столбчатая диаграмма: число релизов пакета @mlc-ai/web-llm по годам: 19 в 2023, 63 в 2024, 3 в 2025, 4 в 2026" /><figcaption>Релизы пакета @mlc-ai/web-llm по годам, 2026 год по 3 сентября. График: Tproger по данным реестра npm</figcaption></figure><blockquote>Evaluations show that WebLLM can retain up to 80% native performance on the same device with room to close the gap further.</blockquote><h2>Что делать по шагам, чтобы собрать чат на WebLLM за вечер</h2><p>План ниже покрывает путь от проверки железа до защиты артефактов; команды и имена функций взяты из README для версии 0.2.84.</p><ol><li>Проверьте, что в браузере есть navigator.gpu, и покажите понятную заглушку тем, у кого его нет. По MDN это Chrome и Edge 113+, Safari 26+, Firefox 141+ с оговорками по ОС.</li><li>Установите пакет: npm install @mlc-ai/web-llm (версия 0.2.84). Для прототипа без сборки подойдёт импорт с https://esm.run/@mlc-ai/web-llm.</li><li>Выберите модель из prebuiltAppConfig.model_list по полю vram_required_MB. Для широкой аудитории начните с моделей с флагом low_resource_required: Llama-3.2-1B, Qwen2.5-0.5B, gemma3-1b.</li><li>Создайте движок через CreateMLCEngine с initProgressCallback и выведите прогресс загрузки на экран.</li><li>Перенесите инференс в Web Worker через CreateWebWorkerMLCEngine, чтобы интерфейс не замирал во время генерации.</li><li>Включите стриминг флагом stream: true; для извлечения структурированных данных используйте JSON-режим из раздела Full OpenAI Compatibility.</li><li>Если артефакты лежат на своём хостинге, добавьте в запись модели поле integrity с SRI-хэшами для конфига, WASM и токенизатора; хэш генерируется командой openssl из README.</li></ol><p>При несовпадении хэша движок бросает IntegrityError, либо пишет предупреждение и продолжает работу, если задать onFailure: "warn". Без поля integrity проверка не выполняется вовсе, как и в прежних версиях.</p><h2>Что дальше: чего нет в WebLLM и за чем следить</h2><p>Первое, за чем стоит следить, это релиз после 0.2.84: в src/config.ts уже есть Qwen3.5 и Ministral 3, и вопрос в том, когда они попадут в опубликованный пакет. Второе — статус вызова функций, который держится в README как WIP. Третье — cross-origin хранилище: сейчас это расширение Chrome и экспериментальный API, а без него каждый сайт качает свою копию весов.</p><p>Мы не проверяли скорость на встроенной графике и на Windows-ноутбуках; единственные опубликованные цифры относятся к MacBook Pro M3 Max. Доступность huggingface.co и esm.run из конкретной сети мы тоже не измеряли: перед запуском продукта на WebLLM стоит замерить время первой загрузки у своей аудитории или перехостить артефакты.</p><p>Источники: <a href="https://github.com/mlc-ai/web-llm">GitHub: mlc-ai/web-llm (README, лицензия Apache-2.0)</a>, <a href="https://github.com/mlc-ai/web-llm/blob/main/src/config.ts">src/config.ts: prebuiltAppConfig.model_list с vram_required_MB</a>, <a href="https://github.com/mlc-ai/web-llm/blob/main/src/service_worker.ts">src/service_worker.ts: keepAliveMs и heartbeat</a>, <a href="https://arxiv.org/abs/2412.15803">arXiv 2412.15803: WebLLM: A High-Performance In-Browser LLM Inference Engine</a>, <a href="https://blog.mlc.ai/2024/06/13/webllm-a-high-performance-in-browser-llm-inference-engine">Блог MLC: WebLLM, 13 июня 2024</a>, <a href="https://webllm.mlc.ai/docs/">Документация WebLLM</a>, <a href="https://registry.npmjs.org/@mlc-ai/web-llm">Реестр npm: @mlc-ai/web-llm (версии и даты)</a>, <a href="https://news.ycombinator.com/item?id=49536411">Hacker News: обсуждение WebLLM 2 сентября 2026</a>, <a href="https://developer.mozilla.org/en-US/docs/Web/API/WebGPU_API#browser_compatibility">MDN: WebGPU API, совместимость браузеров</a>, <a href="https://huggingface.co/mlc-ai">Hugging Face: модели mlc-ai</a>, <a href="https://huggingface.co/spaces/mlc-ai/WebLLM-JSON-Playground">WebLLM JSON Playground</a>, <a href="https://chat.webllm.ai/">WebLLM Chat</a>, <a href="https://mlc.ai/models">Каталог моделей MLC</a>, <a href="https://github.com/mlc-ai/mlc-llm">GitHub: mlc-ai/mlc-llm</a></p><p>Изображение на обложке: Скриншот: chat.webllm.ai</p>]]></content:encoded>
    </item>
    <item>
      <title>Chrome 154 beta принёс постквантовое шифрование в Web Crypto</title>
      <link>https://tproger.ru/news/chrome-154-beta-prinyos-postkvantovoe-wifrovanie-v-web-crypto</link>
      <comments>https://tproger.ru/news/chrome-154-beta-prinyos-postkvantovoe-wifrovanie-v-web-crypto?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/chrome-154-beta-prinyos-postkvantovoe-wifrovanie-v-web-crypto</guid>
      <description><![CDATA[<p>Chrome 154 beta: ML-KEM и ML-DSA в Web Crypto, options bag и targetAddressSpace у WebSocket, режимы links и tabs у scroll-marker-group, CORS в Background Fetch.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/chrome-154-beta-prinyos-postkvantovoe-wifrovanie-v-web-crypto">Chrome 154 beta принёс постквантовое шифрование в Web Crypto</a>»</p>]]></description>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[CSS]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Google Chrome]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 03 Sep 2026 03:20:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Google 2 сентября <a href="https://developer.chrome.com/blog/chrome-154-beta">перевела</a> Chrome 154 в бету для Android, ChromeOS, Linux, macOS и Windows; desktop-сборка имеет номер 154.0.8037.0, для Android и ChromeOS сборки выходят отдельно. Самое заметное для веб-разработчиков: в Web Crypto API добавили постквантовые алгоритмы ML-KEM и ML-DSA, WebSocket научился принимать объект настроек и ходить в локальную сеть с явным разрешением, а у CSS-свойства scroll-marker-group появились режимы links и tabs.</p><p>Бета обычно доживает до стабильного релиза без крупных изменений, поэтому всё перечисленное стоит проверять уже сейчас: часть новинок меняет поведение существующего кода. Background Fetch начинает применять CORS, а AbortController теперь передаёт причину отмены в Response и ReadableStream. Автор поста в блоге Chrome for Developers Рэйчел Эндрю; отдельных региональных ограничений на бету в источнике нет.</p><ul><li>Web Crypto получил ML-KEM 768 и 1024, ML-DSA 44, 65 и 87, ChaCha20-Poly1305 и гибридную схему X-Wing.</li><li>WebSocket принимает options bag: new WebSocket(url, { protocols: "soap" }); новое поле targetAddressSpace позволяет подключаться к локальным адресам при secure context и разрешении Local Network Access.</li><li>scroll-marker-group получил режимы links и tabs; в режиме tabs активный маркер остаётся единственным tab-stop, а неактивный контент скрывается из дерева доступности.</li><li>CSSStyleValue и связанные конструкторы доступны в воркерах; text-decoration-inset принимает auto, длину, процент и одно-/двухзначную запись; FontFace.width стал алиасом stretch.</li><li>Background Fetch теперь соблюдает CORS; WebGPU получил модификаторы frag_depth less и greater, которые позволяют не терять ранний Z-тест.</li></ul><h2>Что даёт постквантовая криптография в браузерном API</h2><p>До сих пор постквантовые алгоритмы в Chrome работали только на уровне TLS, незаметно для страницы. В 154 они выходят в JavaScript: через crypto.subtle можно генерировать ключи и выполнять инкапсуляцию ML-KEM (стандарт NIST для обмена ключами) и подписи ML-DSA. Добавлены также ChaCha20-Poly1305 и X-Wing, гибрид классического X25519 и ML-KEM. На практике это нужно тем, кто делает сквозное шифрование в веб-приложениях: мессенджерам, хранилищам паролей, локальным подписям документов. Проверить у себя просто: вызвать crypto.subtle.generateKey с новым именем алгоритма в бете и убедиться, что он не бросает NotSupportedError.</p><h2>Зачем WebSocket объект настроек и локальная сеть</h2><p>Конструктор WebSocket много лет принимал только URL и строку или массив протоколов. Теперь второй аргумент может быть объектом: new WebSocket(url, { protocols: "soap" }). Это задел под будущие опции без ломки сигнатуры. Второе поле, targetAddressSpace, решает конкретную боль: страница с публичного HTTPS-сайта не могла открыть сокет к устройству в локальной сети. В 154 это возможно, но при трёх условиях: secure context, разрешение пользователя по механизму Local Network Access и имя хоста, которое резолвится в локальный IP. Сценарий типичный для панелей управления IoT и локальных серверов разработки.</p><h2>Что меняется в CSS</h2><p>Свойство scroll-marker-group, которое вместе с псевдоэлементами ::scroll-marker позволяет делать карусели и табы без JavaScript, получило два режима. links ведёт себя как набор ссылок, tabs как настоящий tablist: активный маркер единственный останавливается по Tab, а контент неактивных вкладок исключается из accessibility tree. Это закрывает главную претензию к CSS-каруселям: раньше скринридер видел все панели сразу.</p><p>Из остального: text-decoration-inset позволяет отступать подчёркивание от краёв текста и принимает auto, длину, процент и запись из одного или двух значений; FontFace.width и дескриптор font-width в @font-face стали алиасами stretch и font-stretch; типизированная объектная модель CSS (CSSStyleValue и конструкторы) теперь доступна в воркерах, что упрощает расчёты стилей вне главного потока.</p><h2>Что может сломаться после обновления</h2><ul><li>Background Fetch теперь применяет CORS: фоновые загрузки с чужих доменов без правильных заголовков начнут падать.</li><li>AbortController прокидывает reason в Response и ReadableStream: код, который сравнивал ошибку отмены с конкретным AbortError, может получить другой объект.</li><li>По заметкам к релизу, браузер в ряде сценариев использует события click вместо пары pointerdown/pointerup; обработчики, завязанные на порядок этих событий, стоит перепроверить.</li><li>В WebGPU появились модификаторы frag_depth less и greater: шейдеры, которые пишут глубину, могут вернуть себе ранний Z-тест, но это требует правки WGSL.</li></ul><h2>Как попробовать</h2><p>Бета ставится параллельно со стабильным Chrome со <a href="https://www.google.com/chrome/beta/">страницы загрузки Chrome Beta</a>; анонс сборки опубликован в <a href="https://chromereleases.googleblog.com/2026/09/chrome-beta-for-desktop-update.html">Chrome Releases</a>; на Android доступна через бета-программу в магазине. Стабильный релиз 154 по обычному графику Chrome выходит примерно через четыре недели после беты, точную дату Google в посте не называет. До этого времени полезно прогнать сайт с включёнными фоновыми загрузками и WebSocket-подключениями к локальным устройствам.</p><p>Что происходит в других движках, можно сравнить с недавними релизами: WebKit <a href="https://tproger.ru/news/safari-27-poluchit-perepisannyj-zagruzchik-modulej-i-rabochij-top-l">переписал загрузчик модулей</a> для Safari 27, а Firefox 155 <a href="https://tproger.ru/news/firefox-dlya-ios-poluchil-vstroennyj-blokirovshhik-reklamy-a-firefo">добавил</a> CSS-функцию progress(). Полный список изменений Chrome 154 с примерами кода лежит в <a href="https://developer.chrome.com/blog/chrome-154-beta">блоге Chrome for Developers</a>.</p><p>Источники: <a href="https://developer.chrome.com/blog/chrome-154-beta">Chrome for Developers: Chrome 154 beta</a>, <a href="https://chromereleases.googleblog.com/2026/09/chrome-beta-for-desktop-update.html">Chrome Releases: Chrome Beta for Desktop Update</a></p><p>Изображение на обложке: Google, логотип Chrome</p>]]></content:encoded>
    </item>
    <item>
      <title>Safari 27 получит переписанный загрузчик модулей и рабочий top-level await</title>
      <link>https://tproger.ru/news/safari-27-poluchit-perepisannyj-zagruzchik-modulej-i-rabochij-top-l</link>
      <comments>https://tproger.ru/news/safari-27-poluchit-perepisannyj-zagruzchik-modulej-i-rabochij-top-l?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/safari-27-poluchit-perepisannyj-zagruzchik-modulej-i-rabochij-top-l</guid>
      <description><![CDATA[<p>WebKit переписал загрузчик ES-модулей с нуля на C++ и исправил многолетние ошибки top-level await в Safari. Что ломалось и когда убирать обходные пути.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/safari-27-poluchit-perepisannyj-zagruzchik-modulej-i-rabochij-top-l">Safari 27 получит переписанный загрузчик модулей и рабочий top-level await</a>»</p>]]></description>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Safari]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 02 Sep 2026 16:00:09 GMT</pubDate>
      <content:encoded><![CDATA[<p>Команда WebKit 2 сентября <a href="https://webkit.org/blog/18227/fixing-top-level-await-in-safari/">рассказала</a>, что переписала загрузчик JavaScript-модулей Safari с нуля и тем самым закрыла многолетние ошибки top-level await, из-за которых модули с await на верхнем уровне падали с сообщением «Cannot access ... before initialization». Исправление уже есть в Safari Technology Preview 251 и бете Safari 27; в стабильный Safari оно попадёт с выходом Safari 27.</p><p>Для фронтендера это означает, что один из последних поводов не использовать top-level await в продакшене исчезает: в Chrome и Firefox функция работает давно, а Safari оставался браузером, ради которого библиотеки и сборщики держали обходные пути. По словам автора публикации, инженера WebKit Кая Тамкуна, вместе с загрузчиком в порядок приведены ES-модули в целом, так что после релиза Safari 27 на них «можно опираться, не задумываясь».</p><ul><li>Старый загрузчик модулей Safari был написан по черновику WHATWG Loader, последний раз обновлённому в январе 2016 года, ещё до появления async/await в языке.</li><li>Top-level await, добавленный в ECMAScript 2022, реализовали поверх этой устаревшей основы, отсюда ошибки порядка выполнения и обращения к неинициализированным экспортам.</li><li>В январе 2026 года команда удалила старый загрузчик целиком и переписала его на C++ по алгоритмам спецификации ECMAScript, отказавшись от самохостируемого JavaScript.</li><li>Проверка: тест-кейсы от команды Bun, чей рантайм на JavaScriptCore унаследовал те же баги, фаззер графов модулей со сравнением вывода с другими движками, все модульные тесты test262 и исправленные тесты WPT без регрессий.</li><li>Попробовать можно сегодня в Safari Technology Preview 251 или Safari 27 beta; сроки стабильного Safari 27 в публикации не названы.</li></ul><h2>Что именно ломалось</h2><p>Top-level await позволяет писать await прямо в теле ES-модуля: модуль приостанавливается до разрешения промиса, и вместе с ним ждут все модули, которые его импортируют, а независимые ветки графа зависимостей продолжают выполняться. В Safari нарушался именно порядок: загрузчик неверно выбирал, когда считать модуль выполненным. WebKit показывает это на минимальном примере, где один и тот же модуль с задержкой на верхнем уровне динамически импортируется три раза подряд.</p><p>Ожидаемый порядок завершения импортов 1, 2, 3. Старый загрузчик выдавал 2, 3, 1, причём второй и третий импорт завершались с ошибкой Cannot access 'someArray' before initialization, и только первый печатал список экспортов. Причина одна: когда первый импорт доходил до await и уступал управление, промис второго импорта должен был ждать окончания выполнения модуля, но из-за ошибки разрешался сразу. Код получал ещё не инициализированные экспорты и падал. С новым загрузчиком вывод становится ожидаемым: 1, 2, 3, и каждый раз с корректным списком ключей.</p><h2>Почему баг не удавалось починить годами</h2><p>Спецификация ECMAScript оставляет часть механики модулей на усмотрение хоста, в первую очередь загрузку по сети в браузере или с диска в Node.js и Bun. Загрузчик Safari писали в эпоху предложения WHATWG Loader, которое описывало эту хостовую часть и последний раз обновлялось в январе 2016 года. Тогда модули выполнялись строго синхронно, и черновика хватало. Затем предложение фактически умерло, вытесненное разделом о модулях в самом стандарте ECMAScript, а в 2022 году в язык вошёл top-level await. В WebKit его реализовали поверх алгоритмов заброшенного черновика, а не по асинхронным алгоритмам стандарта. Отсюда тонкие ошибки, которые, по словам Тамкуна, команда безуспешно пыталась закрыть несколько раз, пока не решила заменить основание.</p><p>Второе решение касается языка реализации. Старый загрузчик был самохостируемым встроенным кодом на JavaScript. У такого подхода есть плюсы: его можно инлайнить в пользовательский код и не платить за переход между JavaScript и C++. Но он медленнее стартует, потому что компилируется во время выполнения, а оптимизирующие JIT-компиляторы JavaScriptCore плохо используют его широкие паттерны применения; загрузчик к тому же не горячий путь, так что выигрыша от компиляции на лету почти нет. Новый загрузчик написан целиком на C++.</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-09-02/02a4b3fb-cf74-49e7-9132-dcbbed91c537.webp" alt="Схема вызовов операций загрузчика модулей WebKit: загрузка, линковка, выполнение и вспомогательные функции" /><figcaption>Граф вызовов операций загрузчика модулей, по которому команда планировала порядок реализации. Источник: WebKit</figcaption></figure><h2>Как переписывали и проверяли</h2><p>Работа началась в январе 2026 года с удаления файла со старым загрузчиком. Дальше команда переводила псевдокод операций из спецификации ECMAScript в C++ по одной, начав с листовых функций вроде ExecuteModule и ModuleRequestsEqual, у которых нет зависимостей, и двигаясь по графу вызовов. Через несколько недель черновая реализация справлялась с типичными случаями, и появился draft pull request.</p><p>Тестов было три слоя. Во-первых, инженеры Bun, чей рантайм построен на JavaScriptCore и унаследовал те же проблемы, передали собранные ими случаи неправильного поведения; их адаптировали под консольную оболочку jsc. Во-вторых, команда написала фаззер, который генерирует большие графы модулей, часть с top-level await, часть без, и сравнивает текстовый вывод JavaScriptCore с выводом других движков байт в байт; по словам WebKit, во всех проверенных примерах новый загрузчик отработал верно. В-третьих, все модульные тесты набора test262 стали проходить, а часть ранее падавших тестов WPT исправилась без регрессий. Перед слиянием разработчики несколько недель пользовались сборкой Safari с новым загрузчиком как основным браузером.</p><h2>Что делать фронтендеру</h2><ul><li>Проверить свои модули с top-level await в Safari Technology Preview 251 или Safari 27 beta; о найденных проблемах WebKit просит сообщать на bugs.webkit.org.</li><li>Обходные пути для Safari пока не убирать: стабильный Safari 27 ещё не вышел, а старые версии Safari останутся у пользователей надолго.</li><li>Если проект работает на Bun, следить за обновлениями рантайма: он использует JavaScriptCore и, по словам WebKit, унаследовал те же ошибки загрузчика; о сроках их исправления в Bun публикация не говорит.</li></ul><p>Дата выхода стабильного Safari 27 в публикации не названа. Открытым остаётся и вопрос старых версий: о переносе исправления в уже вышедшие Safari WebKit не сообщает, так что доля пользователей на Safari 26 и старше будет определять, когда обходные пути можно убрать совсем.</p><p>Источник: <a href="https://webkit.org/blog/18227/fixing-top-level-await-in-safari/">WebKit Blog: Fixing Top-Level Await in Safari</a></p><p>Изображение на обложке: Изображение: логотип WebKit, Apple</p>]]></content:encoded>
    </item>
    <item>
      <title>Firefox для iOS получил блокировщик рекламы, а Firefox 155 функцию progress()</title>
      <link>https://tproger.ru/news/firefox-dlya-ios-poluchil-vstroennyj-blokirovshhik-reklamy-a-firefo</link>
      <comments>https://tproger.ru/news/firefox-dlya-ios-poluchil-vstroennyj-blokirovshhik-reklamy-a-firefo?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/firefox-dlya-ios-poluchil-vstroennyj-blokirovshhik-reklamy-a-firefo</guid>
      <description><![CDATA[<p>Mozilla добавила в Firefox для iOS встроенный блокировщик рекламы на WebKit Content Blocker и EasyList. Одновременно вышел Firefox 155 с CSS-функциями progress() и alpha(), Promise.allKeyed() и исправлениями уязвимостей высокого уровня. Что включить и что проверить.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/firefox-dlya-ios-poluchil-vstroennyj-blokirovshhik-reklamy-a-firefo">Firefox для iOS получил блокировщик рекламы, а Firefox 155 функцию progress()</a>»</p>]]></description>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[CSS]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[iOS]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 01 Sep 2026 17:25:52 GMT</pubDate>
      <content:encoded><![CDATA[<p>Mozilla 1 сентября <a href="https://blog.mozilla.org/en/firefox/ad-blocker-on-ios/">добавила</a> в <b>Firefox для iOS</b> встроенный блокировщик рекламы. На iPhone это важнее, чем звучит: расширения в iOS-версии Firefox, по формулировке Mozilla, «недоступны таким же образом», как на десктопе и Android, а браузер работает на движке WebKit от Apple, поэтому uBlock Origin туда не поставить. Теперь блокировка есть в настройках, но выключена по умолчанию.</p><p>В тот же день вышел <b>Firefox 155</b> для десктопа, и для верстальщиков в нём есть чем заняться: CSS-функции progress() и alpha(), свойство font-width, attr() в любом свойстве, а в JavaScript Promise.allKeyed(). Обновиться стоит и без новинок: бюллетень безопасности MFSA 2026-82 закрывает несколько уязвимостей высокого уровня.</p><ul><li>Блокировщик в Firefox для iOS включается в Settings, затем Browsing, затем Ad Blocker; по умолчанию выключен, расширение ставить не нужно.</li><li>Работает на технологии Apple WebKit Content Blocker и списке EasyList; рекламу в поисковой выдаче и рекламу самих сайтов может пропускать.</li><li>Firefox 155: CSS progress(), alpha(), font-width, attr() везде; Promise.allKeyed() и allSettledKeyed(); согласование QUIC v2 для HTTP/3; NDJSON в JSON Viewer.</li><li>MFSA 2026-82 закрывает уязвимости высокого уровня, среди них CVE-2026-84119, 84143 и 84144, и повышение привилегий в Firefox для Android.</li><li>Минимальную версию iOS для блокировщика Mozilla не назвала; доступность функции по регионам анонс не описывает.</li></ul><h2>Почему блокировщик пришлось встраивать</h2><p>Apple разрешает сторонним браузерам блокировать контент только через свой механизм <b>Content Blocker</b>: приложение отдаёт WebKit готовый список правил, а сам движок решает, какие запросы не выполнять. Расширение не может «посмотреть» на страницу и вмешаться в её код, как это делает uBlock Origin на десктопе. Mozilla взяла список EasyList, самый распространённый набор правил для рекламы, и упаковала его в такой блок правил внутри приложения.</p><blockquote>Ad Blocker uses Apple's WebKit Content Blocker technology and the EasyList filter list.</blockquote><p>Из этой архитектуры следуют ограничения, которые Mozilla перечисляет сама. Реклама, которую сайт отдаёт с собственного домена, может остаться, потому что её не отличить от контента по URL. Реклама в результатах поиска не блокируется. Рекламные ярлыки на стартовой странице самого Firefox к блокировщику не относятся. Включается всё в три касания: Settings, Browsing, Ad Blocker; там же выключается, если сайт перестал работать.</p><h2>Что Firefox 155 даёт верстальщику</h2><p>По <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/155">заметкам для разработчиков на MDN</a>, самое полезное в CSS — функция progress(): она возвращает долю от 0 до 1, показывающую, где значение находится между двумя границами. Раньше такой расчёт делали руками через calc(), теперь адаптивные размеры шрифта и отступов записываются короче. Функция alpha() меняет прозрачность цвета без переписывания его в rgb(), а attr() отныне работает в любом свойстве, а не только в content.</p><p>В JavaScript добавились Promise.allKeyed() и Promise.allSettledKeyed(): они принимают объект с промисами и возвращают объект с теми же ключами, так что не нужно сопоставлять результаты по индексам массива. Свойство font-width заменило font-stretch, старое имя оставлено как псевдоним. Если импорт модуля упал из-за временной ошибки сервера, повторный импорт теперь может выполниться успешно; это касается JS, JSON, CSS и текстовых модулей. В сетевом стеке появилось согласование QUIC version 2 для HTTP/3, а JSON Viewer в DevTools научился читать NDJSON построчно.</p><p>Для автотестов: в WebDriver BiDi исправлены перезагрузка фреймов, подписки и конфликт с DevTools, в WebRTC добавлена поддержка двухбайтовых RTP-заголовков с идентификаторами от 15 и новые поля статистики. Перед использованием progress() и alpha() в проде стоит сверить поддержку в Chrome и Safari на caniuse: MDN описывает только Firefox.</p><h2>Почему обновиться сегодня</h2><p><a href="https://www.mozilla.org/en-US/security/advisories/mfsa2026-82/">Бюллетень MFSA 2026-82</a> сопровождает релиз набором исправлений. CVE-2026-84119 (выход из песочницы через use-after-free в навигации DOM), CVE-2026-84143 и CVE-2026-84144 помечены как уязвимости высокого уровня, CVE-2026-84142 объединяет внутренне найденные ошибки памяти умеренного уровня. Отдельно для Firefox на Android бюллетень называет повышение привилегий (CVE-2026-84117, высокий уровень) и раскрытие информации через WebExtensions (CVE-2026-84127, умеренный уровень). Обновление на 155 закрывает всё это разом; на десктопе и Android оно важнее новых функций.</p><h2>Что дальше</h2><p>Mozilla объясняет встроенный блокировщик ограничениями расширений на iOS и формулирует их как «недоступны таким же образом», а не «невозможны навсегда»: в ЕС и Японии Apple уже допускает альтернативные движки, и если Firefox на iOS когда-нибудь перейдёт на Gecko, вопрос с расширениями встанет заново. Пока же блокировщик работает ровно в тех пределах, которые задаёт Content Blocker API.</p><p>Источники: <a href="https://blog.mozilla.org/en/firefox/ad-blocker-on-ios/">Introducing Ad Blocker for Firefox on iOS (Mozilla)</a>, <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/155">Firefox 155 for developers (MDN)</a>, <a href="https://www.mozilla.org/en-US/security/advisories/mfsa2026-82/">Mozilla Foundation Security Advisory 2026-82</a></p><p>Изображение на обложке: Mozilla</p>]]></content:encoded>
    </item>
    <item>
      <title>Google удалил uBlock Origin и другие расширения Manifest V2 из магазина Chrome</title>
      <link>https://tproger.ru/news/google-ubral-ublock-origin-i-ostalnye-raswireniya-manifest-v2-iz</link>
      <comments>https://tproger.ru/news/google-ubral-ublock-origin-i-ostalnye-raswireniya-manifest-v2-iz?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/google-ubral-ublock-origin-i-ostalnye-raswireniya-manifest-v2-iz</guid>
      <description><![CDATA[<p>31 августа Google удалил из Chrome Web Store все расширения Manifest V2, включая uBlock Origin. Что произошло с уже установленными расширениями, куда переехать пользователям и что менять разработчикам при переходе на Manifest V3.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/google-ubral-ublock-origin-i-ostalnye-raswireniya-manifest-v2-iz">Google удалил uBlock Origin и другие расширения Manifest V2 из магазина Chrome</a>»</p>]]></description>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Google Chrome]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 01 Sep 2026 17:25:20 GMT</pubDate>
      <content:encoded><![CDATA[<p>Google 31 августа удалил из Chrome Web Store все оставшиеся расширения на <b>Manifest V2</b>, и вместе с ними из магазина исчез полный <b>uBlock Origin</b>, самый популярный блокировщик рекламы. Дата удаления указана в <a href="https://developer.chrome.com/docs/extensions/develop/migrate/mv2-deprecation-timeline">официальном графике отказа от Manifest V2</a> и продублирована в <a href="https://github.com/gorhill/uBlock">README проекта</a>: «Chrome Web Store: удалён 31 августа 2026 года». Карточка расширения в магазине больше не открывается: магазин отвечает, что элемент недоступен.</p><p>Для пользователя Chrome это означает, что установить полный uBlock Origin из магазина больше нельзя, а там, где он ещё стоит, он уже не работает без корпоративной политики. Для разработчиков расширений закончился последний переходный режим: с этого дня у клиентов не может быть рабочей V2-сборки, которую можно было бы чинить и обновлять.</p><ul><li>31 августа 2026 года Google удалил из Chrome Web Store все расширения Manifest V2; uBlock Origin в их числе.</li><li>Chrome 138 был последней версией, где корпоративная политика ExtensionManifestV2Availability могла включить V2; в Chrome 139 политика удалена.</li><li>Установленные V2-расширения на старых версиях Chrome остаются в списке, но отключены для обычных пользователей ещё с марта 2025 года и не обновляются.</li><li>Полный uBlock Origin доступен в Firefox Add-ons и Microsoft Edge Add-ons; для Chrome автор предлагает uBlock Origin Lite на Manifest V3.</li><li>Разработчикам: путь V2 в Chrome Web Store закрыт полностью; Edge завершает переход позже по своему графику.</li></ul><h2>Чем Manifest V3 отличается от V2 и почему это важно для блокировщиков</h2><p>Manifest — это набор правил, по которым браузер разрешает расширениям вмешиваться в работу страниц. В V2 расширение могло само перехватывать каждый сетевой запрос через webRequest, анализировать его и блокировать по своей логике. В V3 этот механизм заменён на declarativeNetRequest: расширение заранее передаёт браузеру список правил фильтрации, а решения принимает сам Chrome. Google объясняет переход безопасностью и производительностью: расширение больше не видит содержимое запросов и не может выполнять удалённо загруженный код.</p><p>Для блокировщиков разница принципиальная. Число правил ограничено, динамические правила по содержимому страницы невозможны, а списки фильтров нельзя обновлять чаще, чем выходит новая версия расширения. Автор uBlock Origin Рэймонд Хилл с начала перехода писал, что полноценная версия в этой модели невозможна, и выпустил отдельное расширение uBlock Origin Lite, которое живёт в рамках V3. По его README, у Lite нет динамической фильтрации, а часть косметических правил работает только в более агрессивных режимах.</p><h2>Хронология: четыре с половиной года на переезд</h2><ul><li>Январь 2022 года: Chrome Web Store перестал принимать новые публичные и unlisted-расширения на V2.</li><li>Июнь 2022 года: магазин перестал принимать новые приватные V2-расширения.</li><li>31 марта 2025 года: V2 начали отключать по умолчанию у обычных пользователей; корпоративные клиенты могли включить его ключом политики ExtensionManifestV2Availability.</li><li>Chrome 138: последняя версия, в которой этот ключ работал; в Chrome 139 политика удалена.</li><li>31 августа 2026 года: все оставшиеся V2-расширения удалены из Chrome Web Store.</li></ul><blockquote>All remaining Manifest V2 extensions are removed from the Chrome Web Store.</blockquote><h2>Что происходит с уже установленным uBlock Origin</h2><p>Если расширение стоит на Chrome 138 и старше, оно остаётся в списке установленных, но для обычных пользователей уже отключено: с марта 2025 года включить его могла только корпоративная политика. Обновлений оно не получает, в том числе списков фильтров, которые у полной версии обновляются через код расширения. После удаления из магазина переустановить его оттуда нельзя. На Chrome 139 и новее полный uBlock Origin не запускается независимо от того, откуда он был установлен.</p><p>Практический выбор для пользователя Chrome сводится к трём вариантам. Первый: uBlock Origin Lite, который использует встроенный API фильтрации и справляется с большинством рекламы, но уступает полной версии. Второй: Firefox, где, по словам самого автора в README, uBlock Origin «работает лучше всего». Третий: Microsoft Edge, в чьём магазине расширение по-прежнему есть; Edge, по графику в README, завершает переход на V3 позже Chrome; для Opera README указывает лишь доступность uBlock Origin. Про Brave отдельной оговорки в README нет.</p><h2>Что это значит для разработчиков расширений</h2><p>Новости для тех, кто пишет под Chrome, нет уже год: в Chrome Web Store V2 нельзя было опубликовать с 2022 года. Изменилось другое: закончился режим «у клиентов ещё стоит старая версия, и её можно чинить». Если у продукта остались V2-сборки в корпоративных установках, они больше не получат ни одного обновления, и переезд на V3 из «когда-нибудь» стал срочным.</p><ul><li>Сетевую фильтрацию переносите на declarativeNetRequest: статические правила в JSON внутри пакета, динамические через API, с лимитом на число правил, который стоит проверить по документации Chrome до проектирования.</li><li>Фоновые страницы заменяйте на service worker; он засыпает, поэтому состояние держите в chrome.storage, а не в переменных.</li><li>Удалённо загружаемый код в V3 запрещён: вся логика должна быть внутри пакета расширения; списки фильтров обновляются только с новой версией.</li><li>Перед публикацией проверьте тот же пакет в Edge и Firefox: у них свои магазины и свои отличия в поддержке V3.</li></ul><h2>Что дальше</h2><p>Google завершила переход, который анонсировала ещё в 2019 году. Следующий фронт — сам API declarativeNetRequest: авторы блокировщиков будут добиваться повышения лимитов на правила и новых возможностей, а Google будет решать, насколько далеко готова пойти. Пока этого не произошло, Chrome остаётся браузером, где реклама блокируется хуже, чем в Firefox, и это уже не временная ситуация, а свойство платформы.</p><p>Источники: <a href="https://developer.chrome.com/docs/extensions/develop/migrate/mv2-deprecation-timeline">Manifest V2 support timeline (Chrome for Developers)</a>, <a href="https://github.com/gorhill/uBlock">Репозиторий uBlock Origin</a>, <a href="https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm">Карточка uBlock Origin в Chrome Web Store</a>, <a href="https://news.ycombinator.com/item?id=49514878">Обсуждение на Hacker News</a></p><p>Изображение на обложке: скриншот Chrome Web Store</p>]]></content:encoded>
    </item>
    <item>
      <title>KolibriOS 0.7.7: ОС на ассемблере, которая влезает на дискету</title>
      <link>https://tproger.ru/articles/kolibrios-0-7-7-os-na-assemblere-kotoraya-vlezaet-na-disketu</link>
      <comments>https://tproger.ru/articles/kolibrios-0-7-7-os-na-assemblere-kotoraya-vlezaet-na-disketu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kolibrios-0-7-7-os-na-assemblere-kotoraya-vlezaet-na-disketu</guid>
      <description><![CDATA[<p>KolibriOS 0.7.7 — российская ОС на ассемблере, которая помещается на дискету и работает на i586 с 8 МБ ОЗУ. Разбираем возможности и ограничения.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kolibrios-0-7-7-os-na-assemblere-kotoraya-vlezaet-na-disketu">KolibriOS 0.7.7: ОС на ассемблере, которая влезает на дискету</a>»</p>]]></description>
      <category><![CDATA[Низкоуровневое программирование]]></category>
      <category><![CDATA[Ретро]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Оптимизация]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Hardware]]></category>
      <category><![CDATA[Производительность]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Язык ассемблера]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 04 Jul 2026 12:28:13 GMT</pubDate>
      <content:encoded><![CDATA[<p>В 2026 году операционная система, которая полностью умещается на 3,5-дюймовой дискете и загружается быстрее, чем вы успеваете отпить кофе, звучит как технологическая шутка. Но <b>KolibriOS 0.7.7</b> существует, развивается и даже имеет рабочий графический стол. Это не эмулятор и не демо: полноценная 32-битная ОС, ядро которой написано на ассемблере.</p><p>В своей колонке <i>Daily Drivers</i> редактор Hackaday Дженни Лист скачала ISO-образ, запустила KolibriOS на современном ThinkPad и удивилась: система выглядит зрелой, стабильной и по-настоящему быстрой. Разбираем, что это за проект, откуда он взялся и кому пригодится сегодня.</p><h2>Что такое KolibriOS</h2><p><b>KolibriOS</b> — российский форк MenuetOS, созданный в 2004 году. В то время как автор оригинального MenuetOS Вилле Турьянмаа переключился на закрытую 64-битную версию, сообщество вокруг русскоязычного порта сохранило код открытым и продолжило развивать 32-битную ветку. Название «Колибри» выбрано неслучайно: система маленькая и быстрая, как птица-колибри.</p><p>Проект поддерживается преимущественно разработчиками из России, Казахстана, Украины и Германии. Код распространяется под открытой лицензией, а сборки регулярно публикуются на официальном сайте и зеркалах сообщества.</p><h2>Версия 0.7.7</h2><p>Версия 0.7.7 продолжает философию предельного минимализма. Минимальные системные требования смехотворны по нынешним меркам: <b>1 МБ</b> места на диске, <b>8 МБ</b> оперативной памяти и процессор класса <b>i586</b>. При этом система выдаёт графический интерфейс, многозадачность и набор встроенных программ.</p><p>Дженни Лист отмечает, что на ThinkPad 2020-х годов KolibriOS загружается «в мгновение ока» и сразу показывает рабочий стол. Интерфейс выглядит пиксельным, как в 1990-х: нет сглаживания, есть ощущение ретро. Но при этом всё работает — без синих экранов и зависаний.</p><ul><li>KolibriOS 0.7.7 — 32-битная ОС с ядром на ассемблере, базовый образ весит около 1 МБ.</li><li>Минимальные требования: i586, 8 МБ ОЗУ, 1 МБ на диске.</li><li>В комплекте браузеры, игры, эмуляторы, графические редакторы и среда разработки.</li><li>Главное ограничение для повседневного использования — отсутствие поддержки HTTPS.</li><li>Лучше всего подходит для старого железа, тонких клиентов, обучения и ретрокомпьютинга.</li></ul><h2>Как устроена система</h2><h3>Ядро на ассемблере</h3><p>Большая часть KolibriOS написана на <b>FASM</b> — плоском ассемблере. Это объясняет крошечный размер исполняемых файлов и молниеносную загрузку: система не тратит время на инициализацию абстракций, слоёв совместимости и десятков фоновых служб.</p><p>Важная оговорка: несмотря на миф «всё на ассемблере», часть приложений и драйверов портирована или написана на C, Free Pascal, Oberon и даже Python. Но ядро, графическая подсистема и системные вызовы остаются ассемблерными.</p><h3>Файловые системы и загрузка</h3><p>KolibriOS умеет загружаться с CD/DVD, USB, жёстких дисков и даже с классической дискеты 1,44 МБ. Поддерживаются файловые системы FAT12/16/32, exFAT, NTFS и ext2/3/4. Есть варианты для Coreboot и загрузка прямо из Windows.</p><h2>Что внутри: программы и игры</h2><p>Несмотря на размер, KolibriOS поставляется с обширным набором софта. По данным сообщества, в образ входят более <b>250 программ</b>, включая текстовый процессор, просмотрщик изображений, графический редактор, музыкальный плеер, IRC-клиент и веб-браузеры.</p><p>Из игр и развлечений — порты эмуляторов, DOSBox, а также shareware-версии классики вроде DOOM и Wolfenstein 3D на полноценном CD-образе. Есть поддержка SDL, что позволяет переносить проекты с «больших» систем.</p><blockquote>Something this polished deserves a while to play around.</blockquote><h2>Главное ограничение: интернет без HTTPS</h2><p>Дженни Лист называет именно этот момент решающим: встроенные браузеры KolibriOS, включая Netsurf и Webview, не поддерживают HTTPS. Без этого современный веб практически закрыт: большинство сайтов, включая сам Hackaday, просто не откроются.</p><p>Это меняет статус системы с «основной ОС на каждый день» на «платформу для специальных задач». Почта, мессенджеры, облачные сервисы и онлайн-документация остаются недоступны без промежуточного прокси или другой машины.</p><p><b>Почему HTTPS сложно:</b><br />Современный TLS требует большой криптографической библиотеки, регулярных обновлений корневых сертификатов и поддержки множества алгоритмов. В условиях ОС размером в мегабайт это серьёзный архитектурный вызов, который сообщество пока не взяло в штатный комплект.</p><h2>Кому и где пригодится KolibriOS</h2><p>С учётом ограничений у KolibriOS остаётся несколько чётких сценариев применения. В России и соседних странах это особенно актуально: парки старого офисного и школьного оборудования часто содержат машины, которые официально «не тянут» современные ОС.</p><ul><li>Воскрешение старого железа. Pentium- и ранние Core-машины получают рабочий стол, браузер для локальных страниц и офисные утилиты.</li><li>Тонкие клиенты. Низкие требования к RAM и CPU делают KolibriOS кандидатом для терминалов с удалённым рабочим столом.</li><li>Обучение. Ядро на ассемблере, простые системные вызовы и небольшой кодовой базы — отличная площадка для изучения устройства ОС.</li><li>Ретрокомпьютинг. Запуск DOS-игр через эмулятор, классические 2D-игры и ностальгический интерфейс 1990-х.</li><li>Встроенные системы. Сборка Kolibri-A ориентирована на специализированное железо и железные проекты.</li></ul><h2>Как попробовать KolibriOS</h2><p>Попробовать систему проще всего в виртуальной машине. Скачайте ISO-образ с официального сайта, создайте VM с 64 МБ ОЗУ и загрузитесь с образа. Для реального железа подойдёт запись образа на USB-флешку или CD.</p><ul><li>Скачайте ISO или образ дискеты с официального сайта KolibriOS.</li><li>Для VM: создайте 32-битную машину с 64 МБ RAM и VESA-видео.</li><li>Для железа: запишите ISO на CD или USB через обычную утилиту.</li><li>Загрузитесь и выберите разрешение экрана из меню загрузчика.</li><li>Исследуйте меню «Пуск»: игры, утилиты, терминал и браузер.</li></ul><p>Если планируете использовать сетевые функции, проверьте совместимость сетевой карты по <a href="https://wiki.kolibrios.org/" rel="noopener noreferrer">списку оборудования</a>. Поддерживаются многие чипы Realtek, Intel и 3Com.</p><h2>Выводы</h2><p>KolibriOS 0.7.7 — это не замена Windows или Linux, а демонстрация того, какой отклик может давать компьютер, когда софт пишут под железо, а не под абстракции. В эпоху, когда операционки растут гигабайтами, проект напоминает: минимализм ещё жив.</p><p>Для российского читателя у KolibriOS есть дополнительный смысл: это открытый проект с русскоязычным сообществом, который можно изучать, дополнять и применять для решения практических задач — от перевода старого классного компьютера в рабочее состояние до обучения низкоуровневому программированию.</p><p>Главный вопрос — нужна ли вам такая система прямо сейчас. Если у вас есть старый 32-битный ноутбук, интерес к ассемблеру или просто ностальгия по быстрым ОС — попробуйте. А для повседневной работы с интернетом пока придётся держать под рукой что-то посовременнее.</p><p><b>Источники:</b></p><ul><li><a href="https://hackaday.com/2026/07/02/jennys-daily-drivers-kolibrios-0-7-7/" rel="noopener noreferrer">Jenny’s Daily Drivers: KolibriOS 0.7.7 — Hackaday</a></li><li><a href="https://distrowatch.com/kolibri" rel="noopener noreferrer">KolibriOS на DistroWatch</a></li><li><a href="https://wiki.kolibrios.org/" rel="noopener noreferrer">Официальная вики KolibriOS</a></li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Google Chrome окончательно закроет лазейки для старых блокировщиков рекламы</title>
      <link>https://tproger.ru/news/google-chrome-okonchatelno-zakroet-lazejki-dlya-staryh-blokirovshhi</link>
      <comments>https://tproger.ru/news/google-chrome-okonchatelno-zakroet-lazejki-dlya-staryh-blokirovshhi?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/google-chrome-okonchatelno-zakroet-lazejki-dlya-staryh-blokirovshhi</guid>
      <description><![CDATA[<p>Google Chrome 150 и 151 лишат пользователей последних обходных путей для блокировщиков на Manifest V2. Разбираем, что изменится и какие расширения останутся.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/google-chrome-okonchatelno-zakroet-lazejki-dlya-staryh-blokirovshhi">Google Chrome окончательно закроет лазейки для старых блокировщиков рекламы</a>»</p>]]></description>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Google Chrome]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 16 Jun 2026 16:00:19 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если вы до сих пор используете классический uBlock Origin (версия на Manifest V2) в Google Chrome, первое обновление отключит его уже в конце июня. Компания готовит два релиза, которые лишат старые блокировщики рекламы последних технических лазеек.</p><ul><li>Chrome 150 (конец июня) и Chrome 151 (июль 2026) удалят остатки поддержки Manifest V2.</li><li>Перестанут работать старые блокировщики вроде uBlock Origin, если их запускали через обходные пути.</li><li>Компания ссылается на технический долг, сложность поддержки и риски для безопасности, включая баги, специфичные для MV2.</li><li>Альтернатива — расширения на Manifest V3, например uBlock Origin Lite, или переход на другой браузер.</li></ul><p>По данным <a href="https://9to5google.com">9to5Google</a>, в версиях <b>Chrome 150</b> (конец июня) и <b>Chrome 151</b> (июль) Google уберёт последние упоминания платформы <b>Manifest V2</b> из кода браузера.</p><p>Manifest V2 — это формат расширений Chrome, на котором работали привычные инструменты вроде uBlock Origin. В 2024 году Google начал отказываться от него в пользу <b>Manifest V3</b>: новая платформа ограничивает возможности фильтрации трафика, чтобы повысить производительность и безопасность. О том, чем отличаются платформы, мы <a href="https://tproger.ru/news/google-chrome-perewel-s-manifest-v2-na-v3--kak-eto-kosnetsya-vas-">рассказывали ранее</a>.</p><blockquote>Расширения MV2 больше не разрешены в любой поддерживаемой версии Chrome, и мы удаляем поддержку для них и связанный функционал. Мы не можем поддерживать это бесконечно из-за сложности, технического долга и рисков для безопасности — к тому же недавно мы нашли ряд багов, специфичных для MV2.</blockquote><h2>Что изменится для пользователей</h2><ul><li>После Chrome 151 старые расширения на Manifest V2 не смогут запускаться ни через официальный магазин, ни через обходные механизмы.</li><li>Блокировщики вроде uBlock Origin придётся заменить на версии для Manifest V3 — например, uBlock Origin Lite.</li><li>Если привычный набор фильтров важен, можно рассмотреть Firefox или другие браузеры, которые пока сохраняют поддержку MV2.</li></ul><h2>Какие блокировщики останутся</h2><p>В экосистеме Chrome останутся решения, созданные под Manifest V3: <b>uBlock Origin Lite</b>, <b>AdGuard</b> и другие. Они работают с жёсткими ограничениями на количество правил фильтрации — например, базовый лимит статических правил в declarativeNetRequest заметно ниже, чем было доступно старым инструментам. Из-за этого на некоторых сайтах может прорываться реклама или реже обновляться фильтры.</p><h2>FAQ</h2><h2>Выводы</h2><p>Google завершает многолетний переход с Manifest V2 на Manifest V3. Чтобы не остаться без привычной фильтрации рекламы, проверьте расширения уже сейчас: откройте chrome://extensions/, найдите uBlock Origin и посмотрите на предупреждение о совместимости. Если важен привычный уровень блокировки — установите uBlock Origin Lite или подготовьтесь к переходу на Firefox. Chrome 150 выйдет через две недели.</p><p>Источники: <a href="https://www.theverge.com/tech/950005/google-chrome-removing-ad-blocker-loopholes">The Verge</a>, <a href="https://9to5google.com/2026/06/15/google-chromes-next-update-will-mark-the-end-of-popular-ad-blockers/">9to5Google</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Представляем MDN MCP server</title>
      <link>https://tproger.ru/translations/predstavlyaem-mdn-mcp-server</link>
      <comments>https://tproger.ru/translations/predstavlyaem-mdn-mcp-server?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/predstavlyaem-mdn-mcp-server</guid>
      <description><![CDATA[<p>MDN MCP server переносит актуальную документацию и данные о совместимости браузеров прямо в редактор или AI-агента. Разбираем, как подключить и почему точнее.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/predstavlyaem-mdn-mcp-server">Представляем MDN MCP server</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[IDE]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Mozilla]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 15 Jun 2026 11:30:35 GMT</pubDate>
      <content:encoded><![CDATA[<p>Перевод статьи The MDN Team из MDN Blog, оригинал: <a href="https://developer.mozilla.org/en-US/blog/introducing-mdn-mcp-server/">Introducing the MDN MCP server</a>.</p><p>Мы рады анонсировать выпуск MDN MCP server. MCP (Model Context Protocol) — открытый стандарт, который позволяет ИИ-инструментам подключаться к внешним источникам данных. MDN MCP server использует этот протокол, чтобы перенести документацию MDN и данные о совместимости браузеров прямо в вашего ИИ-агента или IDE.</p><ul><li>MDN MCP server — экспериментальный сервер по протоколу MCP.</li><li>Даёт ИИ-агентам и IDE доступ к актуальной документации MDN и данным о совместимости браузеров.</li><li>Работает с VS Code, Zed, Cursor, Claude Code, Codex CLI, Antigravity CLI и Claude Desktop.</li><li>В тестах с Claude Code Opus 4.7 MDN MCP дал гораздо точнее и надёжнее результаты о поддержке браузеров.</li><li>Ответы с MDN MCP были вдвое быстрее, чем без него.</li></ul><h2>Зачем мы создали MDN MCP</h2><p>Всё больше ИИ-инструментов интегрируется в рабочие процессы веб-разработки, но они могут выдавать устаревшую информацию о веб-платформе из-за обучающих данных и даты знания модели.</p><p>Например, LLM или агент для написания кода может не знать, что существует функция вроде @view-transition CSS at-rule, или не знать, достигла ли она статуса Widely Available в Baseline и безопасна ли для использования во всех браузерах.</p><p>MDN MCP даёт вашему агенту для написания кода доступ к точной и актуальной информации о веб-платформе. Также он упрощает доступ к последней документации, не покидая привычные инструменты.</p><p>Сервер сейчас находится в экспериментальном статусе. Подробности об обработке данных в этой фазе — в нашей <a href="https://developer.mozilla.org/en-US/mcp#privacy_and_data_retention">заметке о приватности</a>.</p><h2>Как использовать MDN MCP</h2><p>MDN MCP server работает с любым MCP-совместимым клиентом, включая:</p><ul><li><b>Редакторы</b>: VS Code, Zed и Cursor.</li><li><b>CLI-агенты</b>: Claude Code, Codex CLI и Antigravity CLI (ранее Gemini CLI).</li><li><b>Чат-приложения</b>: Claude Desktop.</li></ul><p>Ссылки в этом списке ведут к инструкциям по настройке MCP для каждого инструмента. Инструкции по установке и другие детали — на нашей странице <a href="https://developer.mozilla.org/en-US/mcp">MDN MCP server</a>.</p><p>Как быстрый пример, чтобы использовать его с Claude Code, нужно выполнить следующую команду:</p><p>Мы с нетерпением ждём, как вы интегрируете его в свой рабочий процесс веб-разработки и в каких сценариях он окажется наиболее полезен.</p><h2>Какую разницу даёт MCP</h2><p>Учитывая недетерминированную природу LLM и разнообразие доступных моделей, часто сложно сравнивать их поведение с включёнными или выключенными навыками, промптами, инструментами и MCP.</p><p>Мы протестировали Claude Code Opus 4.7 с MDN MCP и без него на нескольких функциях, недавно появившихся в Firefox 150 и 151, спрашивая, как использовать функции и какая у них поддержка браузеров. А именно:</p><ol><li>Как использовать CSS-функцию light-dark() для изображений и какие браузеры её поддерживают?</li><li>Как использовать CSS-псевдокласс :buffering и какие браузеры его поддерживают?</li><li>Как использовать атрибут shadowrootslotassignment на элементе  и какие браузеры его поддерживают?</li><li>Как использовать Web Serial API и какие браузеры его поддерживают?</li></ol><p>Мы заметили определённые закономерности в результатах. В большинстве случаев заметки по использованию от Claude Code с MDN MCP и без него были сопоставимы. Часть ответов, использовавших MCP, была структурирована лучше и полнее. Например, заметки для CSS-функции light-dark() также включали примеры с линейными градиентами, которые не были прямо упомянуты в вопросе, но тоже поддерживаются.</p><p>Когда дело дошло до информации о поддержке браузеров, победитель был очевиден: MDN MCP дал намного точнее и надёжнее результаты. Claude Code без MCP правильно определил поддержку браузеров только в одном случае — для псевдокласса :buffering.</p><p>Например, Claude Code без MCP настаивал, что декларативный атрибут shadowrootslotassignment поддерживается в Chrome 120 и Safari 18.3, возможно, путая его с опцией slotAssignment метода Element.attachShadow(). Но на самом деле Firefox 151 — первый браузер, в котором появилась поддержка этого атрибута.</p><p>Без MCP Claude Code также не дал никакой конкретной информации о поддержке браузеров для использования изображений в функции light-dark(): «поддержка менее однородна, чем вариант с цветом», тогда как с MCP он выдал полную таблицу с указанием Firefox 150 и Chrome (за флагом) как поддерживающих браузеров.</p><p>Худший результат Claude Code без MCP показал на вопросе про Web Serial API. Firefox 151 получил поддержку Web Serial API в мае 2026 года. Однако Claude Code без MCP правильно упомянул браузеры на базе Chromium как поддерживающие эту функцию, но также настаивал, что в Firefox она:</p><blockquote>Не реализовано (и не в планах — см. позицию Mozilla по стандартам: «вредно»).</blockquote><p>С включённым MCP Claude Code правильно определил, что Firefox 151 поставляет поддержку Web Serial API, согласно примечаниям к выпуску.</p><p>Кроме того, мы заметили, что в наших тестах ответы с использованием MDN MCP были вдвое быстрее. Без MCP Claude Code приходилось загружать и парсить немало HTML-страниц, чтобы найти актуальную информацию, что занимало время, но даже тогда не давало точных результатов.</p><h2>Поучаствовать</h2><p>Ваш отзыв помогает нам становиться лучше. Если вы столкнулись с проблемами, есть комментарии или предложения или хотите поделиться, как используете MDN MCP, мы будем рады услышать вас. Заходите в канал platform в нашем Discord. Если заметили проблемы, сообщайте о них в репозиторий <a href="https://github.com/mdn/mcp">mdn/mcp</a> на GitHub.</p><h2>Что дальше</h2><p>По мере того как ИИ-инструменты становятся всё большей частью рабочих процессов веб-разработки, мы стремимся сделать документацию MDN доступной там, где она вам нужна. Этот релиз — один шаг к этой цели, и мы с нетерпением ждём возможности продолжить улучшать опыт с вашей помощью.</p><p>Источник: <a href="https://developer.mozilla.org/en-US/blog/introducing-mdn-mcp-server/">Introducing the MDN MCP server — MDN Blog</a>.</p><p>Попробуйте подключить MDN MCP к своему редактору или агенту и проверьте, насколько точнее станут ответы о веб-платформе.</p>]]></content:encoded>
    </item>
    <item>
      <title>Исследователи придумали, как следить за пользователями через SSD-активность в браузере</title>
      <link>https://tproger.ru/news/issledovateli-pridumali-kak-sledit-za-polzovatelyami-cherez-ssd</link>
      <comments>https://tproger.ru/news/issledovateli-pridumali-kak-sledit-za-polzovatelyami-cherez-ssd?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/issledovateli-pridumali-kak-sledit-za-polzovatelyami-cherez-ssd</guid>
      <description><![CDATA[<p>Исследователи представили технику FROST: сайты отслеживают вкладки через анализ SSD-активности в браузере. Узнайте, как работает атака и как защититься.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/issledovateli-pridumali-kak-sledit-za-polzovatelyami-cherez-ssd">Исследователи придумали, как следить за пользователями через SSD-активность в браузере</a>»</p>]]></description>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Информационная безопасность]]></category>
      <category><![CDATA[Кибербезопасность]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 28 May 2026 09:30:05 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если у вас открыто несколько вкладок, вредоносный сайт может узнать, какие именно, — не через куки и не через JavaScript-переменные, а через ваш SSD. Метод <b>FROST</b> считывает задержки операций чтения накопителя и по их сигнатуре определяет открытые вкладки и приложения.</p><p>Техника описана в <a href="https://arstechnica.com/security/2026/05/websites-have-a-new-way-to-spy-on-visitors-analyzing-their-ssd-activity/">исследовательской статье</a>, которую представят на конференции DIMVA в июле 2026 года. Атака работает исключительно внутри браузера и не требует никаких действий от пользователя.</p><h2>Как работает FROST</h2><p>FROST (Fingerprinting Remotely using OPFS-based SSD Timing) использует <b>побочный канал утечки на основе конкуренции процессов за доступ к общему ресурсу</b>. В данном случае ресурс — SSD-накопитель пользователя.</p><p>Вредоносный сайт создаёт большой файл (от 1 ГБ) в <a href="https://developer.mozilla.org/en-US/docs/Web/API/File_System_API/Origin_private_file_system">Origin Private File System (OPFS)</a> — изолированном хранилище, доступном через JavaScript без запроса разрешений. Затем код выполняет случайные чтения из этого файла и измеряет задержки. Если в это время другая вкладка или приложение обращается к SSD, задержки меняются. Эти изменения анализирует предобученная <b>свёрточная нейросеть (CNN)</b>, которая по сигнатуре нагрузки определяет, что именно работает в системе.</p><p>Исследователи продемонстрировали полноценную атаку на Mac с процессором M2. На Linux подтвердили работу базового примитива — измерение задержек через JavaScript. Windows в тестах не участвовала, но авторы не исключают, что техника применима и там.</p><p>OPFS поддерживается во всех современных браузерах на базе Chromium, а также в Firefox и Safari. Это означает, что потенциально техника применима к большинству пользователей десктопного веба.</p><p>FROST позволяет сайтам отслеживать открытые вкладки и приложения через анализ SSD-активности.</p><p>Атака работает внутри браузера через JavaScript и OPFS, без взаимодействия с пользователем.</p><p>Ключевой инструмент — свёрточная нейросеть, классифицирующая задержки чтения SSD.</p><p>Полная атака продемонстрирована на macOS (M2); на Linux работает базовый примитив.</p><p>Пока не зафиксировано случаев применения FROST в реальных условиях.</p><h2>Ограничения и защита</h2><p>У техники есть важные ограничения. Для атаки файл в OPFS должен занимать не менее 1 ГБ. Это означает, что массовое применение будет заметно: создание гигабайтного хранилища в браузере занимает время и место на диске. Кроме того, OPFS должен находиться на том же SSD, что и отслеживаемые приложения.</p><p>Пока разработчики браузеров не ограничили размер OPFS-файлов, рядовой пользователь может сделать немногое. Полезная привычка — закрывать вкладки сразу после использования: чем меньше одновременных процессов обращаются к диску, тем сложнее выделить сигнатуру. Для усиления приватности можно использовать отдельные профили браузера или приватные окна, хотя это и не полностью блокирует атаку.</p><h2>Итоги</h2><p>Пока FROST остаётся академической демонстрацией: в реальных условиях атака не зафиксирована. Но она показывает, что даже изолированные хранилища внутри браузера могут стать источником утечек, если злоумышленник научится измерять физические характеристики железа. Ждём патчей от производителей браузеров.</p><p>Источник: <a href="https://arstechnica.com/security/2026/05/websites-have-a-new-way-to-spy-on-visitors-analyzing-their-ssd-activity/">Ars Technica</a>. Читайте также о <a href="https://tproger.ru/news/v-firefox-145-pojavilas-novaja-zashhita-ot-cifrovogo-otpechatka-i-trekinga/">новой защите Firefox от цифрового отпечатка</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Edge держит все пароли в RAM открыто. Microsoft: «by design»</title>
      <link>https://tproger.ru/news/edge-derzhit-vse-paroli-v-ram-otkryto-microsoft-by-design</link>
      <comments>https://tproger.ru/news/edge-derzhit-vse-paroli-v-ram-otkryto-microsoft-by-design?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/edge-derzhit-vse-paroli-v-ram-otkryto-microsoft-by-design</guid>
      <description><![CDATA[<p>Edge при старте загружает все пароли в RAM в открытом виде. Microsoft называет это «by design» и менять не планирует. PoC за три шага, отличие от Chrome и как защититься.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/edge-derzhit-vse-paroli-v-ram-otkryto-microsoft-by-design">Edge держит все пароли в RAM открыто. Microsoft: «by design»</a>»</p>]]></description>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Microsoft Edge]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 06 May 2026 10:45:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Microsoft Edge держит все сохранённые пароли в памяти процесса в открытом виде — на всю сессию, прямо со старта. Достаточно запустить браузер, ничего не делать, скинуть дамп памяти, и пароли вытаскиваются обычной утилитой strings. Microsoft квалифицирует поведение как «by design» — не уязвимость, а часть дизайна.</p><p>О поведении сообщил норвежский исследователь Tom Jøran Sønstebyseter Rønning (в X — @L1v1ng0ffTh3L4N). Публичное раскрытие — 4 мая 2026 года. Цитата исследователя: «Edge — единственный Chromium-браузер из проверенных мной, который ведёт себя именно так». Уведомление отправлял в Microsoft заранее, ответ — «не уязвимость».</p><p>Edge при запуске <b>загружает в память все сохранённые пароли</b> и держит их в открытом виде всю сессию. Не имеет значения, открывал ли ты сайт, к которому относится конкретный пароль. У других браузеров на Chromium такого нет: Chrome расшифровывает пароль только в момент автозаполнения и тут же его выгружает.</p><ul><li>Microsoft Edge при старте грузит в память все сохранённые пароли в открытом виде и держит их так до закрытия браузера.</li><li>Воспроизведение — три шага без прав администратора в рамках своего пользователя: запустить Edge, сделать дамп памяти процесса, прогнать strings.</li><li>Edge — единственный Chromium-браузер с таким поведением: Chrome расшифровывает пароль только в момент использования и применяет Application-Bound Encryption.</li><li>Microsoft признаёт поведение и квалифицирует его как «by design» — не уязвимость, а баланс между производительностью и безопасностью.</li><li>Реальный риск — на терминальных и общих машинах: администратор сервера через дамп памяти получает пароли всех вошедших пользователей.</li></ul><h2>Как воспроизвести за три минуты</h2><p>Воспроизводимо на любой Windows-машине без прав администратора в рамках текущего пользователя — для своих паролей в своей сессии. Понадобится утилита strings из Sysinternals или из пакета binutils в Linux/WSL.</p><ol><li>Открыть Microsoft Edge и больше ничего не делать — никуда не заходить, ничего не открывать.</li><li>Открыть Task Manager (Диспетчер задач), найти процесс Edge, развернуть подпроцессы. На <b>browser</b>-подпроцессе — правый клик → «Create memory dump file».</li><li>Открыть полученный файл с расширением .DMP в любом окружении со strings.</li></ol><p>Дальше нужно отфильтровать дамп по характерному формату записи (URL + протокол + логин + пароль идут подряд). Команда из разбора Rob VandenBrink в SANS ISC:</p><p>В большинстве случаев домен сайта оканчивается на .com, а сразу за ним без разделителя идёт схема https — поэтому фильтр по подстроке comhttps ловит почти все записи. В выводе видны логины и пароли — отдельным аккуратным блоком, по одной строке на сайт.</p><h2>Почему у Chrome так не работает</h2><p>Google Chrome <b>расшифровывает пароль только в момент, когда он действительно нужен</b> — на автозаполнении или когда пользователь сам открывает «показать пароль». В остальное время в памяти лежит зашифрованная версия.</p><p>Сверх того в Chrome есть <b>Application-Bound Encryption</b> (ABE) — это механизм, привязывающий ключи шифрования паролей к Chrome через отдельный сервис с правами SYSTEM. Чтобы дотянуться до ключей, инфостилеру (вредоносу, который ворует учётные данные) нужно повышать привилегии до SYSTEM, а пользовательских прав — недостаточно. У Edge этой защиты не наблюдается: пароли в памяти браузерного процесса лежат в открытом виде.</p><h2>Что говорит Microsoft</h2><p>Microsoft получила отчёт об исследовании заранее и квалифицировала поведение как «не уязвимость». 6 мая 2026 года представитель компании дал официальный комментарий CyberNews:</p><blockquote>Безопасность и приватность — фундамент Microsoft Edge. Сценарий, описанный в отчёте, требует, чтобы устройство уже было скомпрометировано. Дизайн в этой области — компромисс между производительностью, удобством и безопасностью; мы продолжаем оценивать его в свете новых угроз. Браузеры обращаются к данным паролей в памяти, чтобы пользователь мог быстро и удобно входить — это ожидаемая функция приложения. Рекомендуем установить последние обновления безопасности и антивирус.</blockquote><p>На Hacker News тема собрала живое обсуждение. Один из тезисов: «если атакующий уже может читать произвольную память, он, вероятно, в состоянии и аутентифицироваться от имени пользователя». Уточнение в комментариях: терминальные серверы и общие рабочие станции — типичный сценарий, когда у администратора сервера легитимно есть доступ к памяти всех залогиненных пользователей, и поведение Edge превращает этот доступ в доступ ко всем их учётным записям разом.</p><h2>Что делать сейчас</h2><ul><li>На терминальных серверах и общих рабочих машинах <b>отключить сохранение паролей в Edge</b> или перейти на Chrome или Firefox.</li><li>Перенести пароли в специализированный менеджер: 1Password, Bitwarden, KeePass — они шифруют записи в памяти и достают их по одной за раз, а не разом всю базу.</li><li>Для самых критичных аккаунтов — мигрировать с пароля на passkey (вход без пароля по биометрии или PIN, стандарт FIDO2). Приватный ключ обычно лежит в TPM, Secure Enclave или защищённом keychain и не попадает в память приложения в виде, пригодном для копирования.</li><li>Везде, где пароль остался — обязательно включить второй фактор: TOTP (Google Authenticator, Authy) или аппаратный ключ (YubiKey, Titan).</li><li>Проверять, что Windows-учётка обычного пользователя <b>не имеет прав администратора</b>: тогда вредоносная программа в его контексте не сможет добраться до памяти других сессий.</li></ul><h2>Про автора исследования</h2><p>Tom Jøran Sønstebyseter Rønning — норвежский исследователь по безопасности. Никнейм @L1v1ng0ffTh3L4N («living off the LAN») отсылает к living-off-the-land технике — использовать штатные средства окружения вместо принесённых вредоносных инструментов. PoC по Edge — продолжение той же темы: атакующему ничего не нужно, кроме штатного Task Manager и стандартной утилиты strings.</p><h2>Выводы</h2><p>Edge показывает биометрический запрос при попытке открыть пароль в UI, но в памяти процесса параллельно лежит копия в открытом виде. Это ровно тот самый «security theatre» — показная безопасность, на которую часто жалуются исследователи: визуально серьёзный замок на двери при открытом окне сбоку. Microsoft пока не планирует менять поведение.</p><p>Для пользователя вывод простой: <b>не доверять менеджеру паролей браузера</b>. Это удобный сервис автозаполнения, но не безопасное хранилище. Серьёзный пароль и тем более ключ от рабочих сервисов — место не там.</p><p>Технический разбор и proof-of-concept — у Tom Jøran Sønstebyseter Rønning <a href="https://x.com/l1v1ng0ffth3l4n/status/2051308329880719730" rel="noopener">в треде на X</a>. Независимая верификация и пошаговая инструкция — у Rob VandenBrink, <a href="https://isc.sans.edu/diary/32954" rel="noopener">SANS ISC, выпуск 32954</a>. Развёрнутый разбор и комментарий Microsoft — на <a href="https://cybernews.com/security/microsoft-edge-loads-cleartext-passwords-to-memory/" rel="noopener">CyberNews</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Denwer SE: Возрождение легендарного локального веб-сервера на современном стеке</title>
      <link>https://tproger.ru/articles/denwer-se-vozrozhdenie-legendarnogo-lokalnogo-veb-servera-na-so</link>
      <comments>https://tproger.ru/articles/denwer-se-vozrozhdenie-legendarnogo-lokalnogo-veb-servera-na-so?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Александр Тишов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/denwer-se-vozrozhdenie-legendarnogo-lokalnogo-veb-servera-na-so</guid>
      <description><![CDATA[<p>Помните диск Z:, иконку джентльмена и магию Run.exe? Денвер вернулся. Denwer SE: Python вместо Perl, HTTPS без красных экранов, свежий PHP и портативность. И да, он всё ещё помещается на флешку.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/denwer-se-vozrozhdenie-legendarnogo-lokalnogo-veb-servera-na-so">Denwer SE: Возрождение легендарного локального веб-сервера на современном стеке</a>»</p>]]></description>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[C++]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[MySQL]]></category>
      <category><![CDATA[PHP]]></category>
      <category><![CDATA[Опрос]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Windows]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[SQL]]></category>
      <category><![CDATA[Боты]]></category>
      <category><![CDATA[Базы данных]]></category>
      <category><![CDATA[Node.js]]></category>
      <category><![CDATA[HR]]></category>
      <category><![CDATA[Docker]]></category>
      <category><![CDATA[Для продвинутых]]></category>
      <category><![CDATA[CMS]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Laravel]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 05 May 2026 10:11:34 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если вы начинали веб-разработку в середине 2000-х, то наверняка помните Denwer — «джентльменский набор веб-разработчика». Иконка в виде человека в шляпе, виртуальный диск Z:, папка <i>home/localhost/www</i> — всё это было ритуалом, который упрощал жизнь тысячам разработчиков. Но оригинальный Denwer безнадёжно устарел: Perl-скрипты, 32-битные сборки, поддержка только древних версий PHP и MySQL. Ему на смену пришли громоздкие комбайны вроде Open Server или сложные для новичков Docker-контейнеры.</p><p>Однако недавно проект получил второе дыхание. Разработчик Александр Тишов (Amro) — создатель <a href="https://seditio.org" rel="nofollow">CMS Seditio</a> и основатель веб-студии <a href="https://avego.org" rel="nofollow">«Авего»</a>  — выпустил <a href="https://seditio.org/dev/denwer-se-lokalnyj-veb-stek-dlya-windows-apache-php-mysql-mariadb" rel="nofollow">Denwer SE (Second Edition)</a>. Это не просто обновление, а полный реинжиниринг с сохранением классической философии: портативность, скорость работы и привычная структура каталогов.</p><p>В этой статье разберём, что изменилось под капотом, почему панель управления переехала с Perl на Python, как работает автоматический HTTPS с собственным корневым сертификатом и зачем нужен зоопарк версий PHP от 5.6 до 8.5.</p><h2>Краткий экскурс: от Denwer 3 до Denwer SE</h2><p>Оригинальный Denwer (сокращение от Джентельменский Набор Веб-разработчика) появился в начале 2000-х. Он представлял собой связку Apache + PHP + MySQL, упакованную в самораспаковывающийся архив. Главные фишки:</p><ul><li>Виртуальный диск (по умолчанию Z:), который монтировался через subst.</li><li>Автоматическое создание виртуальных хостов по именам папок в home.</li><li>Консольные exe-файлы (Run, Stop, Restart) без графического окна.</li></ul><p>Проблемы оригинала:</p><ul><li>Управление на Perl — медленно, тяжело поддерживать в Windows.</li><li>Только 32-битные компоненты.</li><li>Невозможно быстро переключать версии PHP или БД.</li><li>Отсутствие нормального HTTPS (только самоподписанные сертификаты с ошибками в браузере).</li><li>Поддержка прекратилась в 2016 году.</li></ul><p>Denwer SE решает все эти проблемы, оставаясь при этом таким же портативным — достаточно скопировать папку на флешку или в облачный каталог.</p><h2>Архитектура: Python вместо Perl</h2><p>Denwer SE — панель управления написана на Python и скомпилирована в один EXE-файл (через PyInstaller).</p><p>Внутри служебной папки <b>denwer\</b> лежат:</p><ul><li>DLL-версия Python — интерпретатор, который использует основной исполняемый файл.</li><li>Скомпилированные модули .pyd — в том числе GUI на базе Tcl/Tk для оконного интерфейса и системного трея.</li><li>Минимальный набор библиотек для управления службами, правки hosts и генерации сертификатов.</li></ul><p>Это даёт несколько преимуществ:</p><ul><li>Портативность — панель ищет соседние папки home и usr, поэтому каталог со стеком можно переносить куда угодно без переустановки.</li><li>Скорость — Python-скрипты запускаются быстрее, чем Perl, особенно на холодном старте.</li><li>Читаемость кода — разработчику проще поддерживать и расширять функционал.</li></ul><h2>Полный переход на x64</h2><p>Оригинальный Denwer навсегда остался 32-битным, что в современных реалиях просто неприемлемо. Denwer SE собирается исключительно под x64:</p><ul><li>Apache (версия 2.4.x) — 64-битный.</li><li>Все модули PHP (от 5.6 до 8.5) — Thread Safe x64.</li><li>MySQL / MariaDB — 64-битные сборки.</li></ul><p>Системные требования — Windows 7/8/10/11 (x64). Для работы компонентов потребуются Microsoft Visual C++ Redistributable (VC11, VC12, VC14, VC15). Разработчик положил установщики этих пакетов в папку <b>vcredist\</b> — при необходимости можно доустановить вручную.</p><h2>Структура каталогов: преемственность и гибкость</h2><p>Denwer SE сохранил классическую структуру, чтобы старые пользователи не ломали голову:</p><p>Главный конфиг — usr\configuration.txt. В нём задаются пути без жёсткой привязки к букве диска, например:</p><p>При старте панель монтирует виртуальный диск (по умолчанию Z:) и динамически подставляет путь через переменную <b>subst_drive</b>.</p><h2>Управление версиями PHP и БД без танцев с бубном</h2><p>В Denwer SE встроен менеджер версий. Вы просто выбираете из выпадающего списка нужную версию PHP (например, 8.3 или 5.6) — панель сама правит конфигурацию Apache.</p><p>Как это работает под капотом:</p><p>В папке usr/local/apache/php лежат подкаталоги php5.6, php7.4, php8.3 и т.д..</p><p>В каждом из них есть файл php-denwer.conf— шаблон для подключения модуля к Apache. При выборе версии этот файл копируется в <b>conf/extra/httpd-denwer.conf</b>, который затем включается в основной httpd.conf.</p><p>Если вы хотите добавить свою сборку PHP (например, PHP 8.4-rc), достаточно:</p><ul><li>Распаковать x64 Thread Safe версию в отдельный каталог внутри php\.</li><li>Создать php-denwer.conf по образцу.</li><li>Убедиться, что все DLL от VC++ установлены.</li></ul><p>Аналогично для баз данных: переключение между MySQL 5.7 и MariaDB 11.8 происходит через тот же интерфейс. В каталоге СУБД может лежать файл <b>db-denwer.conf</b>, который при старте копируется в <b>my.ini</b>.</p><h2>HTTPS, который не бесит: локальный Root CA</h2><p>Самое болезненное место при локальной разработке это самоподписанные сертификаты. Браузеры постоянно ругаются, приходится кликать «Принять риск». Для командной разработки это вообще катастрофа: каждый участник должен сгенерировать свой сертификат и добавить в исключения.</p><p>Denwer SE решает проблему элегантно — он создаёт собственный корневой центр сертификации (CA) и подписывает им сертификаты для всех ваших локальных доменов.</p><p>Как это работает:</p><ol><li>При первом запуске (если найден OpenSSL) панель генерирует ключи denwer-ca.key и сертификат denwer-ca.crt в папку usr/local/apache/conf/cert/denwer-ca/.</li><li>Для каждого виртуального хоста (папки в home/) автоматически создаётся сертификат в conf/cert/&lt;domain&gt;/.</li><li>Все сертификаты хостов подписаны локальным CA.</li></ol><p>Чтобы браузер доверял им, нужно один раз установить <b>denwer-ca.crt</b> в хранилище «Доверенные корневые центры сертификации» Windows. Для этого в панели есть специальная кнопка (требует прав администратора).</p><p>После этого любые HTTPS-запросы к локальным хостам работают без единого предупреждения.</p><h2>Удобства для разработчика (DX)</h2><p>В версии 1.2.4 добавили несколько фич, которые экономят время каждый день:</p><ul><li>Лог с таймштампами — каждая строка в окне панели имеет префикс [чч:мм:сс]. Теперь видно, сколько секунд сервер поднимается и где возможны задержки.</li><li>Прямой доступ к php.ini и my.cnf — рядом со списками версий появились кнопки, открывающие конфигурацию именно активной версии.</li><li>Автоматическое ведение hosts — панель в реальном времени сканирует home/, находит новые домены и прописывает их в C:\Windows\System32\drivers\etc\hosts. Журнал добавляемых записей сохраняется в usr\AddedHosts.txt. При остановке стека лишние строки удаляются.</li><li>Для смены версии PHP или базы данных панель требует полной остановки всех служб. Вы нажимаете «Стоп», меняете версию в списке, затем «Старт» — и стек поднимается уже с новыми настройками. Автоматический перезапуск без вашего участия работает только для Apache: когда вы добавляете новый домен в папку home/, панель сама переписывает vhosts.conf и перезапускает веб-сервер, не трогая БД.</li></ul><h2>Почему не Open Server или Docker?</h2><p>Этот вопрос закономерно возникает у всех, кто видит очередной локальный веб-сервер. Ведь есть уже давно Open Server Panel, Laragon, XAMPP, а для продвинутых — Docker. Зачем ещё один?</p><p><b>Open Server</b> — мощный и удобный комбайн с десятками версий PHP и настройками «на века». Но он разворачивается в системе не портативно: создаёт папки в ProgramData, пишет в реестр, а запуск может занимать 5–10 секунд. Denwer SE, напротив, полностью переносим: скопировал папку на флешку или в облачный каталог — и всё работает. Запуск стека — буквально 1–2 секунды, что критично, когда вы десятки раз за день перезапускаете сервер для тестов.</p><p><b>Docker</b> — индустриальный стандарт для изоляции и воспроизводимости окружений. Но для локальной разработки простого сайта он часто избыточен. Вам нужно разобраться в образах, контейнерах, пробросе портов, volume’ах и docker-compose.yml. А в Denwer SE вы просто создали папку в home/ — и готово. Никакой работы с командной строкой, никакого потребления гигабайт ОЗУ на фоновую службу Docker Desktop.</p><p><b>Laragon</b> — быстрый, портативный, поддерживает не только PHP, но и Node.js, Python, Go. Но он ориентирован на современные фреймворки, особенно Laravel. Denwer SE же сделан для тех, кто вырос на классическом Денвере: виртуальный диск Z:, папка home/имя_домена/www, минимум настроек. Не нужно переучиваться — просто распаковал и работаешь как 10 лет назад, но с новыми версиями PHP и HTTPS.</p><h2>Как начать пользоваться Denwer SE</h2><ol><li>Скачать архив с <a href="https://seditio.org/dev/denwer-se-lokalnyj-veb-stek-dlya-windows-apache-php-mysql-mariadb" rel="nofollow">официального сайта автора</a>.</li><li>Распаковать в любое место, например C:\web\DenwerSE\.</li><li>Запустить DenwerSE.exe — если нет прав администратора, попросит их для монтирования диска и правки hosts.</li><li>Нажать «Запустить» — появится виртуальный диск Z:, а в системном трее иконка.</li><li>Создать папку сайта — например, home\myproject.local и положить туда index.php.</li><li>Открыть в браузере http://myproject.local/ (или https://myproject.local/). HTTPS будет работать сразу после установки корневого сертификата (кнопка в панели).</li></ol><p>По умолчанию пароль к MySQL/MariaDB — пустая строка (пользователь <b>root</b>). При желании его можно сменить через phpMyAdmin.</p><h2>Заключение</h2><p>Denwer SE — это не просто ностальгический проект. Это действительно современный инструмент, который доказывает, что концепция «локального сервера в одну папку» всё ещё актуальна. Отказ от Perl в пользу Python, менеджер версий PHP/БД, нормальный HTTPS, портативность и мгновенный запуск — всё это делает его отличным выбором для быстрого прототипирования, тестирования легаси-кода или обучения веб-разработке.</p><p>Если вы устали ждать, пока Open Server применит настройки, или не хотите разбираться в Docker Compose — попробуйте <b>Denwer SE</b>. Вероятно, он напомнит вам старые добрые времена, но уже без боли устаревших технологий.</p><ul><li>Автор проекта: Александр Тишов
	(Amro), разработчик CMS Seditio.</li><li>Лицензия: Freeware.</li><li>Совместимость: Windows 7/8/10/11 x64.</li></ul><p>Исходники панели управления не открыты (распространяется скомпилированный EXE), но архитектура и конфиги полностью прозрачны. В планах — добавить поддержку Nginx в качестве альтернативы. Следите за обновлениями.</p>]]></content:encoded>
    </item>
    <item>
      <title>Chrome 146 привязал сессии к чипу TPM — как работает DBSC</title>
      <link>https://tproger.ru/news/chrome-146-privyazal-sessii-k-chipu-tpm-kak-rabotaet-dbsc</link>
      <comments>https://tproger.ru/news/chrome-146-privyazal-sessii-k-chipu-tpm-kak-rabotaet-dbsc?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/chrome-146-privyazal-sessii-k-chipu-tpm-kak-rabotaet-dbsc</guid>
      <description><![CDATA[<p>Google включила в Chrome 146 для Windows протокол DBSC: сессионные cookies привязаны к TPM-чипу устройства, и украденный cookie на чужой машине не сработает.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/chrome-146-privyazal-sessii-k-chipu-tpm-kak-rabotaet-dbsc">Chrome 146 привязал сессии к чипу TPM — как работает DBSC</a>»</p>]]></description>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Google Chrome]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 10 Apr 2026 06:30:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если ваш бэкенд выдаёт сессионные cookies и вы до сих пор полагались только на связку HttpOnly + Secure — появилась серьёзная альтернатива. Google <a href="https://www.bleepingcomputer.com/news/security/google-chrome-adds-infostealer-protection-against-session-cookie-theft/">включила</a> в Chrome 146 для Windows протокол Device Bound Session Credentials (DBSC): сессионные cookies криптографически привязываются к чипу TPM устройства, и украденный cookie на чужой машине просто не работает.</p><p>Поддержка macOS через Secure Enclave появится в одном из следующих релизов — конкретных сроков Google не назвала. Linux в анонсе вообще не упоминается.</p><ul><li>Chrome 146 для Windows автоматически использует DBSC на сайтах, которые его поддерживают</li><li>Даже заражённая малварью машина не отдаст ключ: приватный ключ сессии живёт в TPM и не может быть оттуда прочитан — даже самим Chrome</li><li>Украденный cookie быстро становится бесполезным: сервер требует подпись challenge приватным ключом с оригинального устройства при каждом обновлении</li><li>Внедрение для бэкенда — два новых эндпоинта (регистрация + refresh), фронтенд трогать не нужно</li><li>DBSC — открытая спецификация в рамках W3C, разработанная Google совместно с Microsoft; Firefox и Safari пока молчат</li><li>Это вторая попытка Google защитить cookies после App-Bound Encryption 2024 года, которую малварь обошла за пару месяцев</li></ul><h2>Что такое DBSC и зачем оно нужно</h2><p>Сессионный cookie — это токен авторизации, который сервер выдаёт после успешного логина и принимает вместо пары логин-пароль. Из-за того что одного cookie достаточно для входа в аккаунт в обход 2FA, инфостилеры (LummaC2, MeduzaStealer, Vidar, StealC и десятки других) превратили кражу сессионных cookies в основной способ монетизации взломанных машин. Google в анонсе признаёт прямо: «как только продвинутая малварь получила доступ к машине, она может читать локальные файлы и память, где браузер хранит cookies. Нет надёжного способа предотвратить exfiltration программными средствами».</p><p>DBSC меняет архитектуру защиты: если украсть cookie всё равно можно, сделаем так, чтобы украденный cookie был бесполезен. Вместо одного долгоживущего cookie браузер получает серию короткоживущих, и каждый новый выдаётся сервером только после того, как Chrome докажет владение приватным ключом, лежащим в TPM. Длительность задаёт сам сервер, Google конкретных цифр не публикует.</p><h2>Как это работает технически</h2><ol><li>При создании сессии Chrome просит TPM сгенерировать пару ключей — приватный остаётся внутри чипа, публичный уходит на сервер и привязывается к сессии</li><li>Сервер выдаёт короткоживущий session cookie и запоминает публичный ключ</li><li>Cookie быстро истекает; Chrome запрашивает новый и получает challenge от сервера</li><li>Chrome подписывает challenge приватным ключом через TPM — ключ при этом не покидает чип</li><li>Сервер проверяет подпись публичным ключом и выдаёт следующий cookie</li></ol><p>Если инфостилер украл файл с cookies и залил его на свою машину — на следующем refresh сервер потребует подписать challenge, а без TPM с оригинального устройства ключа для подписи нет. Cookie устаревает, использовать его нельзя. За год тестирования в партнёрстве с Okta и ещё несколькими платформами Google заявила о снижении краж сессий, но конкретных цифр не привела.</p><p>Отдельный момент — приватность. Для каждой сессии генерируется уникальный ключ, так что сайт не может использовать DBSC как трекер между сессиями или между сайтами. Обмен ограничен одним публичным ключом, никаких device ID не утекает — этот момент Google подчёркивала ещё при <a href="https://blog.chromium.org/2024/04/fighting-cookie-theft-using-device.html">первом анонсе протокола в 2024 году</a>.</p><h2>Почему прошлая попытка провалилась</h2><p>В 2024 году Google уже запускала защиту cookies в Chrome 127 — <b>App-Bound Encryption</b>. Идея была проще: шифровать cookies системным сервисом Windows, работающим с правами SYSTEM, а не обычного пользователя. Малварь бы не смогла расшифровать cookies без прав SYSTEM или инъекции кода в процесс Chrome — обе операции шумные и заметные для антивирусов.</p><p>Защита продержалась около двух месяцев. К сентябрю 2024 авторы MeduzaStealer, WhiteSnake, LummaC2, Lumar, Vidar и StealC <a href="https://www.bleepingcomputer.com/news/security/infostealer-malware-bypasses-chromes-new-cookie-theft-defenses/">выкатили</a> обход, не требующий прав SYSTEM. Разработчики другой малвари, Rhadamanthys, тогда похвастались, что реверс-инжиниринг защиты занял у них 10 минут.</p><p>Почему DBSC должен сработать лучше: App-Bound Encryption был программной защитой — малварь на машине в принципе могла её сломать, потому что ключ хранился в памяти того же компьютера. DBSC переносит ключ в TPM: Chrome может попросить TPM подписать challenge, но не может прочитать или экспортировать сам ключ. Это архитектурное отличие, а не «усилили обфускацию» — украсть содержимое TPM без физического доступа к железу невозможно.</p><h2>Что нужно сделать бэкенд-разработчикам</h2><p>Главное — DBSC не требует изменений во фронтенде. Браузер сам берёт на себя всю работу с ключами и подписями. На бэкенде нужно добавить следующее:</p><ul><li>Эндпоинт регистрации сессии — принимает публичный ключ от браузера и сохраняет его рядом с сессией</li><li>Эндпоинт обновления сессии — выдаёт новый короткоживущий cookie после проверки подписи challenge приватным ключом</li><li>Логику выдачи cookies — вместо одного долгоживущего теперь серия короткоживущих с refresh каждые несколько минут</li><li>Graceful degradation для браузеров без DBSC — чтобы Firefox и Safari не ломались на тех же эндпоинтах</li></ul><p>Спецификация <a href="https://w3c.github.io/webappsec-dbsc/">опубликована на сайте W3C</a> как открытая спецификация, разработанная Google совместно с Microsoft, — так что другие браузеры теоретически могут подхватить. Google подготовила <a href="https://developer.chrome.com/docs/web-platform/device-bound-session-credentials">гайд по внедрению</a> для разработчиков, а для тех, кто хочет глубже — <a href="https://github.com/w3c/webappsec-dbsc">explainer на GitHub</a>.</p><h2>Что это значит для обычного пользователя</h2><p>Если вы просто пользуетесь Chrome — обновитесь до 146. Дальше делать ничего не нужно: защита включается автоматически на сайтах, которые уже внедрили DBSC. Для остальных сайтов всё работает как раньше — обычные cookies без аппаратной привязки. Пока что DBSC активна только на Windows с TPM 2.0; на ПК без TPM Chrome откатится на обычные cookies.</p><h2>Выводы</h2><p>Главное — защита от кражи сессий впервые переносится с программного уровня на аппаратный. Это ломает бизнес-модель инфостилеров, которая последние годы была построена на перепродаже украденных cookies: украденный токен просто перестаёт стоить денег, если его нельзя использовать на чужой машине. Если вы держите критичный сервис — добавляйте DBSC в беклог. Если просто пользуетесь Chrome — обновитесь до 146 и ждите, когда Firefox и Safari подтянутся.</p><p>Источники: <a href="https://www.bleepingcomputer.com/news/security/google-chrome-adds-infostealer-protection-against-session-cookie-theft/">BleepingComputer</a> | <a href="https://security.googleblog.com/2026/04/protecting-cookies-with-device-bound.html">Google Online Security Blog</a> | <a href="https://www.ghacks.net/2026/04/10/google-chrome-146-adds-device-bound-session-credentials-to-stop-session-cookie-theft-on-windows/">gHacks</a></p>]]></content:encoded>
    </item>
    <item>
      <title>В Chrome нашли четвёртый zero-day за 2026 год — уязвимость в WebGPU уже используют в атаках</title>
      <link>https://tproger.ru/news/google-zakryla-chetvyortyj-zero-day-v-chrome-za-2026-god-uyazvimo</link>
      <comments>https://tproger.ru/news/google-zakryla-chetvyortyj-zero-day-v-chrome-za-2026-god-uyazvimo?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/google-zakryla-chetvyortyj-zero-day-v-chrome-za-2026-god-uyazvimo</guid>
      <description><![CDATA[<p>Google исправила use-after-free в WebGPU (Dawn) — четвёртый zero-day Chrome за 2026 год. Затронуты все Chromium-браузеры. Узнайте, как проверить и обновить.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/google-zakryla-chetvyortyj-zero-day-v-chrome-za-2026-god-uyazvimo">В Chrome нашли четвёртый zero-day за 2026 год — уязвимость в WebGPU уже используют в атаках</a>»</p>]]></description>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Google Chrome]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 07 Apr 2026 08:28:24 GMT</pubDate>
      <content:encoded><![CDATA[<p><b>Обновите Chrome прямо сейчас</b> — четвёртый zero-day за 2026 год уже эксплуатируется. Уязвимость <a href="https://thehackernews.com/2026/04/new-chrome-zero-day-cve-2026-5281-under.html">CVE-2026-5281</a> затрагивает все версии Chrome до 146.0.7680.178 на Windows и macOS, до 146.0.7680.177 на Linux. Затронуты также Edge, Brave, Opera, Vivaldi и все Chromium-браузеры.</p><p>Use-after-free (использование после освобождения) — класс ошибок памяти, при котором программа обращается к уже освобождённому участку. В контексте браузера это позволяет атакующему выполнить произвольный код через специально подготовленную HTML-страницу.</p><ul><li>CVE-2026-5281 — use-after-free в Dawn (реализация WebGPU в Chromium), уже эксплуатируется</li><li>Затронуты Chrome, Edge, Brave, Opera, Vivaldi — все Chromium-браузеры</li><li>Google выпустила патч: Chrome 146.0.7680.177/178</li><li>CISA добавила в каталог обязательных исправлений с дедлайном 15 апреля 2026</li><li>Это 4-й активно эксплуатируемый zero-day в Chrome с начала года</li></ul><h2>Что за уязвимость</h2><p>Баг находится в <b>Dawn</b> — open-source кроссплатформенной реализации стандарта <b>WebGPU</b>, которую Chromium использует для доступа к GPU. Use-after-free в Dawn позволяет атакующему, скомпрометировавшему процесс рендерера, выполнить произвольный код через сформированную HTML-страницу.</p><p>Google <a href="https://thehackernews.com/2026/04/new-chrome-zero-day-cve-2026-5281-under.html">подтвердила</a>, что эксплойт для CVE-2026-5281 существует и используется в реальных атаках, но не раскрыла деталей — кто стоит за эксплуатацией и каким образом уязвимость используется. Это стандартная практика: информацию публикуют после того, как большинство пользователей обновятся.</p><h2>WebGPU как новая поверхность атаки</h2><p>CVE-2026-5281 — не первая проблема в GPU-подсистеме Chrome. В 2026 году три из четырёх zero-day затронули компоненты, связанные с графикой и GPU-ускорением:</p><ul><li><b>CVE-2026-2441</b> (февраль) — use-after-free в CSS-компоненте Chrome</li><li><b>CVE-2026-3909</b> и <b>CVE-2026-3910</b> — два high-severity zero-day, исправленных ранее</li><li><b>CVE-2026-5281</b> (апрель) — use-after-free в Dawn/WebGPU</li></ul><p>Появление WebGPU как стандартного API браузера расширило поверхность атаки: код, работающий с GPU-памятью и шейдерами, стал доступен из любой веб-страницы. Баги в этом слое особенно опасны — они дают доступ к аппаратному уровню из песочницы браузера.</p><h2>Как обновить</h2><p>Проверьте версию Chrome: <b>Меню → Справка → О Google Chrome</b>. Безопасные версии:</p><ul><li><b>Windows и macOS</b>: 146.0.7680.177 или 146.0.7680.178</li><li><b>Linux</b>: 146.0.7680.177</li></ul><p>После проверки нажмите <b>«Перезапустить»</b>, чтобы применить обновление. Если используете Edge, Brave, Opera или Vivaldi — проверьте наличие обновлений и в них: все они построены на Chromium и подвержены той же уязвимости.</p><h2>Реакция CISA</h2><p>CISA <a href="https://socradar.io/blog/cve-2026-5281-chrome-webgpu-zero-day/">добавило</a> CVE-2026-5281 в каталог Known Exploited Vulnerabilities (KEV) 1 апреля 2026 года. Все федеральные агентства обязаны применить патч до <b>15 апреля 2026</b>. Для остальных организаций каталог KEV — ориентир: если CISA считает уязвимость достаточно серьёзной для обязательного исправления, стоит последовать.</p><h2>Выводы</h2><p>Четвёртый zero-day в Chrome за 2026 год — и третий, связанный с графической подсистемой. <b>WebGPU</b> открывает новые возможности для веб-разработки, но одновременно создаёт поверхность атаки, которой раньше не существовало. Обновите браузер, проверьте Chromium-форки, и если вы администрируете инфраструктуру — добавьте KEV-каталог CISA в свой процесс патч-менеджмента.</p><p>Источники: <a href="https://thehackernews.com/2026/04/new-chrome-zero-day-cve-2026-5281-under.html">The Hacker News</a> | <a href="https://socradar.io/blog/cve-2026-5281-chrome-webgpu-zero-day/">SOCRadar</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Разработчик создал эмулятор процессора x86 на чистом CSS — без единой строчки JavaScript</title>
      <link>https://tproger.ru/news/emulyator-processora-x86-na-chistom-css--ni-strochki-javascript</link>
      <comments>https://tproger.ru/news/emulyator-processora-x86-na-chistom-css--ni-strochki-javascript?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Картофельный Повелитель]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/emulyator-processora-x86-na-chistom-css--ni-strochki-javascript</guid>
      <description><![CDATA[<p>Lyra Rebane создал полноценный эмулятор процессора x86 на чистом CSS — без JavaScript и WebAssembly. Проект использует экспериментальные функции CSS: if(), style queries и @function.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/emulyator-processora-x86-na-chistom-css--ni-strochki-javascript">Разработчик создал эмулятор процессора x86 на чистом CSS — без единой строчки JavaScript</a>»</p>]]></description>
      <category><![CDATA[Красивый хак]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[CSS]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 06 Mar 2026 07:44:26 GMT</pubDate>
      <content:encoded><![CDATA[<p>Lyra Rebane создал(а) <a href="https://lyra.horse/x86css/">x86CSS</a> — полноценный эмулятор процессора архитектуры x86 на чистом CSS. Никакого JavaScript или WebAssembly — все вычисления происходят исключительно силами браузерного движка стилей.</p><h2>Как это работает</h2><p>Эмулятор исполняет реальный машинный код для процессоров <a href="https://en.wikipedia.org/wiki/Intel_8086">Intel 8086</a>. Тактовый генератор построен на CSS-анимациях в сочетании со style container queries, поэтому система работает автономно и не требует от пользователя никакого взаимодействия — программа крутится сама.</p><p>Логика реализована благодаря новым возможностям CSS, которые пока доступны только в экспериментальном виде:</p><ul><li>условные операторы <b>if()</b></li><li><b>style queries</b> (стилевые запросы контейнера)</li><li>кастомные <b>@function</b></li></ul><p>На странице проекта есть скрипт-тег, но он лишь ускоряет работу тактового генератора. Если отключить JavaScript, эмулятор продолжит работать — просто чуть медленнее и менее стабильно.</p><h2>Запуск собственных программ</h2><p>В эмуляторе можно запускать собственные программы. Достаточно написать код на C и скомпилировать его через <a href="https://gitlab.com/tkchia/build-ia16">gcc-ia16</a> с помощью скрипта из <a href="https://github.com/rebane2001/x86css">репозитория</a> автора. На выходе — готовый HTML-файл со стилями, внутри которого исполняется ваш бинарник.</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-03-06/46d28142-b0a2-47e0-85cf-923ecfdd4f03.webp" alt="Репозиторий x86CSS на GitHub" /><figcaption>Репозиторий проекта на GitHub — 726 звёзд, лицензия GPL-3.0</figcaption></figure><p>По умолчанию эмулятору доступно 1,5 КБ памяти, но этот лимит можно увеличить в конфигурации. Программа загружается по адресу 0x100, предусмотрены специальные адреса ввода-вывода для взаимодействия с «железом» — экранным выводом и клавиатурой.</p><h2>Ограничения и совместимость</h2><p>Практического применения у проекта нет — производительность крайне низкая. Зато это отличная демонстрация того, что современный CSS действительно стал тьюринг-полным.</p><p>Из-за использования экспериментальных CSS-функций запустить демку пока можно <b>только в браузерах на базе Chromium</b> (Chrome, Edge, Opera и т.д.). Firefox и Safari пока не поддерживают нужные спецификации, хотя все используемые фичи входят в официальный стандарт CSS.</p><p>Отдельно автор подчёркивает: проект создан полностью вручную, <b>без использования ИИ</b>. CSS написан в Sublime Text, а для генерации повторяющихся частей кода использовался Python-скрипт.</p><p>Попробовать эмулятор можно на <a href="https://lyra.horse/x86css/">сайте проекта</a>, исходный код доступен на <a href="https://github.com/rebane2001/x86css">GitHub</a> под лицензией GPL-3.0.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как работают браузеры: понятное техническое объяснение</title>
      <link>https://tproger.ru/articles/kak-rabotayut-brauzery--samoe-ponyatnoe-obyasnenie</link>
      <comments>https://tproger.ru/articles/kak-rabotayut-brauzery--samoe-ponyatnoe-obyasnenie?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Валерия Турчак]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-rabotayut-brauzery--samoe-ponyatnoe-obyasnenie</guid>
      <description><![CDATA[<p>Это простая техническая статьи, из которой вы поймете детали и сформируете интуитивное понимание работы браузеров.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-rabotayut-brauzery--samoe-ponyatnoe-obyasnenie">Как работают браузеры: понятное техническое объяснение</a>»</p>]]></description>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[CSS]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[HTML]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 09 Feb 2026 09:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p><i>Это адаптированный перевод материала <a href="https://howbrowserswork.com">How Browsers Work</a>, подготовленный специально для читателей Tproger.</i></p><h2>Зачем это нужно?</h2><p>Эту статью написали для разработчиков и всех, кто пользуется браузерами каждый день, но никогда не разбирался в том, как они устроены изнутри.</p><p>Автор посчитал, что большинство существующих гайдов либо слишком технические и детализированные, либо, наоборот, поверхностные. Поэтому он решил выбрать другой подход.</p><p>Руководство построено на небольших примерах, чтобы понять технические детали и сформировать интуитивное понимание работы браузеров.</p><p>Чтобы материал оставался кратким и по существу, автор намеренно опустил многие критические детали: разные версии HTTP-протокола, SSL, TLS, нюансы работы DNS и многое другое.</p><h2>Браузеры работают с URL</h2><p>Вы можете ввести в адресную строку буквально что угодно. Но под капотом браузеры работают с URL:</p><ul><li>Случайный текст вроде «pizza» будет преобразован в поисковый URL типа https://google.com/search?q=pizza</li><li>Доменное имя вроде example.com будет нормализовано в полный URL: https://example.com</li></ul><p>Чтобы увидеть, как это работает на практике, попробуйте ввести «pizza» или «example.com» в адресную строку браузера.</p><h2>Превращение URL в HTTP-запрос</h2><p>Когда браузер знает точный URL, который нужно посетить, он может отправить запрос на сервер, чтобы получить ресурс и отобразить его. Браузеры общаются с серверами по протоколу HTTP.</p><p>Чтобы понять, как URL переводится в формат HTTP-запроса, рассмотрим пример с полным URL вроде <b>example.com.</b></p><p>HTTP-запросы содержат заголовки в таком формате:</p><p>Один из заголовков — это заголовок Host. Он используется для идентификации сервера, на который отправляется запрос: <b>example.com</b>.</p><h2>Определение адреса сервера</h2><p>Браузеры не могут отправлять запросы на имена вроде<b> example.com</b>.</p><p>Компьютеры общаются с IP-адресами, поэтому браузер сначала обращается к системе DNS, чтобы преобразовать доменное имя в IP-адрес, прежде чем подключиться к серверу и отправить HTTP-запрос.</p><p>Например, если вы введёте в терминале команду для разрешения домена, DNS вернёт соответствующий IP-адрес:</p><h2>Установка TCP-соединения</h2><p>После того как DNS предоставил браузеру IP-адрес, всё ещё требуется надёжное соединение с сервером. TCP — это протокол, который устанавливает такое соединение до того, как будут отправлены любые HTTP-данные.</p><p>TCP устанавливает соединение с помощью трёхэтапного согласия, которое подтверждает, что обе стороны готовы отправлять и получать данные:</p><ol><li>SYN: клиент отправляет свой порядковый номер (seq=1000), чтобы открыть соединение</li><li>SYN-ACK: сервер подтверждает пакет, добавляя свой порядковый номер (seq=5000) и подтверждая номер клиента, увеличивая его на 1 (ack=1001)</li><li>ACK: клиент подтверждает номер сервера, увеличивая его на 1 (ack=5001), и соединение готово</li></ol><p>Эти номера показывают, как клиент и сервер отслеживают диалог. Они считают байты, поэтому обе стороны согласны с тем, где начинается поток данных и что должно произойти дальше. Если какие-то данные не приходят, отправитель видит разрыв и повторно передаёт недостающие байты. Именно так TCP поддерживает порядок данных и надёжность после установки соединения.</p><p>Когда вы начинаете отправлять пакеты и пытаетесь нарушить работу сети, вы можете увидеть, как TCP справляется с потерями данных и восстанавливает передачу.</p><h2>HTTP-запросы и ответы</h2><p>После установки TCP-соединения браузер может отправить HTTP-запрос на сервер.</p><p>Представьте, что вы наблюдаете за тем, как HTTP-запрос путешествует к серверу, а HTTP-ответ возвращается в браузер:</p><p>БРАУЗЕР (КЛИЕНТ)</p><p>СЕРВЕР</p><p>Когда приходит HTTP-ответ, браузер читает сырой HTTP-ответ и начинает рендеринг HTML-контента.</p><h2>Парсинг HTML для построения DOM-дерева</h2><p>После того как приходит HTTP-ответ, браузер отделяет заголовки от тела и направляет HTML-байты в парсер. Парсер превращает теги вроде<b> &lt;h1&gt;</b> в токены и строит DOM-дерево.</p><p>Посмотрите, как HTML-поток парсится в DOM-дерево:</p><p>DOM-дерево:</p><p>Парсинг происходит потоково и устойчив к ошибкам: браузер начинает строить узлы ещё до того, как документ полностью загружен, и вставляет недостающие теги, чтобы дерево оставалось валидным. Когда появляется тег <b>&lt;script&gt;</b>, парсинг может приостановиться, чтобы выполнить скрипт.</p><p>DOM-дерево затем объединяется с CSS, чтобы создать render tree (дерево рендеринга), которое используется для расчёта layout и отрисовки пикселей.</p><h2>О важности DOM</h2><p>DOM — это внутренняя модель документа в памяти браузера. Это общий контракт между HTML-парсером, движком CSS-селекторов и средой выполнения JavaScript. Изменения в DOM немедленно влияют на layout, стили и то, с чем пользователи могут взаимодействовать.</p><p>DOM обеспечивает всё: от выборки элементов до динамической стилизации и обработки событий. Попробуйте отредактировать JavaScript-код и посмотрите, как меняется DOM:</p><p>Редактируемый JavaScript:</p><p>Живой DOM:</p><h2>Layout, Paint и Composite</h2><p>После того как DOM и CSS готовы, браузер запускает конвейер рендеринга: Layout (reflow) для расчёта размеров и позиций, Paint для заполнения пикселей, затем Composite для сшивки слоёв на GPU.</p><p>Не каждое изменение запускает все этапы заново. Изменение цвета обычно требует только перерисовки (repaint), тогда как изменение размеров заставляет пересчитывать layout и paint.</p><p>Этапы рендеринга:</p><ol><li>Layout — пересчёт размеров и позиций</li><li>Paint — заполнение пикселей в слои</li><li>Composite — сшивка слоёв на GPU</li></ol><p>Пример DOM:</p><p>Composite всегда смешивает слои в финальный кадр.</p><p>Именно поэтому страницы с большим количеством layout-операций ощущаются медленнее: больше работы нужно выполнить, прежде чем можно будет показать следующий кадр.</p><p>Вот и всё! Если вы разобрались со всеми примерами, у вас должна сформироваться чёткая ментальная модель работы браузеров.</p><p>Теперь вы понимаете путь от ввода URL в адресную строку до отображения пикселей на экране: разрешение DNS, установку TCP-соединения, отправку HTTP-запросов, парсинг HTML, построение DOM и конвейер рендеринга с этапами Layout, Paint и Composite.</p>]]></content:encoded>
    </item>
    <item>
      <title>GTA: Vice City запустили прямо в браузере — без установки. Поиграть можно даже со смартфона</title>
      <link>https://tproger.ru/news/gta--vice-city-zapustili-pryamo-v-brauzere---bez-ustanovki--poigrat-mozhno-dazhe-so-smartfona</link>
      <comments>https://tproger.ru/news/gta--vice-city-zapustili-pryamo-v-brauzere---bez-ustanovki--poigrat-mozhno-dazhe-so-smartfona?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/gta--vice-city-zapustili-pryamo-v-brauzere---bez-ustanovki--poigrat-mozhno-dazhe-so-smartfona</guid>
      <description><![CDATA[<p>GTA Vice City запустили прямо в браузере без установки: игра работает на ПК и смартфонах, быстро загружается и требует лицензионные файлы</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/gta--vice-city-zapustili-pryamo-v-brauzere---bez-ustanovki--poigrat-mozhno-dazhe-so-smartfona">GTA: Vice City запустили прямо в браузере — без установки. Поиграть можно даже со смартфона</a>»</p>]]></description>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Игра]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 19 Dec 2025 04:02:34 GMT</pubDate>
      <content:encoded><![CDATA[<p>Команда энтузиастов <b>DosZone Team</b> <a href="https://dos.zone/ru/grand-theft-auto-vice-city/">запустила</a> полноценную версию <b>Grand Theft Auto: Vice City прямо в браузере</b>.</p><p>Без установки, без танцев с бубном и без привязки к конкретной платформе. Игра работает на компьютерах, планшетах и смартфонах — достаточно открыть страницу и нажать «старт».</p><p>Проект построен на <b>современных веб-технологиях</b>, которые позволяют запускать сложные игровые движки в браузерной среде. По сути, это <b>не стриминг</b> и <b>не урезанная версия</b>, а оригинальная Vice City со всеми ключевыми механиками и контентом.</p><h2>Быстрый запуск и минимальная загрузка</h2><p>Одна из главных фишек версии — скорость старта. Для начала игры браузер загружает всего около <b>56 МБ</b> данных. Остальные ресурсы подгружаются динамически по мере исследования игрового мира.</p><p>Благодаря этому Vice City запускается <b>почти мгновенно</b> даже на слабых устройствах и при нестабильном интернете.</p><p>Разработчики также заявляют поддержку <b>любых разрешений экрана</b>. Интерфейс и картинка корректно масштабируются как на больших мониторах, так и на экранах смартфонов.</p><figure><img src="https://media.tproger.ru/user-uploads/111041/2025-12-19/b389dafb-9e00-431e-9a9e-6451208420b0.jpeg" alt="" /></figure><h2>Управление, язык и сохранения</h2><p>В браузерной Vice City есть поддержка геймпадов и сенсорного управления. Это делает игру более удобной на мобильных устройствах и планшетах, где клавиатура и мышь недоступны.</p><p>Доступны две версии игры: оригинальная английская и полностью локализованная русская с озвучкой от <b>студии</b> <b>GamesVoice</b>. Сохранения можно хранить как локально, так и в облаке. Это опять же позволяет продолжить прохождение с любого устройства.</p><h2>Как работает доступ и почему нужна оригинальная игра</h2><p>Играть можно бесплатно, но с ограничениями. В свободной версии разрешено кататься по городу и заниматься побочными активностями.</p><p>Однако при попытке начать сюжет — после достижения первого чекпоинта в отеле Ocean View — игра попросит указать путь к файлу оригинальной GTA: Vice City, например gtavc.exe.</p><p>Проект проверяет контрольные суммы файлов, чтобы убедиться в наличии лицензионных ресурсов. Таким образом разработчики подчеркивают, что не распространяют пиратский контент.</p><h2>Зачем все это сделали</h2><p>По словам авторов проекта, браузерная версия Vice City создана в образовательных и исследовательских целях. Она демонстрирует, на что способны современные веб-технологии и как сложные игровые проекты могут работать без установки и нативных клиентов.</p><p>Для игроков же это простой и эффектный способ вернуться в Vice City — быстро, удобно и буквально в пару кликов.</p>]]></content:encoded>
    </item>
    <item>
      <title>Google представила ИИ-браузер Disco, превращающий вкладки в веб-приложения</title>
      <link>https://tproger.ru/news/google-predstavila-ii-brauzer-disco--prevrashhayushhij-vkladki-v-veb-prilozheniya</link>
      <comments>https://tproger.ru/news/google-predstavila-ii-brauzer-disco--prevrashhayushhij-vkladki-v-veb-prilozheniya?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/google-predstavila-ii-brauzer-disco--prevrashhayushhij-vkladki-v-veb-prilozheniya</guid>
      <description><![CDATA[<p>Google показала ИИ-браузер Disco: он анализирует вкладки и превращает их в интерактивные веб-приложения с помощью Gemini 3 и GenTabs</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/google-predstavila-ii-brauzer-disco--prevrashhayushhij-vkladki-v-veb-prilozheniya">Google представила ИИ-браузер Disco, превращающий вкладки в веб-приложения</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[macOS]]></category>
      <category><![CDATA[Приложение]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 12 Dec 2025 09:20:24 GMT</pubDate>
      <content:encoded><![CDATA[<p><b>Google</b> анонсировала <b>Disco</b> — экспериментальный <b>ИИ-браузер</b> из Google Labs, который переосмысляет работу с вкладками.</p><p>Вместо привычного хаотичного набора страниц, браузер анализирует контекст и <b>превращает открытые вкладки в интерактивные веб-приложения</b>. Первый ключевой механизм Disco называется <b>GenTabs</b>.</p><p>Проект ориентирован на пользователей, которые работают с большим количеством источников: исследуют темы, планируют поездки, собирают информацию или обучаются.</p><p>Google называет Disco <i>«исследовательской платформой»</i>, а не готовым продуктом. Сейчас он доступен только для ограниченного числа пользователей — доступ можно <a href="https://labs.google/disco">попросить</a> на специальной странице (но только на macOS).</p><h2>Как работает GenTabs</h2><p>GenTabs построен на базе модели <b>Gemini 3</b> и использует сразу несколько источников контекста. В том числе текущие вкладки, историю взаимодействия и диалог с пользователем.</p><p>На основе всего этого ИИ определяет, какую задачу человек пытается решить и предлагает <b>сгенерированный инструмент в виде мини-приложения</b>. Например, GenTabs может:</p><ul><li><b>собрать интерактивный маршрут</b> путешествия из десятков вкладок;</li><li>превратить исследования <b>в наглядную таблицу или таймлайн</b>;</li><li><b>создать обучающий интерфейс</b> для ребенка на основе открытых материалов;</li><li>предложить <b>сгенерированное приложение</b>, о котором пользователь сам не подумал.</li></ul><p>При этом пользователю <b>не нужно писать код</b> — инструмент создается и настраивается через обычные текстовые запросы.</p><p>Все элементы GenTabs сохраняют связь с оригинальными веб-источниками, что позволяет проверить данные и избежать «черного ящика».</p><figure><img src="https://media.tproger.ru/user-uploads/111041/2025-12-12/c3a8d805-74c9-4479-b14a-09142e513db1.jpeg" alt="" /></figure><h2>Вкладки как приложения, а не как список</h2><p>Ключевая идея Disco — уйти от модели, где вкладки существуют сами по себе.</p><p>Вместо этого браузер рассматривает страницы как набор данных и функций, из которых можно собрать временное приложение под конкретную задачу.</p><p>Google подчеркивает, что Disco не заменяет веб-сайты и не копирует их содержимое. GenTabs работает поверх интернета, связывая результаты с исходными страницами и сохраняя возможность перейти к первоисточнику в любой момент.</p>]]></content:encoded>
    </item>
    <item>
      <title>Какие приложения установить на Windows и macOS</title>
      <link>https://tproger.ru/articles/kakie-prilozheniya-ustanovit-na-windows-i-macos</link>
      <comments>https://tproger.ru/articles/kakie-prilozheniya-ustanovit-na-windows-i-macos?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Валерия Турчак]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kakie-prilozheniya-ustanovit-na-windows-i-macos</guid>
      <description><![CDATA[<p>Список разбит по категориям: от браузеров и гейминга до утилит безопасности и инструментов для продуктивности.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kakie-prilozheniya-ustanovit-na-windows-i-macos">Какие приложения установить на Windows и macOS</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Android]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Git]]></category>
      <category><![CDATA[Hardware]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Производительность]]></category>
      <category><![CDATA[Практика]]></category>
      <category><![CDATA[Apple]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Windows]]></category>
      <category><![CDATA[iOS]]></category>
      <category><![CDATA[Slack]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[Tor]]></category>
      <category><![CDATA[Windows 10]]></category>
      <category><![CDATA[Google Chrome]]></category>
      <category><![CDATA[.NET]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[Боты]]></category>
      <category><![CDATA[Базы данных]]></category>
      <category><![CDATA[Rust]]></category>
      <category><![CDATA[Управление проектами]]></category>
      <category><![CDATA[Дизайн интерфейсов и UX]]></category>
      <category><![CDATA[HR]]></category>
      <category><![CDATA[VPN]]></category>
      <category><![CDATA[GitLab]]></category>
      <category><![CDATA[Telegram]]></category>
      <category><![CDATA[Xbox]]></category>
      <category><![CDATA[Сервисы]]></category>
      <category><![CDATA[Docker]]></category>
      <category><![CDATA[macOS]]></category>
      <category><![CDATA[MIT]]></category>
      <category><![CDATA[Adobe]]></category>
      <category><![CDATA[Firefox]]></category>
      <category><![CDATA[IBM]]></category>
      <category><![CDATA[Mozilla]]></category>
      <category><![CDATA[Для продвинутых]]></category>
      <category><![CDATA[Avast]]></category>
      <category><![CDATA[Intel]]></category>
      <category><![CDATA[Фронтенд]]></category>
      <category><![CDATA[NVIDIA]]></category>
      <category><![CDATA[Маркетинг]]></category>
      <category><![CDATA[QA]]></category>
      <category><![CDATA[YouTube]]></category>
      <category><![CDATA[Игра]]></category>
      <category><![CDATA[Мессенджер]]></category>
      <category><![CDATA[AMD]]></category>
      <category><![CDATA[Приложение]]></category>
      <category><![CDATA[Бета]]></category>
      <category><![CDATA[Safari]]></category>
      <category><![CDATA[Взлом]]></category>
      <category><![CDATA[PlayStation]]></category>
      <category><![CDATA[Microsoft Edge]]></category>
      <category><![CDATA[Discord]]></category>
      <category><![CDATA[RPA]]></category>
      <category><![CDATA[Дизайн]]></category>
      <category><![CDATA[Epic Games]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Графы]]></category>
      <category><![CDATA[Figma]]></category>
      <category><![CDATA[Бизнес]]></category>
      <category><![CDATA[Markdown]]></category>
      <category><![CDATA[Notion]]></category>
      <category><![CDATA[Steam]]></category>
      <category><![CDATA[GPU]]></category>
      <category><![CDATA[iPhone]]></category>
      <category><![CDATA[MacBook]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 26 Oct 2025 14:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Итак, вы только что настроили новый компьютер. Операционная система установлена, драйверы обновлены, и теперь пора заняться самым интересным — установкой программ. Но с чего начать? Какие приложения действительно необходимы, а какие просто занимают место?</p><p>Редакция Tproger сделала и адаптировала <a href="https://www.techspot.com/article/2974-desktop-software-essentials/">перевод подборки  программ для Windows и macOS</a>. Здесь вы найдёте проверенные временем решения для работы, развлечений и повседневных задач. Мы сосредоточились на бесплатных и условно-бесплатных приложениях с отличной репутацией, которые решают реальные задачи без навязывания ненужных функций.</p><p>Список разбит по категориям: от браузеров и гейминга до утилит безопасности и инструментов для продуктивности.</p><p>Неважно, опытный вы пользователь или новичок — здесь найдётся что-то полезное для каждого.</p><h2>Браузеры</h2><p>Браузер — это, пожалуй, самое важное приложение на вашем компьютере. Именно через него проходит большая часть вашей цифровой жизни: работа, развлечения, коммуникации. Выбор браузера влияет не только на скорость загрузки страниц, но и на конфиденциальность, безопасность и удобство работы.</p><ul><li><b>Большинство пользователей:</b> Chrome, Edge или Safari</li><li><b>Защита приватности: </b>Firefox, Brave, Ungoogled Chromium</li><li><b>Опытные пользователи:</b> Vivaldi</li><li><b>Максимальная анонимность: </b>Tor Browser</li></ul><h3>Google Chrome</h3><p>Chrome остаётся самым популярным браузером в мире — и не просто так. Он быстрый, стабильный и отлично интегрируется с экосистемой Google. Огромная библиотека расширений из Chrome Web Store позволяет настроить браузер под любые задачи. Синхронизация между устройствами работает безупречно: вкладки, пароли, закладки и история всегда под рукой.</p><p>Минус один, но существенный: Chrome прожорлив. Если у вас открыто больше десятка вкладок, он может съесть несколько гигабайт оперативной памяти. На компьютерах с 8 ГБ RAM и меньше это становится проблемой.</p><h3>Mozilla Firefox</h3><p>Firefox — это выбор тех, кто ценит приватность и открытость. Mozilla не зарабатывает на продаже ваших данных, а сам браузер активно развивается сообществом. Встроенные инструменты защиты от трекинга работают из коробки, блокируя рекламные сети и скрипты слежения.</p><p>По скорости Firefox не уступает Chrome, а по потреблению памяти даже выигрывает. Библиотека расширений чуть меньше, чем у Chrome, но все основные инструменты доступны.</p><h3>Microsoft Edge</h3><p>Edge построен на том же движке Chromium, что и Chrome, но при этом лучше оптимизирован для Windows. Microsoft вложилась в производительность: браузер работает быстро, потребляет меньше ресурсов и отлично интегрируется с системой.</p><p>Особенно приятны функции вроде Collections (коллекции вкладок для организации исследований), режим чтения и встроенный скриншотер. Edge поддерживает все расширения Chrome, так что переход безболезненный.</p><h3>Brave</h3><p>Brave — это Chrome на стероидах приватности. Браузер блокирует рекламу и трекеры по умолчанию, что делает сёрфинг быстрее и безопаснее. При этом он полностью совместим с расширениями Chrome.</p><p>Есть интересная фишка: Brave Rewards позволяет зарабатывать криптовалюту за просмотр приватной рекламы (если захотите её включить). Спорная механика, но как опция — почему нет. Для тех, кто хочет Chrome без Google и с упором на приватность, Brave — отличный выбор.</p><h3>Safari (только macOS)</h3><p>Если у вас Mac, Safari заслуживает внимания. Это самый энергоэффективный браузер для macOS: на MacBook он даёт ощутимо больше автономности по сравнению с Chrome или Firefox. Интеграция с экосистемой Apple безупречна: Handoff, синхронизация через iCloud, Reading List, автозаполнение паролей.</p><p>Safari быстрый, безопасный и не перегружен функциями. Единственный минус — библиотека расширений заметно скромнее, чем у конкурентов. Но для большинства задач базового функционала хватает.</p><h3>Ungoogled Chromium</h3><p>Для ультраосторожных Ungoogled Chromium удаляет всё отслеживание и сервисы Google — но вам придётся настраивать всё самостоятельно, так как в нём нет автообновлений или встроенной синхронизации.</p><p>Для максимально осторожных пользователей — это Chrome, из которого убрали всю телеметрию Google, отслеживание и облачные сервисы. Браузер работает, но требует ручной настройки: отсутствуют автоматические обновления и встроенная синхронизация между устройствами.</p><h3>Tor Browser</h3><p>Выводя приватность на следующий уровень, Tor Browser маршрутизирует ваш трафик через сеть Tor, анонимизируя ваш IP и многократно шифруя соединение. Он медленнее по задумке, но идеален, если ваш приоритет — максимальная анонимность, а не скорость или удобство.</p><h3>Vivaldi</h3><p>Vivaldi — браузер мечты для тех, кто хочет полного контроля. Стекирование вкладок, тайлинг, кастомные горячие клавиши, встроенная почта и календарь, веб-панели — это полноценный десктопный опыт внутри браузера. Хотите боковую панель браузера, открывающую ваши заметки, RSS-ленты или любой нужный сайт? Vivaldi это умеет.</p><h3>Arc</h3><p>Наконец, Arc — когда-то новичок на рынке браузеров, нацеленный на переосмысление UX: замена традиционной панели вкладок на боковую панель, акцент на веб-приложениях, интегрированные разделённые виды и easels для заметок и доски. К сожалению, компания за Arc прекратила разработку, чтобы полностью переключиться на ИИ с новым браузером, который сейчас в закрытой бета-версии.</p><h2>Управление паролями</h2><ul><li><b>Лучший бесплатный выбор:</b> Bitwarden</li><li><b>Также отлично:</b> 1Password, Dashlane, KeePass</li></ul><p>Миллионы людей продолжают использовать одни и те же слабые пароли на всех сайтах — или, что ещё хуже, держатся за классику вроде «123456». Даже сильные пароли мало помогают, если их повторяют или забывают. Конечно, большинство браузеров предлагают встроенные менеджеры паролей, но они ограничены, привязаны к одному браузеру и менее безопасны, чем специализированные решения.</p><p>Также не будем забывать о passkeys (ключах доступа). Если говорить практически, можно сказать, что passkeys объединяют концепцию пароля и двухфакторной аутентификации (2FA) в одно плавное действие, но гораздо безопаснее и гораздо менее раздражающе.</p><h3>Bitwarden</h3><p>Полностью опенсорсный, зашифрованный и щедрый даже в бесплатной версии. Вы получаете неограниченное количество паролей, синхронизацию между устройствами и приложения для всех платформ. Премиум ($10/год) добавляет безопасный обмен файлами и инструменты 2FA. Также есть доступные семейные и командные планы.</p><h3>1Password</h3><p>Премиум-решение с отполированным интерфейсом, сильной кроссплатформенной поддержкой и отличными функциями вроде Travel Mode (режим путешествий) и полной интеграцией passkeys.</p><h3>Dashlane</h3><p>Предлагает мониторинг даркнета, интеграцию VPN и плавный пользовательский опыт. Есть бесплатный тариф с ограниченными функциями, но премиум-версия конкурентоспособна.</p><h3>KeePassXC</h3><p>Отличная оффлайн-альтернатива, если хотите полного контроля и не против ручной синхронизации (или использования чего-то вроде Syncthing или Dropbox для синхронизации базы данных).</p><p>Пропустите LastPass — когда-то фаворит, он упал в немилость после повторных утечек безопасности. Для душевного спокойствия лучше поискать в другом месте.</p><h2>Продвинутые утилиты и дополнения к ОС</h2><ul><li><b>Поиск + лаунчеры:</b> Everything или Wox (Windows), Alfred или Raycast (macOS)</li><li><b>Пакетные менеджеры: </b>WinGet, Homebrew (macOS)</li><li><b>Для пользователей Windows:</b> PowerToys</li><li><b>Для пользователей Mac: </b>Rectangle</li><li><b>История буфера обмена: </b>ClipClip, Flycut (macOS)</li><li><b>Скриншоты + аннотации: </b>Monosnap</li></ul><h3>Winget</h3><p><b></b>Официальный менеджер пакетов Microsoft, встроенный в Windows 10 и 11. Работает похоже на Chocolatey, но разработан и поддерживается Microsoft. Homebrew — самый популярный менеджер пакетов для macOS. Позволяет быстро устанавливать, обновлять и управлять приложениями и CLI-инструментами с помощью команд в терминале.</p><h3>Everything</h3><p>Что касается поиска, Everything остаётся золотым стандартом сверхбыстрого поиска по именам файлов в Windows. Он индексирует диски за секунды и выдаёт почти мгновенные результаты с минимальной нагрузкой на систему. Если нужен функционал шире базового поиска, Wox использует движок Everything и добавляет мощные возможности лаунчера: поиск файлов, запуск приложений, калькулятор, перевод текста и расширения через плагины. Получается более гибкий опыт в духе Spotlight для Windows.</p><h3>Command Palette/Alfred/Raycast</h3><p>В который раз Microsoft не смогла существенно улучшить встроенный поиск Windows, хотя <b>Command Palette</b> в PowerToys даёт неплохой компромисс для тех, кто не хочет ставить сторонние утилиты.</p><p>На macOS <b>Alfred</b> по-прежнему главный лаунчер и утилита поиска. Он быстрый, интуитивный и в бесплатной версии включает историю буфера и настраиваемые поиски; расширенная автоматизация и «воркфлоу» доступны в Powerpack.</p><p>Тем, кто хочет современную облачно-интегрированную альтернативу с готовыми расширениями и встроенной поддержкой Notion, GitHub и Slack, стоит присмотреться к <b>Raycast</b> — это стильный, дружественный к разработчикам вариант, который стремительно набирает популярность.</p><h3>Менеджеры буфера обмена</h3><p>Они позволяют возвращаться к ранее скопированному — тексту, изображениям, ссылкам — и сильно ускоряют рутинные операции.</p><p>В Windows встроенная история буфера (Win + V) кое-как выручает, но продвинутым пользователям обычно хочется большего. В числе бесплатных рекомендаций — <b>ClipClip</b> для Windows и <b>Flycut</b> для macOS.</p><p>Когда речь о скриншотах и аннотациях, штатные инструменты macOS и Windows заметно выросли. Но многим всё равно удобнее сторонние решения. Нам по-прежнему нравится <b>Monosnap</b> за простоту и возможность мгновенно заливать снимки в облако для шаринга (и это бесплатно).</p><p><b>PowerToys</b> — набор полезных утилит от Microsoft для продвинутых пользователей Windows, повышающих продуктивность и упрощающих рабочие процессы. Среди инструментов: FancyZones для продвинутого раскладывания окон, PowerRename для пакетного переименования, Keyboard Manager для ремапинга клавиш, универсальный color picker и другие.</p><p><b>Rectangle</b> и <b>Magnet </b>— два самых популярных приложения на macOS для закрепления окон: быстрые выравнивание и ресайз по хоткеям или перетаскиванием, примерно как по умолчанию в Windows. Пользователям, пришедшим с Windows и скучающим по системному снапингу, одно из них жизненно необходимо.</p><p>Широко используемая альтернатива в Windows — <b>FancyZones</b> (часть PowerToys), предлагающая продвинутое управление окнами: настраиваемые сетки, зоны привязки и поддержку нескольких мониторов — поэтому это фаворит пауэр-пользователей на Windows.</p><h2>Для рутины и создания проектов</h2><ul><li><b>Бесплатные инструменты: </b>FreeOffice, LibreOffice и WPS Office</li><li>Microsoft Office за единовременную плату $49, Office 2024 — $129</li><li><b>Заметки: </b>Notion, OneNote, Obsidian</li><li><b>Бесплатный PDF-редактор: </b>PDFsam</li><li><b>Почтовые клиенты:</b> Thunderbird, eM Client</li></ul><p>Независимо от того, пишете ли вы тексты, планируете проект, кодите или наводите порядок в цифровой жизни, правильные инструменты решают многое. Сегодня выбор топовых приложений для продуктивности и разработки — часто бесплатных — лучше, чем когда-либо.</p><p><b>Microsoft Office</b> остаётся отраслевым стандартом для профессиональной продуктивности. Подписка Microsoft 365 открывает доступ к Word, Excel, PowerPoint, Outlook и включает 1 ТБ облачного хранилища.</p><p>Среди бесплатных альтернатив LibreOffice — мощный open-source комплект с сильным сообществом (хотя интерфейс некоторым кажется старомодным). Если нужна внешне более майкрософтовская альтернатива, попробуйте<b> FreeOffice </b>или <b>WPS Office Free</b> — у них хорошая совместимость.</p><p>На macOS <b>Pages</b>, <b>Numbers</b> и <b>Keynote</b> предустановлены и более чем достаточны для большинства задач, особенно если вы в экосистеме Apple.</p><h3>Знания и ведение заметок</h3><p><b>Notion</b> стал универсальной платформой организации: заметки, базы данных, to-do, управление проектами, создания совместных рабочих пространств. Если нужны более локальные заметки с синхронизацией между устройствами и поддержкой Markdown, <b>Obsidian</b> — любимец студентов и исследователей.</p><p>Для быстрых кроссплатформенных заметок <b>OneNote</b> — крепкий бесплатный вариант от Microsoft. В качестве альтернатив — <b>Simplenote</b> или open-source <b>Joplin</b>.</p><p>Если вы занимаетесь академической работой и научными статьями, <b>Zotero</b> — отличный open-source менеджер источников с интеграцией в браузер и совместными коллекциями. <b>Milanote</b> предлагает визуальный подход к заметкам и планированию — идеально для креативных пользователей.</p><h3>Работа с PDF</h3><p>Хотя Adobe Acrobat остаётся премиальным редактором PDF, бесплатные альтернативы вроде <b>PDFsam</b> позволяют без усилий объединять, разбивать, редактировать и поворачивать страницы.</p><h2>Инструменты для дизайна и создания контента</h2><p>Для дизайна два выделяющихся приложения хорошо дополняют набор продуктивности. <b>Figma Desktop</b> — совместная платформа интерфейс-дизайна, широко используемая UI/UX-дизайнерами и фронтенд-разработчиками. Десктоп-версия работает быстрее, чем браузер, и лучше интегрируется с ОС — это удобно для сложных дизайн-систем и коллаборации в реальном времени.</p><p><b>Canva</b> с интуитивным drag-and-drop превосходно чувствует себя и как десктоп-приложение. Отлично подходит для быстрых графических материалов для соцсетей, маркетинга, постеров и презентаций. Благодаря тысячам шаблонов и совместной работе это фаворит как у профи, так и у новичков.</p><h2>Почтовые клиенты</h2><p>Если вы предпочитаете отдельный почтовый клиент, у <b>eM Client</b> много функций, бесплатный — до двух аккаунтов. <b>Mozilla</b> <b>Thunderbird</b> — мощная open-source альтернатива с удобной настраиваемостью, а <b>Mailbird</b> — вариант с упором на продуктивность для тех, кого не пугает подписка.</p><h2>Инструменты разработчика</h2><ul><li><b>Редакторы кода и текста:</b> VS Code, Cursor, Sublime Text</li><li><b>Система контроля версий:</b> SourceTree, GitHub Desktop</li><li><b>Контейнеры: </b>Docker</li><li><b>Локальные LLM: </b>Ollama</li><li><b>SFTP, загрузка файлов:</b> WinSCP, Forklift</li></ul><p>Для разработчиков <b>Visual Studio Code</b> — безусловный вариант. Бесплатный, лёгкий, но мощный, кроссплатформенный — тысячи расширений покрывают практически любой язык, фреймворк или инструмент. Набирающая популярность альтернатива — <b>Cursor</b>, редактор на базе VS Code с усиленной AI-помощью. Он подходит для связки с LLM: даёт inline-подсказки, генерирует код, рефакторит и позволяет редактировать кодовую базу.</p><p>При этом<b> Sublime Text </b>остаётся для скорости и простоты, а <b>Notepad++</b> — отличный лёгкий редактор для быстрых правок в Windows.</p><p>Для Git графические клиенты <b>SourceTree</b> и <b>SmartGit</b> дают понятный интерфейс для управления репозиториями на GitHub, GitLab и не только. <b>GitHub Desktop</b> раньше был простоват и не слишком хорош, но сейчас существенно прибавил — всё ещё простой для работы, но в хорошем смысле.</p><p>Для локальных окружений, API-тестирования или терминального воркфлоу инструментов — пруд пруди. Например, <b>Docker Desktop</b> стал стандартом для тех, кто собирает и запускает контейнеризированные приложения на разных платформах. Он упрощает настройку окружений и держит систему чистой.</p><p><b>Ollama</b> позволяет запускать большие языковые модели (LLM) локально с минимальной настройкой. Поддерживает модели вроде LLaMA, Mistral и другие open-weight альтернативы GPT, так что можно работать с ИИ прямо на своём компьютере без отправки данных в облако.</p><p>Если вы работаете с облачными хранилищами или SFTP, WinSCP (Windows) и ForkLift (macOS) — отличные клиенты с двухпанельным управлением файлами, синхронизацией и автоматизацией. На Mac также популярны <b>Commander One</b> и <b>Transmit</b> — у них есть встроенные подключения к удалённым и облачным путям.</p><h3>Безопасность</h3><p>И Windows, и macOS сегодня предлагают более чем достойную встроенную защиту. С защитой в реальном времени, интеграцией с файерволом и биометрией вроде <b>Windows Hello</b> и <b>Touch ID</b>. Для обычных пользователей, которые соблюдают гигиену безопасности: не скачивают сомнительное ПО, используют менеджеры паролей и включают 2FA — встроенной защиты часто хватает.</p><p>Для продвинутых пользователей есть дополнительные варианты.</p><p>Отличное первое дополнение — <b>Malwarebytes</b>. Это давний фаворит в обнаружении и удалении malware, adware и руткитов; бесплатная версия по-прежнему хороша для ручных сканов. В платной — защита в реальном времени без ощутимой просадки производительности.</p><p>Если не хочется ставить традиционный антивирус, есть достойные альтернативы. <b>Emsisoft Emergency Kit</b> — мощный портативный сканер, который можно запускать с флешки: идеально для редких глубоких сканов или лечения заражённых систем без установки чего-либо. Просто подключаете, когда нужно.</p><p>Ещё один отличный инструмент — <b>VirusTotal</b>: бесплатный веб-сервис, который проверяет файлы и URL через десятки антивирусных движков. Прежде чем открывать подозрительную загрузку, можно залить файл на VirusTotal.com или использовать их расширение для браузера, чтобы проверять ссылки в реальном времени. Быстро, просто и удобно для осторожных пользователей.</p><p>Мы не поклонники установки антивирусов на каждый компьютер и не полностью в курсе, какие сейчас показывают лучшие результаты. Тем не менее, <b>AV-Tes</b>t давно и регулярно оценивает популярные решения, поэтому советуем смотреть их свежие отчёты. В текущем списке высокооценённых — <b>Avast, BitDefender, ESET </b>и другие; многие из них предлагают бесплатные версии для пробы.</p><h3>Удалённый доступ и вспомогательные утилиты</h3><p><b>RustDesk</b> стал современным, ориентированным на приватность аналогом <b>TeamViewer</b>. Он с открытым исходным кодом, быстрый и работает кроссплатформенно.</p><p>Тем, кому нужны более устоявшиеся коммерческие решения, подойдёт <b>AnyDesk</b>, который остаётся лёгким и надёжным вариантом для личного и командного использования.</p><p>Превращение смартфона в пульт дистанционного управления компьютером бывает невероятно удобно — будь то презентации, потоковое видео или просто навигация с дивана.</p><p><b>Remote Mouse</b> — простой и эффективный способ эмулировать мышь и клавиатуру с телефона. Для более продвинутых сценариев можно использовать приложения вроде <b>Unified Remote.</b></p><h2>Редактирование изображений и видео</h2><ul><li><b>Профессиональный видеомонтаж:</b> DaVinci Resolve</li><li><b>Простой видеомонтаж: </b>CapCut</li><li><b>Редакторы изображений:</b> GIMP, PhotoDemon, Pixelmator Pro</li><li><b>Бесплатное улучшение изображений:</b> Upscayl</li><li><b>RAW-редактирование:</b> RawTherapee</li><li><b>Видеоконвертация:</b> HandBrake</li></ul><p>Если вам нужен бесплатный инструмент для редактирования изображений, <b>GIMP</b> — один из самых мощных вариантов. Он предоставляет профессиональные возможности, такие как слои, маски и настраиваемые плагины, что делает его идеальным для продвинутых пользователей. Если вы ищете более лёгкий редактор с чистым интерфейсом, стоит обратить внимание на <b>PhotoDemon</b>. Он работает как портативное приложение на Windows, поддерживает слои и редактирование — отличный выбор для быстрых правок или ретуши.</p><p>Если вы хотите увеличивать разрешение изображений без потери качества, <b>Upscayl</b> — мощный и бесплатный инструмент для апскейла. Он кроссплатформенный, и по нашим тестам показывает результаты на уровне платных решений вроде Topaz.</p><p>Для векторной графики — логотипы, иллюстрации — <b>Inkscape</b> является достойным open-source вариантом с полной поддержкой редактирования SVG. <b>Krita</b> — ещё один отличный бесплатный инструмент, особенно подходящий для цифровой живописи и художественного творчества.</p><p>Для редактирования RAW-фотографий, <b>Darktable</b> и <b>RawTherapee</b> — два высококлассных open-source аналога Adobe Lightroom. Их широко используют фотографы, которым нужна работа с изображениями без подписки.</p><p>Для простых GIF-анимаций <b>ScreenToGif</b> — удобная утилита, мгновенно записывающая область экрана и экспортирующая в GIF или другие форматы с оверлеями.</p><p>Среди платных фоторедакторов <b>Adobe Photoshop</b> остаётся лидером, но для macOS есть <b>Pixelmator Pro</b> — мощное приложение с разовой оплатой, а <b>Affinity Photo</b> предлагает профессиональные возможности по более доступной цене.</p><h3>Видеомонтаж и конвертация</h3><p><b>DaVinci Resolve</b> считается лучшим бесплатным профессиональным ПО. Его используют и энтузиасты, и профессионалы — от простого тримминга до цветокоррекции и сложного постпродакшена.</p><p><b>Shotcut</b> и <b>Kdenlive</b> — тоже сильные бесплатные варианты, предлагают более простой фукнционал с хорошим набором функций для новичков и продвинутых пользователей. <b>CapCut</b>, изначально мобильное приложение, теперь доступен на десктопе — идеально подходит для быстрых монтажей и роликов для соцсетей.</p><p>Для пользователей macOS <b>iMovie </b>предустановлен и остаётся надёжным вариантом для базовых видео. Если вам нужно просто конвертировать или сжимать видео в современные форматы, <b>HandBrake</b> — проверенное бесплатное решение с поддержкой и вариацией входных и выходных форматов.</p><p>Тем, кто ищет топовый профессиональный монтаж, подойдут <b>Adobe Premiere Pro</b> и<b> Final Cut Pro</b>, но там есть дорогая подписка и более высокий порог входа.</p><h2>Коммуникации и совместная работа</h2><ul><li><b>Для повседневной связи: </b>WhatsApp, Messenger и Zoom, если у вас нет FaceTime</li><li><b>Для приватности: </b>Signal</li><li><b>Для работы:</b> Slack, Teams</li><li><b>Для игр и общения: </b>Discord</li></ul><p>Выбор коммуникационных и мессенджерных приложений в первую очередь зависит от того, с кем вы общаетесь — с семьёй, друзьями, коллегами или игровым сообществом. Вот актуальная картина:</p><p>Для личной переписки <b>WhatsApp</b> и <b>Facebook Messenger</b> остаются самыми массовыми платформами по всему миру. У них есть десктопные клиенты и встроенное сквозное шифрование по умолчанию. <b>Telegram</b> также крайне популярен благодаря синхронизации между устройствами и поддержке крупных чатов. Пользователи Apple продолжают активно использовать <b>iMessage</b> для приватного, шифрованного общения в экосистеме Apple.</p><p>Из видеоконференций <b>Zoom</b> остаётся одним из лидеров для групповых звонков и онлайн-ивентов, предлагая локальные записи, демонстрацию экрана и комнаты (breakout rooms). Однако бесплатный тариф ограничивает 1:1 звонки 40 минутами, если не перейти на платный план. Zoom поддерживает сквозное шифрование, но при включении E2EE отключаются некоторые функции вроде облачной записи и комнат.</p><p><b>Google Meet</b> — отличный браузерный аналог без необходимости установки, который заметно улучшился по качеству и удобству использования. Многие компании применяют Meet в ежедневной работе и гибридных форматах. Если ваша организация использует Microsoft 365, скорее всего, вы работаете в <b>Microsoft Teams</b>, который уже заменил Skype на корпоративном уровне. Teams поддерживает большие созвоны, обмен файлами и глубоко интегрирован с Office. Сквозное шифрование доступно, но только для 1:1 звонков.</p><p><b>FaceTime</b> по-прежнему отличный для пользователей Apple, и благодаря новым обновлениям к звонку теперь могут присоединяться и пользователи Android/Windows по ссылке через браузер.</p><p>Когда приватность критична, <b>Signal</b> — один из лучших вариантов. Разработан некоммерческой организацией, бесплатен, open-source, без рекламы, использует надёжное сквозное шифрование для сообщений и звонков.</p><p>Для рабочих коммуникаций<b> Slack</b> и <b>Teams</b> продолжают использоваться в бизнес-среде. Бесплатный тариф Slack ограничивает историю 90 днями и звонки, но остаётся любимцем стартапов и малых команд благодаря интеграциям и ботам. <b>Cisco Webex</b> — также крепкий вариант, особенно популярен в корпоративной среде.</p><p>Если вы работаете с креативными командами, сообществами или геймерами, <b>Discord</b> стал явным лидером. Изначально созданный для игр, он превратился в полноценную коллаборативную платформу с текстом, голосом и видео, стримингом экрана и ботами для автоматизации. Многие комьюнити — и даже IT-компании — используют Discord как основной рабочий инструмент.</p><p>Для внутриигрового голосового чата <b>TeamSpeak </b>остаётся олдскульным достойным вариантом: можно использовать анонимно и получать полный контроль над сервером. Встроенный чат Steam лучше, чем раньше, и помогает в игровой координации, но большинство всё же выбирает Discord.</p><h2>Гейминг, моддинг и стриминг</h2><ul><li><b>Игровые платформы: </b>Steam, Epic Games, EA App, Ubisoft, GOG</li><li><b>Последние драйверы для GPU:</b> Nvidia GeForce, AMD Radeon, Intel Arc</li><li><b>Стриминг:</b> OBS Studio</li></ul><p><b>Steam</b> остаётся центром PC-игр. Это не только магазин, но и социальная платформа, лаунчер и площадка с модами, облачными сохранениями и встроенным стримингом. Регулярные распродажи, поддержка контроллеров и сообщества делают его обязательным для любого PC-геймера.</p><p>Не менее важно установить Epic <b>Games Store</b>. Хотя библиотека меньше, он регулярно раздаёт бесплатные игры, доступные любому с аккаунтом Epic. Это также must-have, если вы играете в Fortnite.</p><p>Помните: не все издатели размещают игры на Steam или Epic. Для тайтлов EA понадобится <b>EA App (ранее Origin)</b>, для Ubisoft — <b>Ubisoft Connect</b>, для Blizzard/Activision — <b>Battle.net</b>, а GOG Galaxy не только предлагает DRM-free классику, но и может агрегировать игры из других лаунчеров.</p><p>Некоторые сверхпопулярные игры распространяются отдельно: Minecraft (через Minecraft.net или Microsoft Store), Roblox, League of Legends и Valorant (через лаунчер Riot Games). Если вы новичок и ищете что-то лёгкое, можно начать с free-to-play тайтлов или классики вроде <b>Brutal Chess</b> или <b>GZDoom</b>.</p><p>Если вы играете с геймпадом, Windows поддерживает Xbox-контроллеры из коробки. PlayStation-контроллеры теперь тоже отлично работают: Steam через <b>Steam Input </b>поддерживает DualShock 4 и DualSense практически во всех играх. При необходимости глубокой кастомизации можно использовать DS4Windows, но большинству хватает возможностей Steam.</p><p>Если вас интересует моддинг, хороший менеджер модов время в этой жизни:</p><ul><li><b>Mod Organizer 2</b> — лучший для RPG Bethesda (Skyrim, Fallout).</li><li><b>Vortex (от Nexus Mods)</b> — дружелюбный к новичкам и поддерживает широкий перечень игр.</li></ul><p>Для записи геймплея или стриминга <b>Nvidia ShadowPlay</b> и <b>AMD Radeon ReLive</b> подходят для простых задач. Но для стриминга с вебкой, сценами, оверлеями или многосценовым продакшеном <b>OBS Studio</b> — безальтернативный лидер. Он бесплатный, open-source и подходит как новичкам, так и про-стримерам (Twitch, YouTube, Kick и т.д.). <b>SignalRGB</b> помогает синхронизировать весь RGB-зоопарк и задавать динамические эффекты.</p><h2>Мониторинг железа и разгон</h2><ul><li><b>Мониторинг: </b>CPU-Z, HWMonitor, HWiNFO64</li><li><b>Настройка и разгон:</b> Afterburner, FanControl, ThrottleStop, SignalRGB</li></ul><p>Одно из первых дел, которое стоит сделать после сборки ПК — убедиться, что компоненты соответствуют ожиданиям и работают корректно. К счастью, существует много инструментов, позволяющих мониторить, тестировать и настраивать железо.</p><p>Начать стоит с <b>CPU-Z</b> — классического бесплатного инструмента, показывающего информацию о CPU, материнской плате, оперативной памяти и других компонентах. Он также умеет запускать простой стресс-тест и бенчмарк для проверки стабильности.</p><p>Для более широкого мониторинга <b>HWMonitor</b> показывает температуры, напряжения и скорости вентиляторов в реальном времени. Если нужно ещё глубже и с более гибким интерфейсом — <b>HWiNFO64</b> считается одним из лучших: поддерживает логирование датчиков и интеграцию с оверлеями (например, RTSS или Rainmeter).</p><p>Чтобы проверить хранилище, <b>CrystalDiskMark</b> измеряет скорость чтения/записи SSD и HDD — это помогает понять, соответствует ли диск заявленным характеристикам. Глубже оценить здоровье накопителя можно в <b>Hard Disk Sentinel</b>, который анализирует SMART-данные, оценивает срок службы и предлагает ограниченный ремонт.</p><p>С точки зрения охлаждения, всё больше геймеров используют утилиты для настройки вентиляторов. <b>FanControl</b> — актуальный бесплатный фаворит: поддерживает сложные кривые оборотов, привязку к датчикам, и совместим с большинством современных материнских плат. На Mac одной из лучших утилит остаётся<b> Macs Fan Control.</b></p><p>Для настройки видеокарт долгое время стандартом был <b>MSI Afterburner</b> — для разгона, настройки вентиляторов и мониторинга с RTSS-оверлеем. Однако из-за замедления обновлений многие сегодня используют встроенные утилиты от <b>Nvidia (GeForce Experience/Control Panel)</b> и <b>AMD (Adrenalin Software)</b>.</p><p>Если вы меняете видеокарту или подозреваете проблемы с драйверами, обязательно используйте <b>Display Driver Uninstaller</b> (DDU) — он полностью очищает систему от старых драйверов перед переустановкой.</p><p>Если вы играете на ноутбуке или хотите снизить нагрев и повысить автономность, <b>ThrottleStop</b> остаётся одним из лучших инструментов для андервольта CPU и настройки энергопрофилей.</p><p>Тем, кто серьёзно подошёл к разгону CPU и GPU, пригодятся фирменные инструменты вроде <b>Intel XTU (для Intel) и AMD Ryzen Master</b> — они дают контроль над частотами, напряжениями и лимитами мощности.</p><h2>Управление файлами</h2><ul><li><b>Поиск больших файлов:</b> SpaceSniffer, WizTree, Disk Drill (macOS)</li><li><b>Поиск дубликатов: </b>dupeGuru</li><li><b>Архивы и ZIP: </b>PeaZip, The Unarchiver</li><li><b>Очистка: </b>BCUninstaller, CCleaner Portable, AppCleaner (macOS)</li></ul><p>Чтобы грамотно управлять файлами и освобождать место, нужно понимать, что именно занимает пространство. На Windows популярны <b>WinDirStat и WizTree </b>— быстрые бесплатные инструменты для визуализации диска. <b>SpaceSniffer</b> предоставляет динамическую схему.</p><p>На macOS — <b>GrandPerspective и Disk Drill </b>предлагают аналогичный функционал, а <b>DaisyDisk</b> — один из самых красивых платных вариантов с молниеносным сканированием.</p><p>Если дубликаты засоряют диск, <b>dupeGuru</b> (open-source) отлично справляется с поиском повторяющихся изображений и музыки, даже слегка изменённых.</p><p>Для пакетного переименования файлов (например, фоточек с камеры) существует гибкий <b>Bulk Rename Utility</b>. Если нужно что-то попроще: <b>PowerRename</b> из PowerToys (Windows) или встроенный инструмент в <b>Finder</b> (macOS) подходят большинству.</p><p>Встроенный <b>File Explorer</b> в Windows недавно получил вкладки и стал удобнее, но <b>Files</b> (open-source) — современная альтернатива с улучшенным UX. Кто-то ещё пользуется <b>Total Commander</b> или <b>Directory Opus</b>, благодаря расширяемости и скриптам, хотя новичкам они кажутся устаревшими. Для просмотра изображений по-прежнему незаменим <b>IrfanView</b>.</p><p>Для работы с архивами, если не устраивает встроенный ZIP-менеджер Windows, скачайте <b>7-Zip</b> или <b>PeaZip</b>. На Mac лучшим бесплатным инструментом остаётся <b>The Unarchiver</b>.</p><p>Для очистки системы важно выбирать надёжные утилиты. На Windows, <b>BCUninstaller (Bulk Crap Uninstaller)</b> — один из самых проверенных для удаления программ и их хвостов. <b>BleachBit</b> и <b>Wise Disk Cleaner</b> — безопасные альтернативы <b>CCleaner</b> (лучше использовать Portable-версию, так как стационарная испортила репутацию). На Mac <b>AppCleaner</b> всё ещё любим за полное удаление приложений без мусора.</p><p>Если вы организуете большую библиотеку медиа, стоит взглянуть на open-source <b>TagSpaces</b>, позволяющий тегировать файлы локально, без облака.</p><h2>Облачное хранилище и резервное копирование</h2><ul><li><b>Простая синхронизация: </b>Dropbox, Google Drive</li><li><b>Фото между устройствами:</b> Apple iCloud, Google Photos</li><li><b>Приватность: </b>pCloud, Proton Drive, Internxt</li><li><b>Полные бэкапы:</b> Backblaze, IDrive</li></ul><h3>Базовое облачное хранилище</h3><p><b>Dropbox</b> — один из самых простых в использовании, хотя бесплатных 2 ГБ мало.</p><p><b>
Google Drive</b> — 15 ГБ бесплатно, используется Gmail, Docs и Photos. Идеален для Android.</p><p><b>
OneDrive</b> — идёт в комплекте с Windows и Microsoft 365. 1 ТБ включён в большинство Office-планов. Хотя по скорости и интерфейсу уступает Dropbox/Google.</p><p><b>
iCloud Drive</b> — лучший выбор для пользователей Apple, глубокая интеграция с macOS/iOS. Бесплатно 5 ГБ, далее по планам до 2 ТБ.</p><p><b>
Proton Drive</b> — шифрованная альтернатива от создателей ProtonMail.</p><h3>Фото и видео</h3><p>На macOS приложение <b>Photos</b> автоматически создаёт альбомы по людям и локациям, синхронизирует всё через iCloud.</p><p>На Windows мы часто рекомендуем <b>Google Photos</b>, который предлагает аналогичный набор функций и автоматизацию. Для пользователей Android — это стандарт по умолчанию. Да, раньше было безлимитно, теперь фото занимают общее место Google Drive (15 ГБ), которое быстро заканчивается.</p><h3>Полные бэкапы</h3><p>Если требуется сохранять всю систему, терабайты медиа, состояние дисков используйте отдельные сервисы резервного копирования.</p><p><b>Backblaze</b> — топ в этой категории: фиксированная цена (~$8/месяц за устройство), безлимитное хранилище, минимум настроек: установил и забыл.</p><p><b>IDrive</b> — более контролируемый вариант, поддерживает несколько устройств, внешние диски и версионность файлов.</p><p>Простой для не-технарей — <b>Carbonite</b>, с возможностью быстрого восстановления и круглосуточной поддержкой.</p><p>Профессионалам — <b>Acronis Cyber Protect</b>: клон дисков, анти-вымогатель, гибридное облако.</p><h3>Для особо чувствительных данных</h3><p>Если вы храните личные финансовые документы или медицинские сведения, стоит выбрать end-to-end решений.</p><p><b>pCloud</b> предлагает клиентское шифрование (через платный «Crypto»). Даже при взломе аккаунта файлы не расшифруются без ключа.</p><p><b>Proton Drive </b>— аналогичный подход, с прозрачностью open-source.</p><h2>Прочие полезные инструменты, не вошедшие в другие разделы</h2><p><b>Google Earth</b> — для любителей карт и планировки.</p><p><b>qBittorrent</b> — лучший torrent-клиент: чистый, без рекламы, с поиском. Альтернатива — легковесный Transmission или кастомизируемый Deluge.</p><p><b> iMazing</b> — must-have для владельцев iPhone: резервные копии, экспорт медиа, проверка батареи, конвертация HEIC.</p><p><b>AirDroid</b> — аналог для Android: управление файлам, уведомления, SMS с ПК.</p><p><b>Rufus</b> — лидер по созданию загрузочных USB-дисков для Windows/Linux.</p><p><b>Open Shell </b>— возвращает классическое меню «Пуск» в стиле Windows 7.</p><p><b>Stretchly</b> — напоминает делать перерывы — полезно удалёнщикам и фрилансерам.</p><p><b>AutoHotkey</b> — скриптовый движок для Windows: переназначение клавиш, макросы, автоматизация.</p><p><b>VPN: </b>бесплатные — ProtonVPN, Windscribe, TunnelBear (с лимитом). Платные — ProtonVPN, NordVPN.</p><p><b>Calibre</b> — лучшее бесплатное решение для чтения, организации и конвертации e-book (EPUB, MOBI, PDF и др.).</p><h2>Заключение</h2><p>Итак, мы прошлись по основным категориям приложений, которые стоит установить на новый компьютер. Конечно, этот список не исчерпывающий — у каждого свои задачи и предпочтения. Но если вы установите хотя бы половину из перечисленного, ваш компьютер станет гораздо удобнее и функциональнее.</p><p>Несколько советов напоследок:</p><ol><li><b>Не захламляйте систему.</b> Устанавливайте только то, что действительно используете. Чем меньше фоновых процессов — тем быстрее работает компьютер.</li><li><b>Следите за обновлениями.</b> Большинство программ обновляются автоматически, но некоторые требуют ручного апдейта. Свежие версии — это не только новые функции, но и закрытые уязвимости.</li><li><b>Делайте резервные копии.</b> Никакие утилиты не спасут от отказа жёсткого диска. Регулярный бэкап на внешний носитель или в облако — обязательная практика.</li><li><b>Экспериментируйте. </b>Попробуйте несколько браузеров, редакторов, плееров. То, что подходит большинству, может не подойти именно вам.</li><li><b>Читайте отзывы.</b> Перед установкой незнакомого приложения загляните на форумы или Reddit. Сообщество быстро выявляет проблемы и подводные камни.</li></ol><p>Теперь ваш компьютер готов к работе, учёбе, развлечениям — и чему угодно ещё. Главное — не забывайте, что инструменты важны, но ещё важнее то, как вы их используете. Удачи!</p>]]></content:encoded>
    </item>
    <item>
      <title>ИИ-браузер OpenAI Atlas научились ломать с помощью промт-инъекций. Создатели признали проблему</title>
      <link>https://tproger.ru/news/ii-brauzer-openai-atlas-nauchilis-lomat-s-pomoshhyu-promt-inekcij--sozdateli-priznali-problemu</link>
      <comments>https://tproger.ru/news/ii-brauzer-openai-atlas-nauchilis-lomat-s-pomoshhyu-promt-inekcij--sozdateli-priznali-problemu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/ii-brauzer-openai-atlas-nauchilis-lomat-s-pomoshhyu-promt-inekcij--sozdateli-priznali-problemu</guid>
      <description><![CDATA[<p>ИИ-браузер OpenAI Atlas оказался уязвим к промт-инъекциям: исследователи смогли заставить его выполнять скрытые команды на сайтах</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/ii-brauzer-openai-atlas-nauchilis-lomat-s-pomoshhyu-promt-inekcij--sozdateli-priznali-problemu">ИИ-браузер OpenAI Atlas научились ломать с помощью промт-инъекций. Создатели признали проблему</a>»</p>]]></description>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[OpenAI]]></category>
      <category><![CDATA[Уязвимость]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 23 Oct 2025 12:27:36 GMT</pubDate>
      <content:encoded><![CDATA[<p>Новый браузер <b>Atlas</b> от OpenAI, основанный на интеграции с ChatGPT, оказался <b>уязвим к атакам через промт-инъекции</b> — скрытым инструкциям, встроенным в контент сайтов.</p><p>Об этом <a href="https://www.theregister.com/2025/10/22/openai_defends_atlas_as_prompt/">сообщили</a> специалисты <b>Brave Software</b> и независимые исследователи кибербезопасности.</p><p>Пром-инъекции — это метод, при котором злоумышленники внедряют команды прямо в текст или код страницы, чтобы <b>влиять на поведение ИИ</b>, не оставляя следов во вводе пользователя.</p><p>Модель «читает» такие инструкции как часть задачи и начинает им следовать, выполняя действия, не предусмотренные разработчиками.</p><h2>«Не доверяй ИИ» вместо резюме</h2><p>Brave назвала проблему <b>«системной уязвимостью целого класса ИИ-браузеров»</b>.</p><p>В одном из тестов, исследователи встроили в Google-документ скрытую инструкцию. После этого Atlas, вместо запрошенного резюме, вывел фразу <b>«не доверяй ИИ»</b>. Тем самым детище OpenAI продемонстрировало, что поведение агента можно подменить буквально одной строчкой текста.</p><p>По словам специалистов, аналогичные уязвимости замечены в других продуктах — включая <b>Perplexity Comet</b> и <b>Fellou</b>.</p><h2>Реакция OpenAI</h2><p>Руководитель направления безопасности OpenAI <b>Дэйн Стаки</b> подтвердил, что угроза существует:</p><blockquote>Промт-инъекции остаются одной из ключевых нерешенных проблем в области ИИ-безопасности. Злоумышленники будут тратить значительные ресурсы, чтобы заставить ChatGPT-агентов поддаваться подобным атакам. Мы рассматриваем это как фронтир безопасности.</blockquote><p>Стаки отметил, что компания внедряет новые методы защиты и обучения, но <b>полностью исключить риск пока невозможно</b>.</p><h2>Что говорят эксперты</h2><p>Исследователь ИИ-безопасности <b>Йоханн Рехбергер</b>, известный своими работами о промт-инъекциях, заявил, что подобные атаки «напоминают социальную инженерию, только против машин»:</p><blockquote>Нет стопроцентной защиты. Поэтому важно внедрять фильтры не только в модель, но и на уровне инфраструктуры, а также сохранять человеческий контроль.</blockquote><p>Он добавил, что OpenAI уже внедрила режимы с ограниченным доступом к данным и ведет активное тестирование Atlas, однако агентные ИИ-системы все еще находятся <b>на ранней стадии развития</b>, и новые уязвимости будут появляться регулярно.</p>]]></content:encoded>
    </item>
    <item>
      <title>WebAssembly выходит за пределы браузера: серверные и embedded-применения</title>
      <link>https://tproger.ru/articles/webassembly-vyhodit-za-predely-brauzera--servernye-i-embedded-primeneniya-257873</link>
      <comments>https://tproger.ru/articles/webassembly-vyhodit-za-predely-brauzera--servernye-i-embedded-primeneniya-257873?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Денис Кудерин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/webassembly-vyhodit-za-predely-brauzera--servernye-i-embedded-primeneniya-257873</guid>
      <description><![CDATA[<p>Как WebAssembly используют в серверных и embedded-системах. Преимущества WASM: безопасность, переносимость и эффективность. Примеры внедрения от Fastly и других компаний. Перспективы технологии в 2025 году.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/webassembly-vyhodit-za-predely-brauzera--servernye-i-embedded-primeneniya-257873">WebAssembly выходит за пределы браузера: серверные и embedded-применения</a>»</p>]]></description>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Компиляторы]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Производительность]]></category>
      <category><![CDATA[Микросервисы]]></category>
      <category><![CDATA[Отладка]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[WebAssembly]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 17 Sep 2025 12:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>WebAssembly (WASM) — язык программирования низкого уровня для стековой виртуальной машины. Когда он только появился, его воспринимали  исключительно как технологию для ускорения веб-приложений. Сегодня WASM стремительно выходит за границы браузера, открывая новые возможности для серверных и встраиваемых систем. Кардинально меняется сам подход к созданию кроссплатформенных приложений.</p><h2>WebAssembly в браузере: как всё начиналось</h2><p>Прежде чем говорить о настоящем и будущем WebAssembly, вспомним, с чего он начинался. Технология создавалась исключительно для работы в браузере. WebAssembly использовался (и используется сейчас): для оптимизации производительности, миграции legacy-нативных приложений, запуска кода на языках, отличных от JavaScript.</p><p>Ярче всего успех этого подхода демонстрирует Figma — популярный редактор для дизайнеров интерфейсов. Для многих стало неожиданностью, что редактор Figma, будучи веб-приложением, написан на C++.</p><p><b>Александр Коротаев</b>, фронтенд-разработчик, автор ТГ канала «Трудно быть Коротаевым»:</p><blockquote>На заре появления WASM многие ошибочно считали его то ли машиной для ускорения JS, то ли нативным модулем, который имеет доступ к операционной системе. Буквально чудо-коробочка, в которую можно поместить весь код, и он станет быстрее в три раза. Но в реальности технология столь ограничена в применении, что она до сих пор остается нишевой, хотя и очень перспективной.</blockquote><p>До WebAssembly разработчики Figma использовали технологию asm.js — предшественника WASM. Специальный компилятор преобразовывал (транспилировал) код C++ в высокооптимизированный JavaScript, который браузерные движки могли выполнять с близкой к нативной производительностью. У этого подхода были недостатки: большой размер получаемого кода и затраты на его парсинг и компиляцию в браузере.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-09-12/ca50f24f-8007-4880-b346-6b7e63692456.png" alt="" /></figure><p>Переход на WebAssembly стал переломным моментом. Поскольку WASM — это бинарный машинно-ориентированный формат, он гораздо компактнее и требует меньше ресурсов для обработки браузером. В результате миграции с asm.js на WebAssembly, Figma получила трёхкратный прирост производительности.</p><p>Этот кейс наглядно показал, что WebAssembly — это не просто ещё одна веб-технология, а настоящий прорыв, который стирает границы между нативными и веб-приложениями. Успех Figma и подобных проектов заложил фундамент для следующего логического шага: если WebAssembly так эффективен в браузере, почему бы не запускать его где угодно?</p><h2>Почему WebAssembly выходит за пределы браузера</h2><p>WebAssembly изначально создавался как безопасная, эффективная и портируемая платформа для компиляции высокоуровневых языков. Ключевые преимущества этого инструмента — изоляция выполняемого кода, платформонезависимость и высокая производительность — оказались востребованы не только в вебе.</p><p>Серверные и встроенные системы долгое время страдали от проблем совместимости, безопасности и сложности распространения кода. Традиционные подходы к изоляции (например, контейнеризация) требуют значительных ресурсов и не всегда дают достаточный уровень безопасности. WebAssembly предлагает альтернативу: песочницу с минимальными накладными расходами и встроенными механизмами безопасности.</p><p>Главным катализатором этого процесса стал стандарт WASI (WebAssembly System Interface), разработанный при участии Mozilla, Fastly и других компаний. WASI предоставляет стандартизированный интерфейс, где WebAssembly-модули взаимодействуют с операционной системой и решают проблему переносимости между различными платформами.</p><p><b>Александр Коротаев</b>, фронтенд-разработчик, автор ТГ канала «Трудно быть Коротаевым»:</p><blockquote>Открытая «кроссплатформенная» обертка WASI — это довольно большой прорыв в разработке, так как в текущем состоянии все современные продукты, выпускающиеся для разных ОС с одной кодовой базой, имеют большие, подчас legacy модули совместимости, или же запускаются внутри особых песочниц, сильно увеличивающих размер бандла. Например, браузерный движок Electron или React Native.</blockquote><h2>Как WebAssembly работает вне браузера</h2><p>Вне браузера WebAssembly исполняется в специальных средах выполнения (runtimes), которые взаимодействуют с операционной системой через WASI. Известные примеры — <a href="https://wasmtime.dev/">Wasmtime</a> от Mozilla, <a href="https://github.com/bytecodealliance/lucet">Lucet</a> от Fastly и <a href="https://wasmer.io/">Wasmer</a>.</p><p>Эти среды выполняют роль «концептуальной операционной системы», предоставляют модулям WebAssembly стандартизированный доступ к системным ресурсам: файлам, сети, случайным числам и другим функциям.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-09-12/029b3ae4-a5db-416b-817f-b296969a3226.png" alt="" /></figure><p>WebAssembly принципиально отличается от традиционных подходов тем, что изолируется на уровне инструкций, а не процессов. Каждый модуль выполняется в собственной песочнице с чётко определенными границами доступа к ресурсам. Это значительно снижает риск компрометации системы даже в случае уязвимостей в самом коде.</p><h2>Безопасность как фундаментальное преимущество</h2><p>Безопасность WebAssembly основана на нескольких уровнях защиты. Модули выполняются в изолированной среде, отделённой от хост-системы с помощью техник изоляции отказов. Это означает, что приложения выполняются независимо и не могут покинуть песочницу без явного разрешения через API.</p><p>Система контролирует выполнение кода с помощью статической проверки типов — все функции нужно явно объявлять перед использованием. Даже косвенные вызовы проверяются на соответствие сигнатурам прямо во время работы программы. Такой подход блокирует распространённые атаки — переполнение буфера и внедрение вредоносного кода.</p><p>Память в WebAssembly изолирована — напрямую с ней работать нельзя. Когда система обращается к памяти, она проверяет границы доступа, а локальные переменные хранятся в защищённом стеке вызовов.</p><p>Важность такого подхода к безопасности сложно переоценить в свете общих трендов защиты данных. К 2025 году безопасность и конфиденциальность стали ключевыми приоритетами для индустрии. Это особенно актуально на фоне растущих рисков при работе с большими языковыми моделями (LLM), которые могут невольно запоминать и воспроизводить конфиденциальные данные из тренировочных наборов.</p><p>Если запускать изолированные модули WebAssembly на своей инфраструктуре вместо публичного облака, можно безопасно обрабатывать чувствительные данные без риска утечки.</p><p><b>Александр Коротаев</b>, Фронтенд-разработчик, автор ТГ канала «Трудно быть Коротаевым»:</p><blockquote>Здесь явно подчеркивается безопасность платформы из коробки, но не стоит забывать, что на разработчике все еще лежит ответственность за безопасность данных и пользователей. Режим «разрешить все» — стандарт для любого MVP, и без аудита перед релизом тут все еще не обойтись. Платформа лишь гарантирует, что память процесса будет защищена от несанкционированного доступа, что уже давно делается во всех популярных операционных системах. Чтобы выйти за пределы стека или прочитать чужую память, надо использовать очень старые компиляторы или сильно низкоуровневые средства разработки.</blockquote><h2>Серверные применения WebAssembly</h2><p>Серверный ландшафт традиционно строился на монолитных приложениях и виртуальных машинах, но сегодня индустрия движется к более легковесным и изолированным компонентам. WebAssembly предлагает компромисс между производительностью нативного кода и безопасностью интерпретируемых сред. Эта технология особенно востребована в сценариях, где критически важны быстрое масштабирование и минимальное время запуска.</p><h2>Микросервисы и бессерверные архитектуры</h2><p>WebAssembly идеально подходит для микросервисных архитектур благодаря легковесности и быстрому запуску. В отличие от традиционных контейнеров, WASM-модули не требуют отдельной ОС и запускаются за миллисекунды.</p><p>Кейс: компания Fastly использует WebAssembly для исполнения пользовательского кода на серверах. Их технический директор Тайлер МакМаллен <a href="https://habr.com/ru/articles/446764/">отмечает</a>: «Мы рассматриваем WebAssembly как платформу для быстрого и безопасного кода в облаке на границе сети».</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-09-12/45f4a6a2-5b2f-440c-a634-a3b4a3f4accf.jpg" alt="" /></figure><h2>Безопасные расширения приложений</h2><p>Многие приложения позволяют пользователям запускать собственный код через плагины и расширения. Но это создаёт риски для безопасности. В WebAssembly пользовательский код выполняется с минимальными рисками.</p><p>Веб-сервер Angie <a href="https://angie.software/news/articles/wasm/">использует</a> WASM для безопасности пользовательских модулей. Это решает проблему совместимости, характерную для традиционных модулей, написанных на C.</p><p>Экономическая эффективность таких вариантов становится решающим фактором. По <a href="https://explodingtopics.com/blog/list-of-llms">данным на 2025 год</a>, глобальный рынок больших языковых моделей (LLM), чьи backend-системы часто используют микросервисные архитектуры, демонстрирует колоссальный рост. Прогнозируется, что к 2033 году он достигнет $140,8 млрд.</p><p>Для таких масштабов нужны технологии с качествами, которые как раз предоставляет WebAssembly: безопасность, переносимость и эффективное использование ресурсов. Почти все компании из списка Fortune 500 уже <a href="https://cybernews.com/security/ai-adoption-outpace-security-at-fortune500-firms/">используют</a> генеративный ИИ в своих бизнес-процессах, и для многих из них WebAssembly — ключевой инструмент для развёртывания и масштабирования этих рабочих нагрузок.</p><p><b>Александр Коротаев</b>, Фронтенд-разработчик, автор ТГ канала «Трудно быть Коротаевым»:</p><blockquote>Здесь все закономерно: бизнес всегда выбирал решения, где можно было написать код один раз и поставить его сразу на несколько платформ. Даже если сами решения  сырые и небезопасные, дешевле было увеличить поддержку пользователей и настроить аудит безопасности, чем реализовать фичу для каждой платформы отдельно. Так на рынок вышли Python, Node.js, React Native, стремительно обгоняя конкурентов за счет скорости разработки.</blockquote><p><br /></p><h2>WebAssembly в embedded-системах</h2><p>WebAssembly успешно работает на серверах, но главные изменения происходят во встроенных системах. В IoT всегда была проблема совместимости: разные процессоры, операционные системы и периферийные устройства.</p><p>Технология предлагает принципиально новый подход — единую бинарную форму, способную работать на любом микроконтроллере с минимальными адаптациями. Теперь разработчики могут не привязываться к конкретным платформам и сосредоточиться на бизнес-логике приложения.</p><h2>Удаленные интерфейсы и централизованный мониторинг</h2><p>Производители встраиваемых систем всё чаще нуждаются в удаленных интерфейсах и централизованном мониторинге. WebAssembly позволяет повторно использовать код, написанный для embedded-устройств, в веб-интерфейсах для удалённого управления.</p><p>Согласно <a href="https://www.qt.io/blog/does-webassembly-matter-for-embedded-systems-makers">исследованию</a> Qt Company, более 77% респондентов из промышленной автоматизации считают удалённое управление и централизованный мониторинг критически важными в ближайшие десять лет. WebAssembly предоставляет экономичный способ реализации таких решений.</p><p><b>Александр Коротаев</b>, Фронтенд-разработчик, автор ТГ канала «Трудно быть Коротаевым»:</p><blockquote>А это, пожалуй, самая продающая фича: обычно у компаний, которые выходят на рынок со своими железками, базами данных и прочими продуктами, все продажи буквально построены на том, что программисты у клиента знают, как это быстро встроить. Так, бизнес готов платить деньги. Обычно у них есть проблемы с API для разных языков программирования, ОС и девайсов: либо хорошо все в JS, а в мобилках не заводится, либо наоборот. А то и вообще: стоит забросить поддержку платформы хоть на полгода, сразу всёперестает работать. Потому поставлять модуль для WASI должно быть дёшево, при этом  потенциально можно закрыть даже платформы будущего. Это инновация сродни изобретению стандарта USB.</blockquote><p><br /></p><h2>Прототипирование и сотрудничество</h2><p>WebAssembly упрощает процесс прототипирования и обратной связи для embedded-устройств. Разработчики могут скомпилировать приложение, разместить его на веб-сервере и предоставить доступ всем заинтересованным сторонам. При этом не нужно распространять устройства или проходить сложные процессы публикации.</p><p>Компания Qt использует этот подход в Qt Design Viewer, позволяя разработчикам делиться интерактивными дизайнами, созданными в Qt Design Studio, с коллегами по всему миру.</p><h2>Примеры внедрения: история ByteFog</h2><p>Компания Inetra из Новосибирска <a href="https://habr.com/ru/companies/jugru/articles/441140/">разработала</a> технологию peer-to-peer для доставки видео ByteFog. Система работает на множестве платформ: Windows, Linux, Android, iOS, Web и Tizen.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-09-12/2ec3300a-dcc3-41aa-acf5-7e51b78f9131.webp" alt="" /></figure><p>Изначально веб-версия использовала Netscape Plugin API, но когда основные браузеры прекратили поддержку этой технологии в 2015 году, компания осталась без веб-версии на два года. Поэтому в 2017 году они обратились к WebAssembly.</p><p>Используя компилятор Emscripten, разработчики перенесли существующее C++-приложение в браузер. Главной сложностью было разграничить транспортный слой и бизнес-логику через интерфейсы. Основной канал доставки видео заменили на AJAX, а P2P-слой — на WebRTC.</p><p>Результат компиляции — двоичный.wasm-файл и «клеевой код» на JavaScript, взаимодействующий с браузерными API. Это позволило запускать сложную P2P-систему Peers.TV напрямую в браузере без плагинов.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-09-12/6f383fd2-9857-497f-848a-d296791fb36e.png" alt="" /></figure><h2>Fastly Terrarium: экспериментальная платформа для WebAssembly-приложений</h2><p>В 2021 году инженеры Fastly <a href="https://www.fastly.com/blog/terrarium-reframes-compiler-sandbox-relationship">выпустили</a> Terrarium — экспериментальную платформу для запуска WebAssembly-модулей на периферийных устройствах (edge devices), над которой работали несколько лет. Сейчас проект всё ещё в демо-версии.</p><p>Terrarium  показывает, как можно запускать пользовательский код в изолированных средах с минимальной задержкой. Платформа использует рантайм Lucet, разработанный инженерами Fastly, и поддерживает компиляцию из Rust, C++ и AssemblyScript.</p><p>Ключевая особенность подхода — стандарт WASI для системных вызовов, что помогаетпереносить модули между разными средами. Это особенно важно для edge-вычислений, где код должен работать на разнородном оборудовании.</p><p>По данным тестирования, время запуска модулей составляет около 50 микросекунд, а потребление памяти измеряется килобайтами на инстанс. Такие показатели достигаются за счёт изоляции на уровне инструкций, а не процессов.</p><p>Хотя Terrarium не стал коммерческим продуктом, его наработки повлияли на другие решения Fastly. Компания <a href="https://www.fastly.com/blog/how-fastly-and-developer-community-invest-in-webassembly-ecosystem">развивает</a> направление WebAssembly-вычислений далее — экосистема постоянно обновляется.</p><h2>Технические вызовы и ограничения</h2><p>Несмотря на впечатляющие возможности WebAssembly за пределами браузера, технология сталкивается с объективными сложностями в реальных проектах. Разработчикам приходится решать две задачи одновременно: изолировать код для безопасности и при этом давать доступ к системе. Важно также сохранить кроссплатформенность, но не терять в производительности на конкретных устройствах.</p><p>Эти компромиссы особенно заметны в embedded-среде, где каждое решение напрямую влияет на энергопотребление, стоимость и надежность системы.</p><p><b>Александр Коротаев</b>, Фронтенд-разработчик, автор ТГ канала «Трудно быть Коротаевым»:</p><blockquote>А здесь кроется главное: почему такое решение не было написано ранее? Дело в том, что оно явно затратное по ресурсам, если сравнивать ту же логику, написанную на низком уровне. Сейчас любые устройства стали мощнее, чем ранее, и теперь разница уже не так заметна. Поэтому WASI может широко распространяться, без типичных минусов высокоуровневых абстракций: потребления памяти и энергии сильно выше чем у конкурентов.</blockquote><p><br /></p><h2>Доступ к аппаратным ресурсам</h2><p>WebAssembly ограничивает прямой доступ к аппаратуре во встроенных системах — это плата за безопасность. Это усложняет работу embedded-разработчикам.</p><p>Сообщество WebAssembly уже решает проблемы. Стандарт WASI продолжает развиваться, и в будущем появятся более гибкие способы работы с оборудованием.</p><h2>Размер файлов и производительность</h2><p>WebAssembly-модули могут иметь значительный размер, особенно при включении стандартных библиотек. В случае ByteFog размер бандла достигал 100 МБ, что создавало проблемы для инструментов сборки и загрузки в браузере.</p><p>Чтобы уменьшить размер, нужно тщательно удалять неиспользуемый код и подбирать настройки компиляции. Кроме того, передача данных между хост-системой и WebAssembly-модулем обходится дорого.</p><p><b>Александр Коротаев</b>, Фронтенд-разработчик, автор ТГ канала «Трудно быть Коротаевым»:</p><blockquote>Тут имеется ввиду краеугольная проблема WASM модулей — ввод и вывод. Дело в том, что он довольно низкоуровневый, и если в случае с микроконтроллерами они буквально будут говорить на «одном языке» с железом, то более высокоуровневые системы, передающие данные в том же JSON, столкнутся с довольно затратным процессом сериализации данных. Чтение строки с английскими буквами это одно, а текст на разных языках — это уже задачка со звездочкой. Так что в случае LLM надо будет серьезно работать надо протоколом обмена данными.</blockquote><h2>Инструменты и экосистема</h2><p>Экосистема WebAssembly вне браузера всё ещё развивается. Поддержка различных языков программирования неравномерна: лучше всего дела обстоят у C/C++ и Rust, с интерпретируемыми языками всё сложнее.</p><p>Отладка WebAssembly-модулей ограничена в сравнении с традиционными средствами. Разработчикам часто приходится использовать косвенные методы и работать с преобразованным кодом. Это особенно важно в контексте другой быстрорастущей тенденции — переносить выполнение ИИ-моделей с серверов на сами устройства пользователей (edge computing).</p><p>Например, современные компактные LLM, такие как Phi-4-mini-flash, демонстрируют впечатляющую производительность на мобильных чипах ARM, обрабатывая запросы за 90–100 мс прямо на устройстве без облака. Для подобных сценариев WebAssembly с его переносимостью и низким потреблением ресурсов выглядит идеальной средой, если сможет предложить более прямой и эффективный доступ к специфическим возможностям железа.</p><h2>Будущее WebAssembly вне браузера</h2><p>Перспективы WebAssembly вне браузера выглядит многообещающим. Стандарт WASI совершенствуется,  поддерживая новые системные интерфейсы и возможности. Разработчики получают всё более мощные инструменты для создания и отладки WASM-модулей.</p><p>В embedded-сфере WebAssembly может стать стандартом для безопасного выполнения кода на различных устройствах IoT (интернета вещей). Его способность работать на ресурсо-ограниченных устройствах при изоляции делает инструмент привлекательной альтернативой традиционным подходам.</p><p>Майлз Боринс, технический директор руководящего комитета Node.js, <a href="https://habr.com/ru/articles/446764/">видит</a> потенциал WebAssembly в решении одной из наибольших проблем фреймворка: «Это способ достичь скорости, близкой к нативной, и повторно использовать код, написанный на других языках (C и C++), сохранять портативность и безопасность».</p><p><b>Александр Коротаев</b>, Фронтенд-разработчик, автор ТГ канала «Трудно быть Коротаевым»:</p><blockquote>Как я понял, под фундаментальными проблемами имеется в виду ограничение на кол-во операций с потоками и файлами в текущий версиях Node.js, что не дает серверам на «ноде» тягаться с Nginx на равных.</blockquote><p><br /></p><h2>Итоги</h2><p>WebAssembly превращается из узкоспециализированной веб-технологии в универсальную платформу для выполнения кода. Безопасность, переносимость и производительность WebAssembly делают его эффективным решением для серверных и встраиваемых систем.</p><p>У WebAssembly всё ещё есть проблемы с доступом к аппаратным ресурсам и большим размерам модулей. Однако инструменты и стандарты активно развиваются — скорее всего, эти ограничения постепенно устранят.</p><p>Для разработчиков WebAssembly открывает новые возможности повторного использования кода и создания безопасных, переносимых приложений. Для индустрии в целом — это шаг к более безопасным и эффективным моделям распределения и выполнения кода.</p><p>Как <a href="https://habr.com/ru/articles/446764/">отмечает</a> Шон Уайт, директор Mozilla по R&amp;D: «WebAssembly уже меняет способы доставки людям новых видов привлекательного контента. С WASI преимущества WebAssembly получат больше пользователей и больше устройств в разных местах».</p><p>WebAssembly больше не ограничивается браузером — он становится универсальной платформой для среды, где код должен выполняться безопасно и эффективно везде: от облачных серверов до крошечных устройств интернета вещей.</p>]]></content:encoded>
    </item>
    <item>
      <title>Chrome 140 сломал старые расширения. Как теперь запустить uBlock и стоит ли пересесть на Firefox</title>
      <link>https://tproger.ru/news/chrome-140-slomal-starye-raswireniya--kak-teper-zapustit-ublock-i-stoit-li-peresest-na-firefox</link>
      <comments>https://tproger.ru/news/chrome-140-slomal-starye-raswireniya--kak-teper-zapustit-ublock-i-stoit-li-peresest-na-firefox?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/chrome-140-slomal-starye-raswireniya--kak-teper-zapustit-ublock-i-stoit-li-peresest-na-firefox</guid>
      <description><![CDATA[<p>Chrome 140 окончательно отключил расширения на Manifest V2, сломав uBlock Origin и аналоги. Запустить их можно лишь через ярлык с флагами, но это временный костыль. Полноценная альтернатива — Firefox, где поддержка MV2 и uBlock Origin сохранится без ограничений</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/chrome-140-slomal-starye-raswireniya--kak-teper-zapustit-ublock-i-stoit-li-peresest-na-firefox">Chrome 140 сломал старые расширения. Как теперь запустить uBlock и стоит ли пересесть на Firefox</a>»</p>]]></description>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Google Chrome]]></category>
      <category><![CDATA[Opera]]></category>
      <category><![CDATA[Firefox]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 08 Sep 2025 03:51:18 GMT</pubDate>
      <content:encoded><![CDATA[<p>Релиз <b>Chrome 140</b> принес важное, но неприятное изменение: <b>старые расширения на Manifest V2 больше не запускаются</b>. Даже через обходные флаги.</p><p>В первую очередь, это ударило по популярным блокировщикам рекламы, таким как <b>uBlock Origin</b>, которые не хотят или не могут перейти на ограниченную архитектуру Manifest V3.</p><p>Если вы столкнулись с тем, что привычные расширения перестали работать после обновления браузера — вы не одни. Но решение пока что есть. Рассказываем, <b>как оживить uBlock Origin</b> и почему стоит начать присматриваться к альтернативам вроде <b>Firefox</b>.</p><h2>Что изменилось в Chrome 140</h2><p>До выхода 140-й версии, можно было активировать поддержку старых расширений с помощью скрытых флагов, вроде Temporarily unexpire M137 flags. Это позволяло запускать uBlock Origin и другие расширения, основанные на Manifest V2.</p><p>Теперь же эти флаги <b>удалены</b>. Даже если вы откроете chrome://flags, найти нужные параметры больше не получится. Google официально <b>убивает поддержку MV2</b>, несмотря на протесты разработчиков и сообщества.</p><h2>Как запустить uBlock Origin даже в Chrome 140</h2><p>Пока что осталась одна «дыра» — через ярлык запуска браузера. Для этого нужно:</p><ol><li>Создать ярлык Chrome на рабочем столе.</li><li>Щелкнуть правой кнопкой мыши и выбрать <b>Свойства</b>.</li><li>В поле <b>Объект (Target)</b> в конце строки дописать: --disable-features=ExtensionManifestV2Unsupported,ExtensionManifestV2Disabled</li><li>Сохранить изменения и запустить Chrome через этот ярлык.</li><li>После этого можно установить <b>uBlock Origin</b> напрямую из Chrome Web Store (если оно у вас удалилось).</li></ol><p><b>Важно:</b> этот способ работает <i>только при запуске из модифицированного ярлыка</i>. И не факт, что сохранится в будущем. Google может закрыть и эту лазейку в одном из следующих обновлений.</p><h2>Firefox или uBlock Origin Lite?</h2><p>Google активно продвигает Manifest V3 под предлогом безопасности и производительности. Но по факту, на новой версии манифеста <b>блокировщики рекламы становятся менее эффективными</b>: они ограничены по числу фильтров, не могут перехватывать запросы на лету и теряют гибкость.</p><p>uBlock Origin Lite — упрощенная версия под V3 — работает, но <b>не обеспечивает той же степени блокировки</b>, особенно на сложных или агрессивных сайтах. Разработчик самого uBlock, Рэймонд Хилл, признал, что полноценный функционал восстановить не удастся.</p><p><b>Firefox</b>, в свою очередь, сохраняет поддержку Manifest V2 и <b>не планирует отказываться от нее в обозримом будущем</b>. Расширения вроде uBlock Origin работают там <b>в полную силу</b>, без ограничений.</p><h2>Что делать дальше</h2><p>Если вы:</p><ul><li>Не готовы мириться с ослабленной блокировкой рекламы.</li><li>Зависите от специфических расширений на MV2.</li><li>Не хотите вручную править ярлыки и флаги при каждом обновлении...</li></ul><p>...то <b>можно присмотреться к Firefox</b> или хотя бы <b>временным альтернативам</b>, вроде <b>Opera</b> или <b>Edge на старых версиях Chromium</b>.</p><p>Google уже показал намеченный курс. Все идет к <b>полной блокировке Manifest V2</b>. Так что даже если сейчас удалось найти обходной путь — это лишь <b>временное решение</b>.</p>]]></content:encoded>
    </item>
    <item>
      <title>ИИ-поисковик Perplexity представил браузер Comet. Где-то мы это уже видели…</title>
      <link>https://tproger.ru/news/--ii-poiskovik-perplexity-predstavil-brauzer-comet--gde-to-my-eto-uzhe-videli-</link>
      <comments>https://tproger.ru/news/--ii-poiskovik-perplexity-predstavil-brauzer-comet--gde-to-my-eto-uzhe-videli-?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/--ii-poiskovik-perplexity-predstavil-brauzer-comet--gde-to-my-eto-uzhe-videli-</guid>
      <description><![CDATA[<p>Perplexity запустила браузер Comet с ИИ-ассистентом, читающим почту, календарь и страницы. Новый шаг к замене Google, но с рисками для приватности</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/--ii-poiskovik-perplexity-predstavil-brauzer-comet--gde-to-my-eto-uzhe-videli-">ИИ-поисковик Perplexity представил браузер Comet. Где-то мы это уже видели…</a>»</p>]]></description>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[OpenAI]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 09 Jul 2025 16:55:16 GMT</pubDate>
      <content:encoded><![CDATA[<p>Perplexity — создатель популярного ИИ-поисковика — <a href="https://www.perplexity.ai/download-comet">запустил</a> собственный браузер под названием Comet.</p><p>На старте он доступен только подписчикам Max-плана ($200 в месяц) и пользователям из списка ожидания.</p><p>Comet ставит ИИ-поиск Perplexity в центр интерфейса: краткие ответы, резюме по запросам и автоматизация задач через встроенного помощника Comet Assistant.</p><p>Он может читать письма, уведомления из календаря, управлять вкладками и взаимодействовать с содержимым страниц. В браузере предусмотрен специальный «сайдбар» для чата с ассистентом — прямо на фоне открытого сайта.</p><h2>Цель — полный отказ от Google</h2><p>С запуском Comet, Perplexity надеется миновать зависимость от Chrome и продвигать свой поиск напрямую. CEO компании заявил, что хочет «создать операционную систему, через которую можно делать всё». По его мнению, именно браузер обеспечит «бесконечное удержание» пользователей.</p><p>Выпуск Comet — логичный шаг на фоне роста. В мае Perplexity обработал 780 млн запросов, а месячный прирост аудитории превысил 20%.</p><figure><img src="https://media.tproger.ru/user-uploads/111041/2025-07-09/6d589710-b33d-4b5f-8eb0-9bc4168251da.jpeg" alt="" /></figure><h2>Альтернатива от OpenAI и других</h2><p>Comet выходит на перенасыщенный рынок. Так, в июне свой ИИ-браузер Dia показала команда The Browser Company, а OpenAI, по слухам, тоже работает над подобным решением. Более того, компания уже наняла разработчиков из оригинальной команды Chrome.</p><h2>Ассистент — фишка, но с нюансами</h2><p>Comet Assistant действительно помогает — например, пересказывает письма и подсказывает, когда выходить из дома, чтобы не опоздать на встречу из календаря.</p><p>Он умеет читать Google Docs, смотреть видео на YouTube и понимать контекст страницы. Уровень вовлечённости высокий.</p><p>Но для работы ассистенту нужен полный доступ к вашему Google-аккаунту — включая чтение писем, календарей, экранов и даже отправку писем от вашего имени. Это тревожит: ради удобства пользователи фактически передают контроль ИИ.</p><p>Кроме того, как и другие агенты, Comet Assistant ошибается. В одном из примеров он не смог корректно забронировать парковку — ввёл неправильные даты и настоял на оплате, несмотря на конфликт. Подобные «галлюцинации» — пока стандартная проблема всех ИИ-агентов.</p><h2>Стоит ли пробовать?</h2><p>Comet — это интересный эксперимент на стыке браузеров и ИИ. Его успех зависит от готовности пользователей доверять машине, которая видит всё на экране и может действовать от вашего имени.</p><p>Для одних это долгожданная замена Chrome с ИИ во главе угла. Для других — потенциально небезопасный шаг к тотальной интеграции ИИ в личную жизнь.</p><p>Выбор — за вами.</p>]]></content:encoded>
    </item>
    <item>
      <title>Playwright + VS Code: Установка и первый автотест за 15 минут</title>
      <link>https://tproger.ru/articles/playwright---vs-code--ustanovka-i-pervyj-test-za-15-minut</link>
      <comments>https://tproger.ru/articles/playwright---vs-code--ustanovka-i-pervyj-test-za-15-minut?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Pavel Nik]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/playwright---vs-code--ustanovka-i-pervyj-test-za-15-minut</guid>
      <description><![CDATA[<p>Гайд для начинающих: как настроить среду, установить Playwright и написать первый тест. Пошаговая инструкция с примерами кода и пояснениями.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/playwright---vs-code--ustanovka-i-pervyj-test-za-15-minut">Playwright + VS Code: Установка и первый автотест за 15 минут</a>»</p>]]></description>
      <category><![CDATA[PHP]]></category>
      <category><![CDATA[IDE]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Windows]]></category>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[Node.js]]></category>
      <category><![CDATA[HR]]></category>
      <category><![CDATA[MIT]]></category>
      <category><![CDATA[QA]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 24 Jun 2025 14:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Playwright — мощный инструмент автоматизации web-приложений. Фреймворк уже достаточно известный и популярный. И если вы хотите его попробовать, то вот инструкция по установке с помощью Visual Studio Code (VS code).</p><p>Гайд для тех, кто только входит в автоматизацию. После можно получить первые результаты, попробовать сам фреймворк и дальше экспериментировать: делать свои тесты.</p><p><b>*Инструкция для Windows. Надеюсь, проблем при установке ни у кого не возникнет.</b></p><h2>Основные шаги по установке</h2><h3>Установка VS Code</h3><ol><li>Перейдите на оф. сайт <a href="https://code.visualstudio.com/">https://code.visualstudio.com/</a> и скачайте последнюю версию. На главной странице должна отображаться кнопка <i>Download for Windows.</i></li><li>Дальше стандартная установка по инструкции: <i>Next &gt; Next &gt; Install</i>.</li></ol><h3>Установка Node.js. Шаги аналогичные</h3><ol><li>Также перейдите на оф. сайт <a href="https://nodejs.org/en/download">https://nodejs.org/en/download</a> и скачайте последнюю версию Node.js. Я использовал <i>Windows Installer (.msi).</i></li><li>Такая же стандартная установка: <i>Next &gt; Next &gt; Install</i>.</li></ol><h3>Создание проекта</h3><ol><li>Создайте пустую папку на ПК, где будет храниться проект для автоматизации. <br />У меня для этого есть отдельная директория, так удобнее хранить все проекты в одном месте. Но её можно создать даже на рабочем столе, разницы никакой. Мой путь к папке —  <i>C:\Users\Pavel\Projects\TestProject.</i></li><li>Запустите VS Code и там выберите созданную папку.</li></ol><figure><img src="https://media.tproger.ru/user-uploads/113257/2025-03-04/d46a761e-dbab-4bde-9ac8-f1bb936117d0.png" alt="" /></figure><h3>Установка Playwright</h3><ol><li>Перейдите в раздел управления расширениями <i>Extensions.</i></li><li>Введите <i>Playwright</i> в поисковой строке.</li><li>Нужно скачать тот, что верифицирован Microsoft (у него больше всего установок).</li></ol><figure><img src="https://media.tproger.ru/user-uploads/113257/2025-03-04/b5ea7aec-53b2-480b-af3c-4934b427a86c.png" alt="" /></figure><p>Но установка еще не закончена, дальше:</p><ul><li>Вызовите<i> Command Palette</i>. Можно через основное меню: <i>View &gt; Command Palette </i>или комбинацией клавиш <i>Ctrl+Shift+P</i>.</li><li>Введите <i>Test: Install Playwright</i> в появившейся строке.</li><li>Выберите необходимые браузеры для установки.</li><li>Я оставляю только Chromium, его вполне достаточно. Кликаем Ok и ждем окончательной установки Playwright (должен появиться терминал и начаться установка пакетов).</li></ul><figure><img src="https://media.tproger.ru/user-uploads/113257/2025-03-04/9d8a4d16-7fbc-43ba-a316-a28d7b729a95.png" alt="" /></figure><h3>Создание тестов</h3><ol><li>В основном окне <i>Explorer </i>добавьте новый файл в модуле <i>tests </i>(правая кнопка мыши, новый файл).<br />*Важно, чтобы название файла оканчивалось на <i>spec.ts</i> или <i>.test.ts</i> (расширение может быть и <i>.js</i>): так Playwright определяет тесты по дефолту. В примере добавил файл <i>login.spec.ts.</i></li></ol><figure><img src="https://media.tproger.ru/user-uploads/113257/2025-03-04/731e6efb-a3e6-4385-93c7-2fa89e8fa0f3.png" alt="" /></figure><ol><li>Вставьте следующий код в созданный файл <i>login.spec.ts. </i><br />Это пример логина на платформе, который ± подходит под любой сайт: нужно только изменить URL, locators и данные для входа. Использую тестовую платформу <a href="https://demowebshop.tricentis.com/">https://demowebshop.tricentis.com/</a>.</li></ol><p>Осталось совсем немного. Только запустить созданный тест:</p><ol><li>Перейдите в раздел <i>Testing</i>.</li><li>Выберите созданный файл и запустите тесты кликом <i>Run test</i>.</li></ol><figure><img src="https://media.tproger.ru/user-uploads/113257/2025-03-04/64456ff7-2a83-416f-8a60-57ae2567eb51.png" alt="" /></figure><p>Можете добавить еще один тест в тот же файл и посмотреть его выполнение:</p><p>Вот и всё! Теперь у вас есть базовая автоматизация с Playwright! Дальше можно дописывать другие тесты. Например, посмотреть работу системы с незарегистрированным email, вынести credentials в конфигурационный файл и т.д. И, конечно, углубляться, разбираться во всем, чтобы стать уверенным автоматизатором. Можно продолжить изучение статей на оф.сайте <a href="https://playwright.dev/docs/writing-tests">Playwright</a>. Главное, соблюдайте <a href="https://playwright.dev/docs/best-practices">best-practices</a> при работе с ним.</p>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft начала блокировать Google Chrome в Windows 11 — пользователи жалуются на сбои</title>
      <link>https://tproger.ru/news/microsoft-nachala-blokirovat-google-chrome-v-windows-11---polzovateli-zhaluyutsya-na-sboi</link>
      <comments>https://tproger.ru/news/microsoft-nachala-blokirovat-google-chrome-v-windows-11---polzovateli-zhaluyutsya-na-sboi?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/microsoft-nachala-blokirovat-google-chrome-v-windows-11---polzovateli-zhaluyutsya-na-sboi</guid>
      <description><![CDATA[<p>Chrome перестал запускаться на Windows 11 с Family Safety — Microsoft считает его небезопасным, решение проблемы требует ручной настройки</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/microsoft-nachala-blokirovat-google-chrome-v-windows-11---polzovateli-zhaluyutsya-na-sboi">Microsoft начала блокировать Google Chrome в Windows 11 — пользователи жалуются на сбои</a>»</p>]]></description>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Windows]]></category>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[Приложение]]></category>
      <category><![CDATA[Windows 11]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 20 Jun 2025 17:05:24 GMT</pubDate>
      <content:encoded><![CDATA[<p>Пользователи Windows 11 <a href="https://www.neowin.net/news/windows-11-blocks-google-chrome-due-to-a-microsoft-safety-feature-fix-out/">столкнулись</a> с неожиданной проблемой: после последнего обновления Chrome, браузер перестал запускаться на устройствах с включенной Microsoft Family Safety.</p><p>Система родительского контроля считает Chrome небезопасным и автоматически закрывает его при запуске.</p><h2>Что произошло</h2><p>Family Safety — это встроенная функция Windows, позволяющая родителям ограничивать доступ детей к «неподобающему» контенту и приложениям.</p><p>Но после выхода Chrome 137.0.7151.68 и 137.0.7151.69, система начала блокировать браузер полностью — независимо от версии.</p><p>Пользователи жалуются, что:</p><ul><li>Chrome самопроизвольно закрывается и не открывается снова;</li><li>переустановка и чистка кэша не помогают;</li><li>даже старые версии браузера не работают.</li></ul><p>Проблема затрагивает в основном Windows 11, но есть жалобы и от пользователей Windows 10.</p><h2>Что говорит Google</h2><p>Менеджер сообщества Chrome, Эллен Т, подтвердила, что виной сбоя — Family Safety. Чтобы разблокировать Chrome, родителям нужно вручную изменить настройки фильтрации:</p><ol><li>Зайти на<a href="https://familysafety.microsoft.com"> сайт Microsoft Family Safety</a> или открыть мобильное приложение;</li><li>Выбрать нужный аккаунт ребёнка;</li><li>Отключить фильтр «Filter inappropriate websites» в разделе Edge;</li><li>Или перейти в <b>Windows → Apps &amp; Games → разрешить Chrome</b>.</li></ol><h2>Временный костыль</h2><p>Некоторые пользователи смогли обойти блокировку, переименовав файл chrome.exe в chrome1.exe. Этот обходной путь сработал, но Microsoft пока не предложила официального исправления бага.</p><p>Пока же ситуация напоминает борьбу двух браузеров, в которой Family Safety неожиданно встал на сторону Edge.</p>]]></content:encoded>
    </item>
    <item>
      <title>CORS от А до Я: история, ошибки и грамотная настройка</title>
      <link>https://tproger.ru/articles/cors-ot-a-do-ya--istoriya--owibki-i-gramotnaya-nastrojka</link>
      <comments>https://tproger.ru/articles/cors-ot-a-do-ya--istoriya--owibki-i-gramotnaya-nastrojka?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Татьяна Жукова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/cors-ot-a-do-ya--istoriya--owibki-i-gramotnaya-nastrojka</guid>
      <description><![CDATA[<p>Что такое CORS, почему браузер блокирует запросы и как избежать типичных ошибок. Простое объяснение для разработчиков + рабочие решения.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/cors-ot-a-do-ya--istoriya--owibki-i-gramotnaya-nastrojka">CORS от А до Я: история, ошибки и грамотная настройка</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[JSON]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Боты]]></category>
      <category><![CDATA[Node.js]]></category>
      <category><![CDATA[Фронтенд]]></category>
      <category><![CDATA[Приложение]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 09 Jun 2025 11:19:14 GMT</pubDate>
      <content:encoded><![CDATA[<p>CORS (Cross-Origin Resource Sharing) — это механизм, который позволяет веб-приложениям безопасно запрашивать ресурсы с других доменов. Если вы когда-либо видели в консоли браузера ошибку вроде «No ‘Access-Control-Allow-Origin’ header», значит, вы уже столкнулись с его работой. Сегодня разберёмся, как появился CORS, зачем он нужен и как с ним работать.</p><h2>Откуда возник CORS</h2><p>Всё <a href="https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy">началось</a> в начале 2000-х, когда веб-приложения становились всё сложнее, а разработчики чаще нуждались в данных с других доменов. Однако браузеры строго придерживались политики одного источника (Same-Origin Policy, SOP), запрещавшей доступ к сторонним ресурсам. Эта политика появилась ещё в 1995 году в Netscape Navigator 2.0 и была призвана защитить пользователей от атак вроде XSS. Проблема в том, что SOP блокировала не только вредоносные, но и вполне легитимные запросы, например, к внешним API. Разработчики пытались обойти ограничения с помощью JSONP или iframe, но такие решения были небезопасными и нестабильными.</p><p>В 2005 году инженер Мэтт Ошри предложил идею более надёжного и безопасного механизма, который в дальнейшем стал основой CORS. А в 2008-м Анн ван Кестерен <a href="https://fetch.spec.whatwg.org/">подготовила</a> черновик спецификации для W3C. В 2014 году CORS официально вошёл в стандарт Fetch API и с тех пор стал ключевым элементом работы с кросс-доменными запросами. Он помогает контролировать доступ к ресурсам, сохраняя баланс между открытостью веба и безопасностью пользователей.</p><h2>Как устроен CORS</h2><p>CORS работает как диалог между браузером и сервером, основанный на HTTP-заголовках. Когда фронтенд-приложение (например, на сайте frontend.com) запрашивает данные с другого домена (api.com), браузер автоматически добавляет к запросу заголовок Origin: https://frontend.com. Этот заголовок сообщает серверу, откуда пришёл запрос.</p><p>Сервер в ответ решает, разрешать ли доступ. Если он включает в ответ заголовок Access-Control-Allow-Origin и указывает там адрес запроса (например, https://frontend.com) или символ * (разрешение для всех доменов), то браузер пропускает ответ. Если такого заголовка нет или значение не совпадает, браузер блокирует ответ — даже если сервер технически его отправил.</p><p>Для так называемых «сложных» запросов, например, с методом POST или нестандартными заголовками, браузер сначала отправляет предварительный (OPTIONS) запрос, чтобы уточнить у сервера, допустим ли основной. В ответе сервер указывает, какие методы (Access-Control-Allow-Methods) и заголовки (Access-Control-Allow-Headers) разрешены.</p><p>Пример ответа сервера с разрешением:</p><h2>Топ-7 самых частых ошибок в CORS и как их исправить</h2><p>Для того чтобы определить оптимальные методы работы, лучше учиться на ошибках. Хорошая новость в том, что почти все CORS-ошибки легко понять и исправить — если знать, где искать. Ниже собрали 7 <a href="https://arunangshudas.com/blog/7-common-cors-errors-and-how-to-fix-them/">самых распространённых ошибок</a> CORS, с которыми сталкиваются разработчики, и рассказали, как можно с ними справиться без боли и паники.</p><h3>Нет заголовка Access-Control-Allow-Origin</h3><p>Сообщение об ошибке:</p><p>"No ‘Access-Control-Allow-Origin’ header is present on the requested resource"</p><p>Когда ваш JavaScript-код пытается получить данные с другого домена, браузер ожидает, что в ответе будет заголовок Access-Control-Allow-Origin. Если его нет — браузер блокирует ответ, считая его небезопасным.</p><h4>Решение 1: Настроить сервер на разрешение CORS</h4><p>Если вы контролируете сервер, добавьте в ответ заголовок:</p><p>Access-Control-Allow-Origin: *</p><p>* — разрешение запросов с любого домена</p><p>Но для безопасности лучше указать конкретный домен:</p><p>Access-Control-Allow-Origin: http://example.com</p><h4>Решение 2: middleware CORS в Express.js</h4><p>Если вы используете Node.js с Express, добавьте<b>:</b></p><h3>Браузер блокирует preflight-запросы (OPTIONS)</h3><p>Сообщение об ошибке:</p><p>"CORS policy preflight request did not succeed" или что-то похожее.</p><p>Иногда перед настоящим запросом браузер сначала отправляет preflight-запрос методом OPTIONS, чтобы проверить, разрешен ли основной запрос. Это происходит, если:</p><ul><li>Метод запроса не GET или POST (например, PUT, DELETE).</li></ul><ul><li>В заголовках есть что-то нестандартное (например, Authorization или Content-Type: application/json).</li></ul><p>Если сервер не умеет обрабатывать OPTIONS — все ломается.</p><h4>Решение: Обработать OPTIONS-запросы на сервере</h4><p>Пример для Express.js:</p><p>app.options('*', cors()); // Разрешаем preflight-запросы</p><p>Или настройка CORS с поддержкой OPTIONS:</p><h3>Запросы с учётом сессий (credentials) блокируются</h3><p>Сообщение об ошибке:</p><p>"The value of the ‘Access-Control-Allow-Origin’ header in the response must not be '*' when the request's credentials mode is 'include'"</p><p>Вы отправляете запрос с куками или авторизацией (credentials: 'include'), но сервер разрешает доступ всем (Access-Control-Allow-Origin: *). Это запрещено — нельзя слать credentials, если разрешено всем.</p><h4>Решение: Указать конкретный домен и разрешить credentials</h4><p>На сервере также добавьте:</p><p>Access-Control-Allow-Credentials: true</p><h3>Смешанные протоколы — HTTP и HTTPS</h3><p>Сообщение об ошибке:</p><p>"Mixed content: The page at 'https://...' was loaded over HTTPS, but requested an insecure resource 'http://...'."</p><p>Ваш сайт работает по HTTPS, а API — по HTTP. Браузеры считают, что это опасно, и банально блокируют запросы.</p><h4>Решение:</h4><ul><li>Переведите API на HTTPS.</li><li>Обновите все ссылки с http:// на https://.</li></ul><ul><li>Если работаете локально и сервер только HTTP, используйте ngrok, чтобы создать HTTPS-туннель.</li></ul><h3>CORS блокирует редиректы</h3><p>Сообщение об ошибке:</p><p>"Redirect from '...api' to '...login' has been blocked by CORS policy."</p><p>API делает редирект, но в ответе на редирект нет CORS-заголовков. Браузер не знает, можно ли доверять редиректу, и блокирует.</p><h4>Решение:</h4><p>Убедитесь, что редирект тоже возвращает правильные заголовки:</p><p>Access-Control-Allow-Origin: http://example.com</p><p>Если используете fetch, добавьте:</p><h3>Неверно настроен Access-Control-Allow-Headers</h3><p>Сообщение об ошибке:</p><p>"Request header field &lt;X&gt; is not allowed by Access-Control-Allow-Headers"</p><p>Ваш запрос содержит нестандартный заголовок (например, Authorization), а сервер не пропускает его.</p><h4>Решение:</h4><p>На сервере укажите, какие заголовки разрешены:</p><h3>Метод запроса запрещён сервером</h3><p>Сообщение об ошибке:</p><p>"Method PUT is not allowed by Access-Control-Allow-Methods"</p><p>Вы отправляете запрос методом PUT, PATCH, DELETE, а сервер разрешает только GET и POST.</p><h4>Решение:</h4><p>На сервере явно разрешите нужные методы:</p>]]></content:encoded>
    </item>
    <item>
      <title>Meta* и Яндекс годами собирали данные о вас через локальные порты Android. Даже в режиме инкогнито</title>
      <link>https://tproger.ru/news/meta--i-yandeks-godami-sobirali-dannye-o-vas-cherez-lokalnye-porty-android--dazhe-v-rezhime-inkognito</link>
      <comments>https://tproger.ru/news/meta--i-yandeks-godami-sobirali-dannye-o-vas-cherez-lokalnye-porty-android--dazhe-v-rezhime-inkognito?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Татьяна Жукова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/meta--i-yandeks-godami-sobirali-dannye-o-vas-cherez-lokalnye-porty-android--dazhe-v-rezhime-inkognito</guid>
      <description><![CDATA[<p>Meta* и Яндекс отслеживали действия пользователей Android даже в режиме инкогнито через соединение с localhost. Использовались скрипты Pixel и Метрики, встроенные на миллионы сайтов. Теперь механизм отключён, но работал с 2017 года.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/meta--i-yandeks-godami-sobirali-dannye-o-vas-cherez-lokalnye-porty-android--dazhe-v-rezhime-inkognito">Meta* и Яндекс годами собирали данные о вас через локальные порты Android. Даже в режиме инкогнито</a>»</p>]]></description>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[Android]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Git]]></category>
      <category><![CDATA[Опрос]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[HR]]></category>
      <category><![CDATA[Яндекс]]></category>
      <category><![CDATA[Firefox]]></category>
      <category><![CDATA[Приложение]]></category>
      <category><![CDATA[Уязвимость]]></category>
      <category><![CDATA[WebRTC]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 06 Jun 2025 09:57:10 GMT</pubDate>
      <content:encoded><![CDATA[<p>Никакие настройки конфиденциальности, удаление cookies или режим инкогнито не спасали пользователей до начала июня 2025 года: приложения Meta* (Facebook*, Instagram*) и Яндекса (включая Карты и Браузер) тайно <a href="https://localmess.github.io/?utm_source=Securitylab.ru">отслеживали действия</a> в мобильных браузерах через соединение с localhost на Android. Всё это происходило при помощи JavaScript-скриптов Meta Pixel и Яндекс.Метрики, встроенных на миллионы сайтов.</p><p>Больше новостей в нашем тг-канале <a href="https://t.me/your_tech">Представляешь</a></p><h2>Как это происходило</h2><p>Пользователь заходил на сайт с установленным Meta* Pixel или Яндекс.Метрикой, и в этот момент JavaScript-скрипт пытался установить соединение с приложением через локальные порты. Через WebRTC (в случае Meta*) или HTTP (в случае Яндекса) передавались cookies, Android Advertising ID и другие идентификаторы. Это позволяло деанонимизировать пользователя, даже если он не был авторизован, использовал режим инкогнито или регулярно очищал cookies. Сессии с разных сайтов можно было связать в одну, а история посещений становилась доступной для дальнейшего анализа.</p><p>Уязвимость заключалась в том, что другие приложения, установленные на том же устройстве, могли подключаться к тем же портам и перехватывать передаваемую информацию. Это нарушало не только пользовательскую приватность, но и фундаментальные ожидания безопасности, встроенные в браузеры. Chrome, Firefox и Edge оказались уязвимы, а Brave и DuckDuckGo блокировали такие попытки благодаря собственным механизмам защиты.</p><p>Методика отслеживания, по данным исследователей, действовала минимум с 2017 года. Meta использовала WebRTC STUN с ноября 2024-го, затем перешла на TURN в мае 2025-го. Только 3 июня компания полностью отключила отправку данных на localhost, удалив соответствующий код. Яндекс использовал HTTP-метод с 2017 года и перешёл на HTTPS в 2018-м. Трекинг через порты также подтверждён и со стороны Яндекса. Оба вендора не документировали эти механизмы, и пользователи не были о них информированы.</p><p>По информации BuiltWith, Meta* Pixel встроен на 5,8 миллиона сайтов, а Яндекс.Метрика — почти на 3 миллиона. При сканировании топ-100 000 доменов Meta* пыталась установить соединение с localhost более чем на 13 тысячах сайтов в США и почти на 12 тысячах в Европе. Яндекс зафиксирован на более чем 1000 сайтов в каждом из этих регионов.</p><p>Стало известно, что эти механизмы отслеживания работали даже без входа в учётные записи, при активном режиме инкогнито и при удалении всех cookie. Это делает обнаруженные схемы особенно тревожными — обходятся ключевые инструменты защиты приватности и поднимаются серьёзные вопросы о допустимости подобных практик.</p><p>* Компания Meta и её продукты признаны экстремистскими, их деятельность запрещена на территории РФ</p>]]></content:encoded>
    </item>
    <item>
      <title>Как работают SSL/TLS сертификаты и зачем они нужны</title>
      <link>https://tproger.ru/articles/kak-rabotayut-ssl-tls-sertifikaty-i-zachem-oni-nuzhny</link>
      <comments>https://tproger.ru/articles/kak-rabotayut-ssl-tls-sertifikaty-i-zachem-oni-nuzhny?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Денис Кудерин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-rabotayut-ssl-tls-sertifikaty-i-zachem-oni-nuzhny</guid>
      <description><![CDATA[<p>Что такое SSL/TLS сертификаты. Показываем, как работают сертификаты для сайта. Рассматриваем преимущества и основные нюансы ✔ Tproger</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-rabotayut-ssl-tls-sertifikaty-i-zachem-oni-nuzhny">Как работают SSL/TLS сертификаты и зачем они нужны</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Производительность]]></category>
      <category><![CDATA[SQL]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Боты]]></category>
      <category><![CDATA[Wi-Fi]]></category>
      <category><![CDATA[QA]]></category>
      <category><![CDATA[Взлом]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Бизнес]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 04 Jun 2025 12:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>В сети ежесекундно происходят миллионы транзакций и передаются конфиденциальные данные, поэтому вопрос безопасности соединений входит в число базовых требований к веб-ресурсам. Сертификаты SSL/TLS шифруют данные пользователя, подтверждают защищенность сетевого подключения и подлинность сайтов. Это базовые протоколы взаимодействия браузеров и серверов, которые представляют собой основу безопасности в интернете.</p><p>В этой статье мы разберем не только принципы работы SSL/TLS, но и практические аспекты: как выбрать подходящий тип сертификата, как избежать распространенных ошибок настройки и проверить безопасность существующего соединения.</p><h2>Что такое SSL/TLS сертификат</h2><p>Еще десять лет назад протокол HTTPS использовали преимущественно банки и платежные системы. Сегодня даже простейший блог без шифрования трафика вызывает предупреждения в браузерах и теряет доверие посетителей.</p><p>SSL/TLS сертификаты для каждого сайта выполняют три важные функции: обеспечивают шифрование данных, подтверждают подлинность сайта и гарантируют целостность передаваемой информации. Без них любая форма авторизации или даже обычная переписка становятся уязвимыми для перехвата. Особенно актуально это в эпоху публичных Wi-Fi сетей и сложных цепочек маршрутизации, когда трафик может проходить через десятки промежуточных узлов.</p><p>Технологии защиты постоянно развиваются. Если в 2010-х основным стандартом был TLS 1.2, то сейчас все больше ресурсов переходят на TLS 1.3 с его оптимизированным «рукопожатием» и отказом от устаревших алгоритмов. Параллельно ужесточаются требования поисковых систем — Google еще в 2018 году начал помечать HTTP-сайты как небезопасные, в 2025 году такие ресурсы практически не имеют шансов попасть в топ выдачи.</p><p>Но важность SSL/TLS выходит за рамки технических аспектов. Для пользователей значок замка в адресной строке стал визуальным маркером доверия. Исследования показывают, что около 85% посетителей сразу покидают сайт при появлении предупреждения о небезопасном соединении. В коммерческих проектах это напрямую влияет на конверсию и доходы.</p><p>SSL/TLS сертификат — это цифровой документ, который связывает криптографический ключ с доменным именем, подтверждая его подлинность и обеспечивая шифрование данных. По сути, это гарантия того, что сайт, с которым взаимодействует пользователь, действительно принадлежит заявленной организации, а передаваемая информация защищена от перехвата.</p><p>Сертификат содержит несколько ключевых элементов:</p><ul><li>Публичный ключ — используется для шифрования данных, отправляемых на сервер.</li><li>Данные владельца — информация о компании или физическом лице, которому выдан сертификат.</li><li>Цифровую подпись центра сертификации (CA) — подтверждает, что документ был проверен и подписан доверенным удостоверяющим центром.</li><li>Срок действия — обычно от нескольких месяцев до нескольких лет, после чего требуется обновление.</li></ul><p>Выдачей SSL/TLS сертификатов занимаются центры сертификации (Certificate Authorities, CA). Это организации вроде DigiCert, Sectigo или Let’s Encrypt, чьи корневые сертификаты предустановлены в браузерах и операционных системах. Если CA подтверждает валидность домена и, при необходимости, проверяет юридические данные владельца, он выпускает сертификат, который браузеры распознают как доверенный.</p><p>Хотя аббревиатура SSL (Secure Sockets Layer) до сих пор широко используется, сам протокол считается устаревшим с 2015 года из-за уязвимостей. Его современная замена — TLS (Transport Layer Security), но термин «SSL-сертификат» остался в обиходе как дань традиции.</p><p>Без такого сертификата любая передача данных — будь то логины, платежные реквизиты или персональные сообщения — становится уязвимой для атак типа «человек посередине» (MITM). Современные браузеры активно борются с незащищенными соединениями: Chrome и Firefox, например, помечают сайты без HTTPS как «небезопасные», а с 2023 года некоторые из них и вовсе блокируют смешанный контент.</p><p>Интересно, что с 2024 года ряд CA начали внедрять сертификаты с укороченным сроком действия (менее 30 дней) для повышения безопасности. Это усложняет жизнь злоумышленникам, но и требует более гибкой инфраструктуры обновления у владельцев сайтов.</p><p>Проверить наличие сертификата можно, кликнув на значок замка в адресной строке — там будет указана информация о его издателе и уровне проверки. Но важно понимать: сам факт наличия SSL/TLS не делает сайт автоматически безопасным, он лишь обеспечивает шифрование канала передачи данных.</p><h2>Как работает шифрование с SSL/TLS</h2><p>Когда браузер устанавливает соединение с сайтом, защищенным SSL/TLS, происходит не просто обмен данными — запускается сложный криптографический механизм, обеспечивающий конфиденциальность и целостность информации.</p><p>В основе лежат два типа шифрования: асимметричное (для аутентификации и обмена ключами) и симметричное (для быстрой передачи данных).</p><p>Асимметричное шифрование используется на начальном этапе. Сервер обладает парой ключей: открытым (public key), который доступен всем, и закрытым (private key), хранящимся в секрете.</p><p>Когда браузер запрашивает защищенное соединение, сервер отправляет свой SSL-сертификат, содержащий публичный ключ. Браузер проверяет подлинность сертификата через центры сертификации (CA), встроенные в ОС или сам браузер. Если все в порядке, он генерирует временный симметричный ключ, шифрует его публичным ключом сервера и отправляет назад.</p><p>Здесь важно, что расшифровать этот ключ может только владелец закрытого ключа — то есть сам сервер. Так решается проблема безопасного обмена ключами без риска перехвата. Современные системы чаще всего используют алгоритмы вроде RSA (2048 или 4096 бит) или ECC (на основе эллиптических кривых), поскольку они обеспечивают достаточную стойкость при приемлемой скорости работы.</p><p>После обмена начинается фаза симметричного шифрования. Теперь обе стороны используют один и тот же ключ (например, AES-256 или ChaCha20), который применяется для кодирования всего трафика. Симметричные алгоритмы быстрее асимметричных, что критично для производительности — представьте, если бы каждый пакет данных шифровался RSA.</p><p>Процесс установки соединения (TLS handshake) занимает доли секунды, но включает несколько этапов:</p><ol><li>Приветствие клиента (ClientHello) — браузер сообщает серверу, какие алгоритмы шифрования он поддерживает.</li><li>Приветствие сервера (ServerHello) — сервер выбирает наиболее безопасный из доступных вариантов и отправляет свой сертификат.</li><li>Проверка сертификата — браузер убеждается, что сертификат подписан доверенным CA и не просрочен.</li><li>Обмен ключами — как описано выше, создается симметричный ключ.</li><li>Завершение рукопожатия (handshake) — стороны подтверждают готовность к шифрованному обмену.</li></ol><p>Весь процесс обеспечивает три ключевых аспекта безопасности: конфиденциальность (данные недоступны третьим лицам), целостность (информация не изменяется при передаче) и аутентификацию (уверенность в подлинности сайта).</p><p>С 2023 года большинство браузеров перешли на TLS 1.3 (выпущен в 2018), где процесс установки соединения оптимизирован — теперь он требует всего одного обмена данными вместо двух в TLS 1.2. Это не только ускоряет загрузку страниц, но и исключает уязвимости, связанные с устаревшими алгоритмами вроде SHA-1 или CBC-режимов.</p><p>Современные браузеры дополнительно проверяют сертификат на соответствие стандарту HSTS (HTTP Strict Transport Security), который запрещает незащищенные соединения. С 2024 года многие сайты используют механизм «ожидающего сертификата» (Certificate Transparency), позволяющий отслеживать неавторизованные выпуски.</p><p>Важный факт. Даже если злоумышленник перехватит зашифрованный трафик, без закрытого ключа расшифровать его будет практически невозможно. Например, взлом AES-256 методом полного перебора потребует времени, превышающего возраст Вселенной, — при условии, что ключ сгенерирован правильно.</p><p>Однако SSL/TLS — не панацея. Если на сервере неправильно настроены параметры (скажем, разрешен слабый алгоритм RC4), или приватный ключ скомпрометирован, защита рушится. Поэтому важно не только наличие сертификата, но и его корректная настройка. Проверить это можно через инструменты вроде SSL Labs Test — они анализируют параметры соединения и выявляют потенциальные уязвимости.</p><p>В итоге, когда вы вводите платежные данные или логин на сайте, SSL/TLS гарантирует, что информация дойдет до сервера в зашифрованном виде, а подлинность сервера подтверждена центром сертификации. Без этого интернет-платежи, авторизация в банках и даже мессенджеры были бы куда рискованнее..</p><h2>Типы SSL/TLS сертификатов</h2><p>Существует несколько разновидностей SSL/TLS сертификатов, отличающихся уровнем проверки и областью применения. Основное разделение происходит по степени верификации, которую проводит удостоверяющий центр перед выдачей документа.</p><p>Самый простой вариант — сертификаты с проверкой домена (DV). Они подтверждают только право владения доменным именем, без какой-либо информации о владельце. Получить такой сертификат можно автоматически — достаточно подтвердить контроль над доменом через email или DNS-запись. DV-сертификаты подходят для блогов, небольших сайтов и тестовых сред, где не требуется демонстрация юридического статуса организации.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-05-06/b694da51-f38f-476c-92c8-f1b31bb9b9e5.png" alt="" /></figure><p>Для коммерческих проектов чаще используют сертификаты с проверкой организации (OV). В этом случае центр сертификации проверяет официальные регистрационные данные компании — название, юридический адрес, право на использование домена. Процесс занимает 1-3 рабочих дня. В отличие от DV, информация о владельце включается в сертификат и доступна для просмотра в деталях соединения.</p><p>Наивысший уровень доверия обеспечивают сертификаты расширенной проверки (EV). Их особенность — тщательная верификация бизнеса, включающая проверку официальной регистрации, физического адреса и телефонных контактов. В прошлом браузеры выделяли EV-сертификаты зеленой строкой с названием компании, но сейчас визуальное отличие менее заметно. Тем не менее, такой вариант остается стандартом для банков, платежных систем и крупных корпораций.</p><p>По охвату защищаемых доменов сертификаты делятся на несколько категорий:</p><ul><li>Стандартные (Single-name) работают только с одним конкретным доменным именем.</li><li>Wildcard-сертификаты распространяются на основной домен и все его поддомены — удобное решение для сложных веб-приложений.</li><li>Мультидоменные (SAN или MDC) позволяют защитить несколько независимых доменов одним сертификатом — оптимальный выбор для компаний с разветвленной структурой онлайн-ресурсов.</li></ul><p>Отдельно стоит отметить бесплатные сертификаты, которые предлагают такие организации как Let’s Encrypt. Они относятся к категории DV и выдаются на короткий срок (обычно 90 дней), что требует автоматического продления. Хотя по уровню шифрования они не уступают платным аналогам, отсутствие информации о владельце делает их непригодными для коммерческих проектов.</p><p>Выбор конкретного типа зависит от задач проекта. Информационному порталу достаточно DV, интернет-магазину среднего размера — OV, финансовой организации — EV. Главное помнить: сам по себе сертификат не делает сайт безопасным, а лишь обеспечивает защиту передаваемых данных. Дополнительные меры вроде регулярного аудита кода и защиты от DDoS-атак остаются ответственностью владельца ресурса.</p><h2>Почему важно использовать SSL/TLS</h2><p>В современном интернете SSL/TLS сертификаты перестали быть опциональной функцией — они стали обязательным стандартом безопасности. Причин для их использования несколько, и каждая касается как технических аспектов, так и взаимодействия с пользователями:</p><h3>Защита данных</h3><p>Прежде всего, SSL/TLS защищает передаваемые данные от перехвата. Без шифрования злоумышленник, получивший доступ к сетевому трафику (например, через публичную Wi-Fi сеть), может просматривать логины, пароли, банковские реквизиты и другую конфиденциальную информацию.</p><p>Протокол TLS исключает такую возможность, преобразуя данные в криптографически стойкий формат, который невозможно расшифровать без специального ключа. Особенно это актуально для MitM-атак (Man-in-the-Middle), где злоумышленник пытается вклиниться в соединение между клиентом и сервером.</p><h3>Фактор SEO</h3><p>Поисковые системы давно учитывают наличие HTTPS как фактор ранжирования. Google еще в 2014 году объявил, что защищенные соединения получают небольшой, но значимый приоритет в выдаче.</p><p>Сейчас это требование стало еще строже — сайты без SSL/TLS практически не имеют шансов попасть в топ поисковой выдачи. Более того, некоторые функции современных веб-API (например, геолокация или доступ к камере) в браузерах по умолчанию блокируются для незащищенных HTTP-соединений.</p><h3>Обязательные требования</h3><p>Технические стандарты также диктуют свои условия. PCI DSS (требования безопасности для работы с платежными картами) прямо предписывают использование TLS не ниже версии 1.2 для всех операций с финансовыми данными. Аналогичные нормы есть в GDPR и других регуляторных документах — отсутствие шифрования может стать основанием для штрафов и юридических последствий.</p><p>Интересно, что SSL/TLS важен не только для внешних, но и для внутренних сервисов. В 2025 году это стало особенно актуально с ростом числа удаленных сотрудников и облачных сервисов.</p><p>Важно понимать: SSL/TLS — не просто «галочка» для браузера или SEO. Это базовая технология, обеспечивающая конфиденциальность, целостность данных и аутентификацию сервера. При этом современные решения вроде Let’s Encrypt или автоматического продления сертификатов в панелях хостинга свели сложность внедрения к минимуму — сегодня нет рациональных причин отказываться от HTTPS.</p><h2>Как получить и установить сертификат</h2><p>Процесс получения SSL/TLS сертификата начинается с выбора типа защиты, соответствующего потребностям вашего проекта. Для личных блогов и небольших сайтов оптимальным решением станут бесплатные варианты от Let’s Encrypt — они обеспечивают базовое шифрование без сложных процедур верификации.</p><p>Коммерческим проектам потребуются платные сертификаты с проверкой организации (OV) или расширенной проверкой (EV), особенно если работа связана с обработкой платежей или персональных данных.</p><p>Порядок действий при заказе платного сертификата выглядит следующим образом:</p><ol><li>Необходимо сгенерировать запрос на выпуск (CSR) через панель управления хостингом или используя OpenSSL. В запросе указываются данные о домене и организации.</li><li>CSR отправляется в выбранный центр сертификации вместе с документами, подтверждающими право владения доменом и юридический статус компании. Для DV-сертификатов проверка ограничивается подтверждением домена, тогда как EV требует предоставления учредительных документов и может занимать несколько рабочих дней.</li><li>После проверки центр сертификации выдает файлы самого сертификата и цепочки доверия (CA bundle).</li><li>Эти файлы необходимо загрузить на сервер через административную панель хостинга или вручную, прописав соответствующие директивы в конфигурации веб-сервера. Для Nginx потребуется указать пути к файлам сертификата и приватному ключу в блоке server, а в Apache — использовать директивы SSLCertificateFile и SSLCertificateKeyFile.</li></ol><p>Особое внимание стоит уделить автоматическому продлению. Большинство современных центров сертификации, включая Let’s Encrypt, выдают сертификаты на ограниченный срок (обычно 90 дней). Для автоматического обновления можно использовать Certbot или встроенные инструменты панелей управления типа cPanel. Они самостоятельно проверяют срок действия и обновляют сертификаты без вмешательства администратора.</p><p>Для российских проектов в 2025 году появились дополнительные возможности — некоторые отечественные хостинг-провайдеры интегрировали услугу получения сертификатов прямо из панели управления. Это упрощает процесс, хотя выбор типов сертификатов пока ограничен базовыми вариантами. Альтернативой может стать использование решений от облачных провайдеров, которые предлагают собственные центры сертификации с поддержкой российских криптографических алгоритмов.</p><p>После установки обязательно проверьте корректность работы через онлайн-инструменты вроде SSL Labs Test. Они покажут не только правильность цепочки доверия, но и выявят потенциальные уязвимости в настройках. Особенно важно проверить поддержку актуальных версий TLS (1.2 и выше) и отключить устаревшие алгоритмы шифрования, которые могут снижать уровень безопасности.</p><h2>Как проверить корректность SSL/TLS</h2><p>После установки сертификата важно убедиться в его правильной работе. Самый простой способ — обратить внимание на адресную строку браузера. Закрытый замок и пометка «Безопасное соединение» свидетельствуют о корректной настройке. Однако для профессиональной проверки потребуются специальные инструменты.</p><p>Онлайн-сервисы вроде SSL Labs предоставляют детальный анализ конфигурации. Достаточно ввести адрес сайта, и система проверит не только срок действия сертификата, но и поддерживаемые версии протоколов, алгоритмы шифрования, правильность цепочки доверия. Результат отображается в виде оценки от A+ до F, где низкие баллы указывают на критические уязвимости.</p><p>Частая проблема — несоответствие имени в сертификате и фактического домена (mismatch). Это происходит при использовании одного сертификата для нескольких ресурсов или ошибках в настройках. Браузеры жестко реагируют на такой сценарий, блокируя доступ или выводя предупреждения. Проверить соответствие можно через консоль разработчика во вкладке «Безопасность».</p><p>Срок действия — еще один важный параметр. Просроченные сертификаты (expired) вызывают предупреждения в браузерах и могут полностью заблокировать доступ к сайту. Современные системы мониторинга, такие как Uptime Robot, позволяют настроить уведомления об истечении срока заранее.</p><p>Самоподписанные сертификаты (self-signed) — особая категория. Они не проверяются центрами сертификации, поэтому браузеры не доверяют таким соединениям. Проверить подпись можно через командную строку с помощью openssl x509 -text -noout -in сертификат.crt.</p><p>Для комплексной проверки стоит обратить внимание на несколько аспектов:</p><ol><li>Корректность цепочки сертификатов — промежуточные звенья должны быть правильно установлены на сервере.</li><li>Поддержку актуальных версий TLS (1.2 и выше) при отключении устаревших протоколов вроде SSLv3.</li><li>Настройку перенаправления с HTTP на HTTPS без смешанного содержимого.</li></ol><h2>Мифы и заблуждения о сертификатах</h2><p>Вокруг SSL/TLS сертификатов сложилось немало ошибочных представлений, которые часто мешают принимать верные решения при организации защиты сайта. Разберем самые распространенные из них.</p><h3>Сертификаты дают 100% защиты</h3><p>Один из самых живучих мифов — убеждение, что наличие сертификата делает ресурс полностью защищенным. На самом деле, SSL/TLS обеспечивает лишь безопасность передачи данных между клиентом и сервером.</p><p>Это не панацея от SQL-инъекций, XSS-атак или других уязвимостей веб-приложений. Сертификат не заменяет необходимость регулярного аудита кода, обновления ПО и других мер безопасности.</p><h3>Сертификаты снижают производительность</h3><p>Распространено заблуждение о сильном влиянии шифрования на производительность. Современные протоколы, особенно TLS 1.3, оптимизированы настолько, что разница в скорости между защищенным и незащищенным соединением практически незаметна.</p><p>Более того, HTTP/2 и HTTP/3, требующие обязательного использования TLS, часто работают быстрее незашифрованных соединений за счет более эффективных механизмов передачи данных.</p><h3>Платные сертификаты лучше</h3><p>Некоторые уверены, что бесплатные сертификаты менее надежны, чем платные. На самом деле, решения вроде Let’s Encrypt используют те же криптографические алгоритмы, что и коммерческие альтернативы. Разница лишь в уровне проверки владельца и сроке действия — технически уровень шифрования идентичен.</p><h3>Сертификаты обеспечивают долговременную защиту</h3><p>Отдельно стоит миф о «вечной» защите после установки. Сертификаты имеют ограниченный срок действия не просто так — это важный элемент безопасности. Кроме того, криптографические стандарты постоянно развиваются: алгоритмы, считавшиеся надежными пять лет назад, сегодня могут быть уязвимы. Регулярное обновление сертификатов и параметров шифрования обязательно для поддержания реальной защиты.</p><h3>Сертификаты нужны не всем</h3><p>Еще одно ошибочное мнение — что SSL/TLS нужен только сайтам с формами ввода. Современные браузеры помечают все HTTP-страницы как небезопасные, независимо от их содержания. Более того, многие функции (геолокация, push-уведомления) в Chrome и других браузерах заблокированы для незащищенных соединений.</p><h3>Это сложно</h3><p>Наконец, существует миф о сложности установки и обслуживания. Современные хостинг-провайдеры и панели управления предлагают автоматизированные решения, где получение и обновление сертификата занимает несколько кликов. Даже ручная настройка через Let’s Encrypt и Certbot перестала быть сложной задачей благодаря подробной документации.</p><p>Разобравшись с этими заблуждениями, проще принимать взвешенные решения о защите сайтов. SSL/TLS — важный, но не единственный элемент безопасности, который нужно рассматривать в комплексе с другими мерами защиты данных.</p><h2>Частые проблемы и уязвимости</h2><p>Даже правильно настроенные SSL/TLS сертификаты могут стать источником проблем, если не учитывать ключевые аспекты их работы. Одна из самых распространенных ситуаций — истекший срок действия.</p><p>В отличие от обычных документов, просроченный сертификат не просто перестает работать, а вызывает активные предупреждения в браузерах, блокируя доступ к сайту. Современные центры сертификации сократили сроки действия до трех месяцев, что требует настройки автоматического обновления через инструменты вроде Certbot или встроенные механизмы хостинг-панелей.</p><p>Неправильная конфигурация сервера — другая частая причина сбоев. Типичные ошибки включают неполную цепочку доверия (когда отсутствуют промежуточные сертификаты), несоответствие имени в сертификате и фактического домена, а также использование самоподписанных решений для публичных сайтов. Такие проблемы легко выявить через сервисы проверки вроде SSL Labs, но они регулярно встречаются даже на крупных ресурсах.</p><p>Устаревшие протоколы и алгоритмы представляют отдельную угрозу. Поддержка TLS 1.0 и 1.1, сохраняемая для совместимости со старыми системами, создает бреши в безопасности. Эти версии содержат известные уязвимости (BEAST, POODLE), позволяющие злоумышленникам частично расшифровывать трафик. Современные стандарты требуют отключения этих протоколов и использования TLS 1.2 или 1.3 с устойчивыми алгоритмами вроде AES-GCM и ChaCha20-Poly1305.</p><p>Особая категория проблем связана с доверенными центрами сертификации. Система предполагает, что все браузеры и операционные системы доверяют определенному набору корневых сертификатов. Однако известны случаи, когда центры сертификации выдавали документы мошенникам или становились жертвами взлома. Например, <a href="https://xakep.ru/2011/09/21/56896/">инцидент с DigiNotar в 2011</a> году привел к компрометации сотен сертификатов, включая ресурсы спецслужб.</p><p>Технические уязвимости в реализации протоколов тоже заслуживают внимания. <a href="https://www.kaspersky.ru/blog/heartbleed-openssl-bug/14873/">Атака Heartbleed</a> (2014), пользуясь ошибкой в OpenSSL, позволяла читать память сервера, включая приватные ключи. Уязвимости в криптографических библиотеках (ROBOT, DROWN) демонстрируют, что даже правильно настроенное шифрование может оказаться под угрозой из-за фундаментальных проблем в коде.</p><p>Отдельно стоит отметить проблемы смешанного содержимого, когда защищенная HTTPS-страница загружает ресурсы (скрипты, изображения) по незашифрованному HTTP. Браузеры считают такие страницы уязвимыми и могут блокировать их элементы или показывать предупреждения, несмотря на наличие действующего сертификата.</p><p>Важно не только правильно настраивать сертификаты, но и регулярно проверять их состояние, отслеживать отзыв списков (CRL) и обновлять конфигурацию сервера в соответствии с актуальными рекомендациями. Инструменты мониторинга вроде SSL Pulse помогают отслеживать общую ситуацию с безопасностью в интернете и вовремя реагировать на новые угрозы.</p><p>Безопасность безопасностью, но как писать код, который не стыдно показывать? Всё для фронтендеров и бэкендеров в одном <a href="https://t.me/+c6lPaQBXLvE4YmMy">месте</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Блокировщик рекламы uBlock Origin отключат в июне из-за перехода Chrome на Manifest V3</title>
      <link>https://tproger.ru/news/blokirovshhik-reklamy-ublock-origin-otklyuchat-v-iyune-iz-za-perehoda-chrome-na-manifest-v3</link>
      <comments>https://tproger.ru/news/blokirovshhik-reklamy-ublock-origin-otklyuchat-v-iyune-iz-za-perehoda-chrome-na-manifest-v3?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/blokirovshhik-reklamy-ublock-origin-otklyuchat-v-iyune-iz-za-perehoda-chrome-na-manifest-v3</guid>
      <description><![CDATA[<p>uBlock Origin отключат в Chrome в июне — переход на Manifest V3 ограничит блокировку рекламы. Пользователям советуют переходить на Firefox</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/blokirovshhik-reklamy-ublock-origin-otklyuchat-v-iyune-iz-za-perehoda-chrome-na-manifest-v3">Блокировщик рекламы uBlock Origin отключат в июне из-за перехода Chrome на Manifest V3</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Firefox]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 29 May 2025 16:28:29 GMT</pubDate>
      <content:encoded><![CDATA[<p>В июне 2025 года Google начнет отключать поддержку расширений на базе Manifest V2 — старого API для браузерных плагинов, который позволяет блокировать рекламу на уровне запросов.</p><p>Вместо него Chrome полностью переходит на Manifest V3, который серьезно ограничивает функциональность таких расширений, как uBlock Origin и другие блокировщики.</p><h2>Почему это важно</h2><p>Manifest V2 — основа, на которой работали самые эффективные средства блокировки рекламы. С его отключением расширения вроде uBlock Origin потеряют доступ к мощным средствам фильтрации.</p><p>В версии V3 у расширений нет возможности полноценно перехватывать сетевые запросы — вместо этого используется declarativeNetRequest, который ограничивает количество фильтров и не позволяет гибко обрабатывать правила.</p><p>Авторы uBlock Origin уже подтвердили, что расширение не может быть полноценно перенесено на V3. Это означает, что миллионы пользователей Chrome больше не смогут использовать проверенные способы блокировки рекламы — в том числе для ускорения загрузки страниц, экономии трафика и защиты от трекеров.</p><h2>Как реагирует сообщество</h2><p>На Reddit новость <a href="https://www.reddit.com/r/webdev/comments/1kxmch4/the_death_of_ublock_origin_in_chrome_manifest_v2/">вызвала</a> бурную реакцию. Пользователи считают решение Google попыткой заблокировать конкурентов своему рекламному бизнесу:</p><blockquote><i>«Это не апгрейд — это деградация»</i></blockquote><blockquote><i>«Чувствую, как у меня отнимают свободу»</i></blockquote><p>Некоторые ожидают, что браузеры на базе Chromium (например, Brave или Vivaldi) могут отказаться от Manifest V3 или форкнуть проект. Но большинство признает: против Google с его 60% рынка мало кто может пойти.</p><h2>Что делать пользователям</h2><p>Тем, кто хочет сохранить возможность блокировать рекламу, придется либо:</p><ul><li>перейти на Firefox, который по-прежнему поддерживает Manifest V2 и полноценные блокировщики;</li><li>использовать сторонние приложения для фильтрации рекламы на уровне системы;</li><li>смириться с потерей функциональности в Chrome.</li></ul><h2>Почему Google это делает</h2><p>Формально Google заявляет, что цель Manifest V3 — повысить безопасность и стабильность браузера. Однако эксперты и правозащитные организации, такие как EFF, уверены: дело в деньгах. Ограничив возможности блокировщиков, компания защищает свои рекламные доходы.</p><p>Сейчас против Google уже идет антимонопольное расследование Минюста США. Некоторые надеются, что под давлением регуляторов компания может пересмотреть свои решения — но таких прецедентов пока не было.</p>]]></content:encoded>
    </item>
    <item>
      <title>Opera выпустила Neon — первый браузер, который сам бронирует билеты и создает сайты</title>
      <link>https://tproger.ru/news/--opera-vypustila-neon---pervyj-brauzer--kotoryj-sam-broniruet-bilety-i-sozdaet-sajty</link>
      <comments>https://tproger.ru/news/--opera-vypustila-neon---pervyj-brauzer--kotoryj-sam-broniruet-bilety-i-sozdaet-sajty?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/--opera-vypustila-neon---pervyj-brauzer--kotoryj-sam-broniruet-bilety-i-sozdaet-sajty</guid>
      <description><![CDATA[<p>Opera выпустила браузер Neon с ИИ, который сам бронирует билеты, заполняет формы и создает сайты — часть функционала работает локально</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/--opera-vypustila-neon---pervyj-brauzer--kotoryj-sam-broniruet-bilety-i-sozdaet-sajty">Opera выпустила Neon — первый браузер, который сам бронирует билеты и создает сайты</a>»</p>]]></description>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Opera]]></category>
      <category><![CDATA[Приложение]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 28 May 2025 08:35:19 GMT</pubDate>
      <content:encoded><![CDATA[<p>Opera <a href="https://press.opera.com/2025/05/28/opera-neon-the-first-ai-agentic-browser/">представила</a> необычный браузер <b>Neon</b>, который сам понимает намерения пользователя и выполняет задачи вместо него.</p><p>Это первый «агентный» браузер компании: он не просто отображает сайты, а сам бронирует отели, заполняет формы и даже может создать веб-приложение с нуля.</p><h2>Три части: Chat, Do и Make</h2><p>Neon состоит из трех компонентов:</p><ul><li><b>Neon Chat</b> — встроенный чат-бот, как Copilot или ChatGPT. Он может найти нужную информацию, объяснить, что происходит на странице или предложить действия.</li><li><b>Neon Do</b> — продолжение идеи «Browser Operator». Этот модуль анализирует содержимое сайта и сам выполняет действия: бронирует поездки, делает покупки, вводит данные — все это работает локально, без отправки данных в облако.</li><li><b>Neon Make</b> — самое необычное. Он выполняет сложные задачи в облаке: может создать сайт, игру, отчет или даже хостить готовый проект. Причем без необходимости писать код — достаточно описать идею.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/111041/2025-05-28/59d0d73f-33db-4a6a-b556-8aba0f61f0dc.jpeg" alt="" /></figure><h2>Больше, чем просто ИИ-помощник</h2><p>Opera уверяет: Neon не просто копирует чат-ботов, он по-настоящему <b>понимает структуру сайтов</b> — работает с DOM-деревом и данными о разметке, а не с пикселями, как это делают некоторые другие решения. Благодаря этому Neon и быстрее, и приватнее аналогов.</p><figure><img src="https://media.tproger.ru/user-uploads/111041/2025-05-28/afd5f15a-faf7-4553-96da-56a6296dea12.jpeg" alt="" /></figure><h2>Платная модель и ранний доступ</h2><p>Из трех модулей, только <b>Neon Make</b> будет платным. Пока Opera открыла лист ожидания для ранних пользователей — подробности и цены компания пообещала раскрыть позже.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как интернет в 2000-х воспитывал нас воинами терпения</title>
      <link>https://tproger.ru/articles/kak-internet-v-2000-h-vospityval-nas-voinami-terpeniya</link>
      <comments>https://tproger.ru/articles/kak-internet-v-2000-h-vospityval-nas-voinami-terpeniya?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Денис Кудерин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-internet-v-2000-h-vospityval-nas-voinami-terpeniya</guid>
      <description><![CDATA[<p>Интернет в начале 2000-х. Модемы, соединения через телефонную сеть, предоплаченные карточки, кабельная сеть и первые провайдеры. </p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-internet-v-2000-h-vospityval-nas-voinami-terpeniya">Как интернет в 2000-х воспитывал нас воинами терпения</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[Фильмы]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Музыка]]></category>
      <category><![CDATA[Боты]]></category>
      <category><![CDATA[Яндекс]]></category>
      <category><![CDATA[Flash]]></category>
      <category><![CDATA[Техподдержка]]></category>
      <category><![CDATA[Россия]]></category>
      <category><![CDATA[Мессенджер]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 20 May 2025 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>В 2000-х интернет был не просто технологией — он был испытанием. Современные пользователи, привыкшие к мгновенной загрузке и безлимитному трафику, вряд ли поймут, каково это — наблюдать, как картинка появляется на экране по частям, при этом сам интернет доступен по причине дороговизны лишь на пару часов в сутки. Тогда соединение на 56 кбит/с считалось роскошью, а каждый мегабайт требовал стратегического планирования.</p><p>Это была эпоха, когда «выйти в сеть» означало посвятить этому весь вечер: отключить телефон, запустить модем и надеяться, чтобы соединение не оборвалось на 99% загрузки. Пользовались сетью далеко не все — это было привилегией, доступной единицам.</p><p>Но именно эти ограничения сделали нас изобретательными. Мы сохраняли страницы на диск, читали письма и тексты офлайн, чтобы не тратить драгоценные минуты, и знали наизусть коды доступа вроде *17#. Если бы переместились из того времени в сейчас, мы бы посчитали возможности современной сети волшебной халявой. Интернет 2000-х не только развлекал — он закалял. О том, как это происходило на практике, читайте в нашем материале.</p><h2>Интернет 2000: как это было</h2><p>В 2000 году интернет в России был скорее экзотикой, чем повседневностью. По данным <a href="https://bd.fom.ru/report/map/os010318">исследования ФОМ</a>, лишь 3,6% населения пользовались им регулярно, а каждый пятый вообще не знал о его существовании. Для большинства это была загадочная «всемирная паутина», о которой слышали, но вряд ли юзали на практике.</p><p>Те, кому посчастливилось подключиться, делали это с помощью технологии dial-up — медленной, капризной и дорогой. Стандартная скорость в 56 кбит/с означала, что загрузка чего-либо весом больше, чем страница в браузере, будет длительным и проблематичным мероприятием. Провайдеры предлагали помегабайтную тарификацию, и необдуманный клик по баннеру мог стоить половины дневного бюджета.</p><p>Покупка домена или хостинга была уделом избранных: например, регистрация в зоне.ru обходилась в $50 (по курсу 2000 года — около 1500 рублей), а размещение сайта на виртуальном сервере — еще дороже. При этом в Рунете насчитывалось не так много активных сайтов — в миллионы раз меньше, чем сегодня.</p><p>В эпоху dial-up развлекательные порталы становились культовыми, несмотря на вопиющее отсутствие юзабилити. Anekdot.ru, udaff.com с его знаменитой «Нетленкой», Krovatka собирали тысячи посетителей, хотя сегодня их дизайн вызывает недоумение: мигающие баннеры, неоновые шрифты и коллажи из голливудских хитов. Особое место занимал «албанский язык»  с его «преведом» и «аффтаром» — это была эпоха, когда контент ценился выше формы, а вырвиглазные цветовые схемы считались нормой.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-05-12/d50f342a-28b1-4221-9276-8883018c829c.jpg" alt="" /></figure><p>Интересно, что даже среди пользователей мало кто воспринимал интернет как коммерческое пространство: покупки онлайн как таковые были недоступны. Основными точками входа были интернет-кафе и компьютерные клубы, где час онлайн-сеанса стоил 30–50 рублей.</p><p>Домашним подключением пользовались редко: абонентская плата в $20–30 при средней зарплате в 3000 рублей делала его недоступным для многих. Чтобы «выйти в интернет», нужно было не только заплатить внушительную сумму, но и проделать ряд ритуальных действий.</p><p>К счастью, с каждым годом с начала 2000-х, ситуация становилась все лучше (прогресс все-таки). Для сравнения: к 2015 году, по данным того же ФОМ, интернетом пользовались уже 66% россиян. Но в 2000-м он был территорией первопроходцев — тех, кто готов был мириться с обрывами связи, долгим ожиданием загрузки и бесконечными настройками модема.</p><h2>Подключение — только для избранных</h2><p>В начале 2000-х доступ в интернет напоминал квест с многоуровневыми испытаниями. Технические ограничения, заоблачные цены и капризное оборудование создавали естественный отбор среди пользователей. Те, кто прошел этот путь, до сих пор с ностальгией вспоминают, как интернет воспитывал в них терпение и изобретательность.</p><h3>Телефонная линия как провод в цифровой мир</h3><p>Эпоха dial-up началась с характерного звукового сопровождения — многотонального «пения» модема, пытающегося установить соединение. Этот звук, напоминающий треки экспериментальной электроники, стал настоящим символом нового времени. Процесс подключения занимал от 30 секунд до нескольких минут, причем успешное соединение с первого раза было скорее исключением, чем правилом.</p><p>Телефонная линия становилась полностью занятой во время интернет-сессии. В семьях это порождало конфликты: пока один член семьи «сидел в интернете», другие не могли позвонить по телефону. Особенно остро проблема стояла вечером, когда одни хотели поболтать с друзьями, другие — проверить почту. Некоторые пользователи применяли хитрости вроде кода *43# для отключения ожидания линии, но это работало не на всех АТС.</p><p>Модемы выглядели примерно так:</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-05-12/fc5f1606-5ccb-41f9-b9a4-2abf99f50124.jpg" alt="" /></figure><p>Странные звуки, которые сопровождали процесс  — результат трансформации цифрового сигнала в аналоговый и обратно.</p><p>Продвинутая версия:</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-05-12/a9d5bca6-f539-4b33-97bf-073d6f57264d.png" alt="" /></figure><p>Оплачивался интернет преимущественно по времени соединения. Популярны были предоплатные карты номиналом 10, 20 или 50 часов. Средняя стоимость часа в 30-50 руб. заставляла серьезно экономить время онлайн. Пользователи разрабатывали целые стратегии: открывали сразу несколько вкладок, сохраняли страницы на жесткий диск и быстро отключались, чтобы читать материалы офлайн.</p><p><i>Интересный факт: некоторые провайдеры предлагали «ночные тарифы» с 01:00 до 07:00 по сниженной цене. Именно в это время наиболее активны были закачки через DC++ и первые версии µTorrent.</i></p><h3>ADSL — революция, но не для всех</h3><p>Появление технологии ADSL в середине 2000-х казалось настоящим прорывом. Теперь можно было одновременно говорить по телефону и пользоваться интернетом. Однако реальность оказалась сложнее ожиданий.</p><p>Главным ограничением стало расстояние до телефонной станции. При удалении более 3-4 км скорость соединения падала в разы. Провайдеры ввели градацию тарифов: чем дальше от АТС, тем дороже обходился одинаковый по скорости доступ. В некоторых случаях абонентам вообще отказывали в подключении, ссылаясь на «плохое качество линии».</p><p>Первые «безлимитные» тарифы появились именно в эпоху ADSL, но слово «безлимитный» приходится брать в кавычки.</p><p>Обычно провайдеры устанавливали:</p><ul><li>ограничение на скорость после достижения определенного объема трафика (5-10 ГБ в месяц);</li><li>полную блокировку P2P-сетей в дневное время;</li><li>ночной безлимит только в определенные часы (чаще с 01:00 до 07:00).</li></ul><p>Стоимость таких тарифов колебалась от 800 до 1500 рублей в месяц, что для многих оставалось неподъемной суммой. При этом реальная скорость редко превышала 1-2 Мбит/с даже по самым дорогим тарифам.</p><h3>Кабельный интернет и локальные провайдеры</h3><p>Параллельно с ADSL развивалось кабельное подключение через коаксиальные сети и FTTB. В каждом районе появлялись мелкие провайдеры, которые предлагали «стабильный высокоскоростной интернет» за 500-700 рублей в месяц. Реальность часто отличалась от обещаний: оборудование перегревалось, кабели повреждались, а техподдержка работала по принципу «все починим, когда будет время».</p><p>Многие локальные провайдеры исчезали так же внезапно, как появлялись. Типичный сценарий: компания собирала предоплату за несколько месяцев, после чего ее офис закрывался, а телефоны переставали отвечать. Особенно страдали жители новостроек, где конкуренция между провайдерами была наиболее жесткой.</p><p>В ответ на это пользователи создавали собственные «пиратские» сети. В спальных районах энтузиасты организовывали раздачу интернета через свитч, подключенный к одному выделенному каналу. Скорость делилась на всех участников, зато стоимость получалась в 2-3 раза ниже официальных тарифов. Такие схемы работали до первых жалоб в Роскомнадзор или до момента, когда кто-то начинал злоупотреблять торрентами.</p><h3>Интернет по карточкам: эпоха предоплаты</h3><p>Отдельного упоминания заслуживает система предоплатных карт доступа. Эти карточки, продававшиеся в киосках и компьютерных магазинах, были основным способом подключения для тех, кто не хотел заключать договор с провайдером.</p><p>Принцип работы был прост:</p><ol><li>Покупаешь карту номиналом 5, 10, 20 или 50 часов.</li><li>Стираешь защитный слой, чтобы увидеть логин и пароль.</li><li>Вводишь данные в программе дозвона.</li><li>Таймер начинает отсчет оплаченного времени.</li></ol><p>Средняя стоимость часа по карточкам составляла все те же 30-50 рублей. Некоторые провайдеры предлагали «бонусные» тарифы: ночные часы по сниженной цене или дополнительные минуты при покупке карт большого номинала.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-05-12/ae8c719e-9cd7-4c84-b198-27898f55a930.jpg" alt="" /></figure><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-05-12/bd3326c9-861c-436e-846e-4fdc026dc6d8.jpg" alt="" /></figure><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-05-12/cd763a96-349f-49fe-86cb-f195d6d5891e.jpg" alt="" /></figure><p>Согласно городским легендам, можно было отыскать точку со скоростным интернетом (например, университет с выделенной линией), открыть сразу 3-4 окна браузера для активации, быстро ввести в каждом данные и получить по одной карточке сразу несколько лимитов. Но такие подключения если и работали, то провайдеры быстро пресекали обман.</p><h2>Тарифы, скорость, сервис</h2><p>В эпоху, когда гигабайты и мегабиты стали чем-то обыденным, трудно представить, что всего 20 лет назад каждый байт интернет-трафика приходилось буквально выгрызать зубами. Это было время, когда подключение к сети требовало не только технических навыков, но и разработки оптимальной финансовой стратегии.</p><h3>Тарифы: цифровая экономика во времена dial-up</h3><p>Помегабайтная тарификация превращала интернет-серфинг в игру с высокими ставками. В 2001 году средняя стоимость 1 МБ трафика в Москве составляла 6-8 рублей (при курсе доллара около 29 рублей). Для сравнения: литр бензина АИ-92 тогда стоил 7 рублей. Скачивание одного MP3-файла (около 4 МБ) обходилось в 24-32 рубля — цена нескольких обедов в студенческой столовой.</p><p>Особенно болезненной была плата за входящий трафик. Некоторые провайдеры (например, «МТУ-Интел») брали 5 рублей за каждый полученный мегабайт. Открытие сайта с десятком картинок могло «съесть» 50-70 рублей.</p><p>Первые «безлимитные» тарифы появились лишь в 2004-2005 годах. Компания «Корбина Телеком» предлагала ночной безлимит за 990 рублей/месяц, но с важными оговорками:</p><ul><li>действовал только с 1:00 до 7:00;</li><li>максимальная скорость — 128 кбит/с;</li><li>запрещалось использовать файлообменные сети.</li></ul><p>Договоры с провайдерами отличались любопытными ограничениями. Так, «Стек» в 2003 году прямо запрещал использование прокси, запуск любых серверных приложений и одновременное подключение более одного устройства.</p><p>Нарушение этих правил могло привести к отключению без предупреждения. При этом средняя скорость соединения даже по дорогим тарифам редко превышала 256 кбит/с — в 40 раз меньше, чем у современных бюджетных предложений.</p><p>В целом среднестатистический россиянин с зарплатой 3000 рублей мог в месяц приобрести себе 50 часов сети днем и 100 часов ночью при условии, что он не будет покупать продукты, одежду и платить за коммунальные услуги.</p><h3>Скорость: искусство ожидания</h3><p>В 2000-м средняя скорость передачи данных составляла от 32 до 128 Кбит/с. ADSL-подключение на 256 кбит/с, появившееся в 2004 году, казалось чудом техники. Для загрузки фильма в формате DivX (700 МБ) требовалось около 6 часов непрерывного соединения.</p><p>Пользователи разработали целые ритуалы для сохранения закачек:</p><ul><li>отключение всех автоматических обновлений;</li><li>использование менеджеров закачек с докачкой (например, ReGet);</li><li>охлаждение модема с помощью вентиляторов (на всякий случай).</li></ul><p>Особой популярностью пользовались ночные закачки. Многие провайдеры (как «Ситилайн» в Москве) предлагали бесплатный трафик с 2:00 до 7:00.</p><p>Энтузиасты составляли графики:</p><ul><li>23:00 — запуск µTorrent</li><li>01:30 — проверка соединения</li><li>05:00 — установка будильника для перезапуска упавших закачек</li></ul><p>Легенды ходили о пользователях, оставлявших компьютеры включенными неделями, чтобы скачивать дистрибутивы продвинутого софта — такие опыты дорого обходились пользователям, но другого пути получить вожделенный новый софт просто не было.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-05-12/3008c64d-f3a4-4664-93f1-0886488be985.png" alt="" /></figure><p>По причине дороговизны дневного интернета множество пользователей выходили в сеть только по ночам. Но поскольку спать все-таки нужно, юзеры находили компромисс с помощью менеджеров загрузок и ПО для скачивания сайтов на жесткий диск.</p><p>Поставив в очередь несколько десятков файлов, утром можно было наслаждаться записанной музыкой. Технически продвинутые граждане писали треки с компа на аудиокассету для дальнейшего прослушивания в плеере.</p><p><i>Для удовлетворения духовных потребностей в виде кино, музыки, текстового контента нужно было потратить немало сил и средств. Молодые люди, родившиеся после 2000 года, даже не представляют, каково это. Для них просмотр фильма и прослушивание любого музыкального трека — это пара кликов. Причем сделать это можно в любом месте и в любое время, имея под рукой мобильное устройство в виде смартфона или планшета. </i></p><h3>Техподдержка: школа терпения</h3><p>Службы поддержки работали по принципу «терпение и еще раз терпение». Среднее время ожидания ответа в 2003-2005 годах составляло 40-60 минут. Типичный диалог выглядел так:</p><p><i>— У меня третий день не открываются страницы.</i></p><p><i>— Вы пробовали очистить кэш DNS?</i></p><p>— <i>Да, и три разных браузера пробовал.</i></p><p>—<i> Наверное, у вас вирус. Установите антивирус Касперского.</i></p><p>— <i>Но у всех в подъезде та же проблема!</i></p><p>—<i> Это разные случаи. Ваш тарифный план…</i></p><p>Мифы о «ночном интернете» имели техническое обоснование. Многие провайдеры действительно отключали системы DPI (глубокого анализа трафика) после 00:00, перераспределяли каналы в пользу домашних пользователей, перезагружали перегретое оборудование.</p><p>Особой «любовью» пользовались фразы операторов:</p><ul><li>«У нас на стороне все работает» (при массовом отключении).</li><li>«Попробуйте другой браузер» (при проблемах с PPPoE).</li><li>«Это особенности вашей операционной системы» (в 90% случаев).</li></ul><h2>Каким был интернет 2000-х: цифровая археология медленных соединений</h2><p>В 2003 году при подключении к интернету через dial-up загрузка главной страницы Яндекса могла занять 5-10 минут. Это было время, когда каждый байт трафика имел ценность, а ожидание становилось неотъемлемой частью цифрового опыта.</p><h3>Что значит «медленный» на самом деле</h3><p>Скорость в 33.6 кбит/с — стандарт для dial-up соединения — означала, что загрузка одной песни в MP3 (около 4 МБ) занимала около 15 минут непрерывного соединения. При помегабайтной тарификации (5-7 руб/МБ) это стоило как две поездки на метро.</p><p>Типичные сценарии использования:</p><ul><li>открытие почты Mail.ru: 2-3 минуты ожидания;</li><li>загрузка трекера ICQ: 45 секунд;</li><li>загрузка простой веб-страницы: 30-40 секунд.</li></ul><p>На скачивание демоверсии игры (какой-нибудь «Heroes of Might and Magic III») можно было потратить несколько ночей подряд, поскольку соединение нередко обрывалось на 80% загрузки. Фильм в формате DivX (700 МБ) мог качаться с торрента несколько суток.</p><h3>Оптимизация всего: война за каждый килобайт</h3><p>Многие пользователи регулярно отключали загрузку изображений в браузерах. В ходу были радикальные методы:</p><ul><li>текстовые браузеры вроде Lynx — для чтения новостей на Gazeta.ru и других сайтах;</li><li>ручная правка hosts-файла для блокировки рекламных серверов;</li><li>специальные сборки с вырезанным Flash и Java.</li></ul><p>Популярность ICQ (в народе — «аськи») объяснялась не только культурными причинами. Технически она была идеальна для медленных соединений:</p><ul><li>клиент весил менее 1 МБ;</li><li>одно сообщение — около 100 байт;</li><li>работала даже через прокси-сервер.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-05-12/2b21cedf-7a29-4912-8658-137987dadbec.jpg" alt="" /></figure><p><i>Характерное «у-у » при получении сообщения до сих пор вызывает ностальгию у тех, кто проводил множество часов под эти звуки. Есть версия, что этот сигнал каким-то образом воздействовал на мозг, сбивая внутреннее ощущение времени. В итоге пользователь мог не заметить, что провел в мессенджере всю ночь, и ему уже пора идти на учебу или на работу. </i></p><h2>Культура ожидания: цифровой аскетизм</h2><p>Музыка скачивалась по трекам не из жадности, а по необходимости. Альбом (60-80 МБ) при помегабайтной тарификации мог обойтись в 300-400 рублей — почти дневная зарплата. Поэтому юзеры искали треки на файлообменниках типа Napster, Soulseek, Gnutella, качали ночью (когда тарифы дешевле).</p><p>Фильмы в формате DivX (700 МБ) загружались по частям несколько дней. Распространенной практикой было:</p><ul><li>разбивать файл на части архиватором RAR;</li><li>качать ночами через Download Master;</li><li>склеивать через HJ-Split (программка для объединения и разделения файлов).</li></ul><p>Пиратство стало вынужденной мерой — легальные альтернативы либо отсутствовали, либо стоили неподъемных денег. Лицензионный диск с игрой мог стоить треть зарплаты. Поэтому пиратство процветало — на диски записывали не только игры, но и взломанный софт.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-05-12/f88c390b-6517-4e22-bb91-1d72ea2826ad.jpg" alt="" /></figure><h2>Сайты и браузеры</h2><p>Сегодня нам кажется, что в браузерах всегда были вкладки, но это не так. В Internet Explorer такая функция появилась только в 2006. Те 40 вкладок, которые сейчас открыты на вашем компе, в начале 2000-х были бы отдельными окнами.</p><p>Правда, тогда никто бы не стал открывать столько окон сразу — на это просто не хватило ресурсов интернета. Более того, браузеры не были бесплатными по умолчанию — за них либо платили, либо (что было гораздо чаще) пользовались взломанными версиями.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-05-12/c8f7910e-fbbe-41f9-96af-20c3736981db.jpg" alt="" /></figure><p>Браузеры не всегда открывали страницы в читаемом и смотрибельном виде. Нередко русскоязычные пользователи сталкивались с некорректными кодировками, которые в народе назывались «крякозябры». Популярной опцией был «Декодер», автоматически исправляющий криво загруженный шрифт.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-05-12/3de0df56-9c8e-4b78-8374-d784440da823.jpeg" alt="" /></figure><p>Сайты 2000-х отличались дизайном с фоновыми GIF-анимациями («падающий снег», «звездное небо»), счетчиками посещений («Ваш визит № 1245»), разделом «Мои друзья» со ссылками. Вместо комментариев были гостевые книги. И кнопки навигации в каждом углу.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-05-12/6e2b1ad1-2a20-4f75-a8e0-37c54f8a58ca.jpg" alt="" /></figure><p>Поисковики вроде Rambler и Aport выдавали в топе не релевантные сайты, а ресурсы с примитивным SEO (часто это был откровенный спам). Пользователи записывали адреса ресурсов на бумагу или сохраняли в «Избранное» (закладки синхронизации еще не изобрели).</p><p>Но во всем этом были и рациональные моменты — дизайн был лаконичными, никаких тебе всплывающих баннеров, при этом весь текст умещается на экране и прокручивать его не нужно.</p><h2>Итоги</h2><p>Опыт 2000-х научил нас ценить то, что сегодня кажется обыденным. Современные 100 Мбит/с — это не просто скорость, а результат эволюции, которую прошли те, кто помнит звук  подключения модема и помегабайтную тарификацию.</p><p>Тот интернет воспитал в нас терпение, изобретательность и умение находить обходные пути. Мы научились оптимизировать трафик, планировать закачки на недели вперед и ценить каждый мегабайт. Сегодня эти навыки могут казаться архаичными, но именно они сделали нас теми, кто умеет ждать, искать решения и не паниковать при временных неполадках.</p><p>Спасибо тому медленному, капризному, но такому важному интернету — без него мы бы не стали теми, кто сегодня с легкостью осваивает новые технологии, помня, с чего все начиналось.</p><p>Ты точно программист, если читаешь это! Больше мемов, инсайтов и боли кодеров <a href="https://t.me/+ajgz7pDecB4xZTI6">тут</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Push-уведомления: от базовых принципов до омниканальных систем</title>
      <link>https://tproger.ru/articles/puwi-na-vse-platformy--kak-rabotaet-novyj-rossijskij-servis-multipushed</link>
      <comments>https://tproger.ru/articles/puwi-na-vse-platformy--kak-rabotaet-novyj-rossijskij-servis-multipushed?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Анна Ельцова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/puwi-na-vse-platformy--kak-rabotaet-novyj-rossijskij-servis-multipushed</guid>
      <description><![CDATA[<p>Рассказываем, как push-уведомления помогают бизнесу доставлять пользователям сообщения с 99.9% вероятностью и как работают изнутри.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/puwi-na-vse-platformy--kak-rabotaet-novyj-rossijskij-servis-multipushed">Push-уведомления: от базовых принципов до омниканальных систем</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[iOS]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Базы данных]]></category>
      <category><![CDATA[Rust]]></category>
      <category><![CDATA[Сервисы]]></category>
      <category><![CDATA[React]]></category>
      <category><![CDATA[Аналитика]]></category>
      <category><![CDATA[Приложение]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Flutter]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Firebase]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 13 May 2025 13:09:11 GMT</pubDate>
      <content:encoded><![CDATA[<p>Push-уведомления стали неотъемлемой частью цифровых продуктов, позволяя приложениям и сайтам оперативно взаимодействовать с пользователями. Они информируют о новостях, обновлениях или событиях в реальном времени, повышая удержание аудитории и конверсию. В отличие от email или SMS, пуши не требуют открытия отдельного приложения и появляются прямо на экране устройства, что делает их эффективным инструментом для маркетинга, уведомлений о транзакциях или системных алертах.</p><p>Рассмотрим, в чем особенность пушей и почему командам стоит к ним присмотреться.</p><h2>Почему сначала пуши, а потом СМСки</h2><p>Казалось бы, мы уже настолько привыкли к пушам из приложений, что СМСки кажутся прошлым веком. Однако многие компании продолжают ими пользоваться — это в какой-то степени логично, поскольку не все устанавливают приложения. Но часто бывает и такое, что бизнес в принципе не стал внедрять подобную функцию.</p><p>А зря: во-первых, СМС — всегда сильная зависимость от оператора связи. Пуши же — более гибкая опция, поскольку при их отправке используются ваши собственные каналы связи. Плюс стоимость отправки push-уведомлений значительно ниже, чем у СМС, при этом данные шифруются, а значит, злоумышленники не смогут украсть важные коды.</p><p>После 2022 года выбор сервисов для push-уведомлений стал сложнее из-за санкций. Долгое время компании пользовались и по инерции продолжают пользоваться сервисом Firebase Cloud Messaging от Google, но сейчас этот канал не может быть единственным для отправки push, так как могут возникнуть определенные санкционные риски и для бизнеса, а также другие проблемы:</p><ul><li>Одноразовые коды и другие уведомления — чувствительная информация. Зарубежные сервисы передают данные за пределы России, что может быть рискованно.</li><li>Условно-бесплатные аналоги, такие как FCM, не гарантируют доставку и не предоставляют аналитику.</li><li>Некоторые сервисы вовсе заблокированы в России, а другие не работают в Китае, где многие сейчас ведут бизнес.</li></ul><h2>Как работают push-уведомления: техническая основа</h2><p>Push-уведомления основаны на клиент-серверной архитектуре, где сервер отправляет данные на устройство через специализированные сервисы. Процесс начинается с регистрации: при запуске приложения устройство генерирует токен (device token) и отправляет его на сервер разработчика. Этот токен используется для маршрутизации сообщений.</p><p>Доставка происходит через платформо-зависимые сервисы:</p><ul><li>APNs (Apple Push Notification service): Для iOS и macOS, требует сертификата от Apple и поддерживает богатые уведомления с изображениями и действиями.</li><li>FCM (Firebase Cloud Messaging): Для Android, кросс-платформенный сервис от Google, интегрируется с другими каналами.</li><li>HPK (Huawei Push Kit): Альтернатива для устройств Huawei, особенно актуальна в регионах без Google Services.</li><li>RuStore и Aurora: Российские аналоги для Android, ориентированные на локальный рынок и совместимые с санкционными ограничениями.</li></ul><p>Для веб-приложений используются Web Push Notifications на базе Service Workers и протокола Push API, совместимого с браузерами Chrome, Firefox и Edge. Сообщения шифруются с помощью VAPID (Voluntary Application Server Identification) для аутентификации отправителя.</p><p>Модель Pub/Sub (Publish/Subscribe) лежит в основе масштабируемых систем: издатели публикуют сообщения в топики, а подписчики (устройства) получают их асинхронно. Это позволяет обрабатывать миллионы подключений без перегрузок. WebSocket или long-polling обеспечивают постоянное соединение для минимальной задержки – часто менее 0,1 секунды.</p><p>Вызовы включают:</p><ul><li>Оффлайн-доставку: Если устройство выключено или без интернета, сообщение может потеряться; ретраи (повторные попытки) и каскадирование (переключение на альтернативные каналы) решают эту проблему.</li><li>Географические ограничения: Сервисы вроде FCM могут блокироваться в некоторых странах, требуя омниканальных подходов.</li><li>Безопасность: Уведомления с чувствительными данными (коды аутентификации) нуждаются в end-to-end шифровании, чтобы предотвратить перехват.</li><li>Пользовательский контроль: Пользователи могут отключать пуши, поэтому важно соблюдать регуляции вроде GDPR или 152-ФЗ, избегая спама.</li></ul><p>Преимущества пушей над SMS: низкая стоимость (почти нулевая для больших объемов), мгновенная доставка, поддержка мультимедиа (изображения, кнопки действий) и аналитика (открытия, клики).</p><h2>Омниканальность и лучшие практики внедрения</h2><p>Омниканальные системы объединяют несколько каналов в единую платформу, обеспечивая доставку независимо от устройства или региона. Это включает каскад: если основной канал (например, собственный WebSocket) недоступен, система переключается на FCM или APNs. Такие подходы достигают 99,9% доставки, с ретраями и мониторингом.</p><p>При выборе системы учитывайте:</p><ul><li>Масштабируемость: Поддержка высоких нагрузок, как во время пиковых событий (распродажи, новости).</li><li>Аналитика: Реал-тайм отчеты о доставке, конверсии и отказах для оптимизации кампаний.</li><li>Кастомизация: Deeplink для перехода в конкретный раздел приложения, добавление изображений, ссылок или персонализированного контента.</li><li>Интеграция: REST API и SDK для популярных фреймворков (React Native, Flutter), чтобы внедрение заняло минимум времени.</li><li>Соответствие регуляциям: Локализация данных, сертификаты безопасности (PCI DSS, ФСТЭК) для работы с финансовыми или государственными данными.</li></ul><p>Лучшие практики: сегментируйте аудиторию по поведению, тестируйте A/B-варианты сообщений, интегрируйте с CRM для персонализации. Для бизнеса в e-commerce пуши идеальны для напоминаний о корзине, в банках – для транзакций, в медиа – для новостей.</p><h2>MULTIPUSHED как пример омниканальной платформы</h2><p>В качестве примера рассмотрим российскую систему <a href="https://multipushed.ru">MULTIPUSHED</a> от МУЛЬТИФАКТОР, ориентированную на доставку уведомлений в условиях санкций и локальных требований. Она использует SaaS-модель с инфраструктурой в дата-центрах Tier3 (DataLine, Selectel, LinxCloud), защищенной от DDoS через NGENIX.</p><p>Архитектура включает Pub для приема сообщений по HTTPS API, Broker для распределения и Router для маршрутизации по каналам: собственный PUSHED, APNs, FCM, HPK, RuStore, Aurora. Sub-серверы поддерживают WebSocket Secure для онлайн-доставки, с каскадированием для оффлайн-случаев.</p><p>Процесс: устройство регистрируется, получает токен; отправитель передает сообщение Pub; система маршрутизирует и подтверждает доставку. Совместима с iOS, Android, Aurora, РОСА МОБАЙЛ, KasperskyOS и веб. SDK для Android, iOS, React Native, Flutter, Aurora и Web упрощают интеграцию.</p><p>Функции: аналитика в реальном времени, кастомизация (deeplink, изображения), глобальная доставка (включая Китай и регионы РФ). Сообщения шифруются, соответствует 152-ФЗ и PCI DSS, внесена в реестр российского ПО.</p><h2>Итоговые рекомендации</h2><p>Push-уведомления эволюционируют в сторону омниканальности, чтобы преодолевать платформенные барьеры и обеспечивать надежность. Для бизнеса это инструмент роста вовлеченности, но успех зависит от баланса между частотой и релевантностью.</p><p>При внедрении тестируйте на реальных сценариях, мониторьте метрики и адаптируйте под регуляции – это минимизирует риски и максимизирует отдачу.</p>]]></content:encoded>
    </item>
    <item>
      <title>Что такое AJAX и как он работает</title>
      <link>https://tproger.ru/articles/chto-takoe-ajax-i-kak-on-rabotaet</link>
      <comments>https://tproger.ru/articles/chto-takoe-ajax-i-kak-on-rabotaet?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Денис Кудерин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/chto-takoe-ajax-i-kak-on-rabotaet</guid>
      <description><![CDATA[<p>Что такое AJAX. Показываем, в каких случаях нужен AJAX и как правильно с ним работать. Рассматриваем пошаговую инструкцию и основные нюансы ✔ Tproger</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/chto-takoe-ajax-i-kak-on-rabotaet">Что такое AJAX и как он работает</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[API]]></category>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Производительность]]></category>
      <category><![CDATA[Отладка]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[HTML]]></category>
      <category><![CDATA[HR]]></category>
      <category><![CDATA[XML]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 06 Mar 2025 10:00:04 GMT</pubDate>
      <content:encoded><![CDATA[<p>Технология AJAX (Asynchronous JavaScript and XML) — мощный инструмент разработки динамичных и производительных интерактивных веб-приложений. AJAX меняет подход к обновлению содержимого страниц и позволяет загружать данные в асинхронном режиме без перезагрузки. Благодаря этой технологии сохраняется высокая скорость загрузки, юзерам удобнее пользоваться сайтами.</p><p>Узнаем, что собой представляет технология, как формируются AJAX запросы, как работает инструмент, каковы его преимущества, недостатки и ограничения.</p><h2>Основные компоненты AJAX</h2><p>Термин AJAX используется в программировании с 2005 года, хотя подобные способы обмена данными применялись и ранее. Это универсальное решение для веб-приложений, которое объединяет несколько компонентов. Именно благодаря AJAX реализованы такие проекты, как современные соцсети, Google Maps, Gmail, Google Docs и многие другие.</p><p>Основная задача  AJAX — запросы к серверу в обход перезагрузки страницы. Это уменьшает время отклика и позволяет веб-приложению работать в интерактивном режиме. Несмотря на присутствие в названии отсылки к XML, использовать этот язык разметки не обязательно.</p><p>Технология реализуется через JavaScript — происходит заданный скриптом асинхронный обмен данными между сервером и браузером. Именно на JS создаются запросы для коммуникации с сервером и динамического изменения страницы.</p><p>Асинхронность — ключевое условие запросов AJAX. Они выполняются в фоновом режиме, пока пользователь продолжает работу с сайтом. Загрузка и обработка данных выполняются параллельно.</p><p>Код на JavaScript — не единственный компонент AJAX. В него также входят форматы хранения данных XML или JSON. При этом JSON для отправки запросов AJAX используется чаще, поскольку код у этого формата короче, что существенно упрощает передачу данных.</p><p>Важнейший компонент технологии — объект <b>XMLHttpRequest,</b> который отвечает за все запросы AJAX. Этот API предоставляет клиенту полноценный функционал для взаимного обмена данными с сервером. Раньше XHR поддерживали не все браузеры — разработчикам приходилось дополнительно подключать библиотеку jQuery с встроенным объектом. Сейчас большинство популярных браузеров, включая Chrome и Firefox, работают с XMLHttpRequest напрямую.</p><p>Примечание. В современных программных веб-продуктах вместо XHR нередко используют Fetch AP, но говорить о массовом тренде преждевременно.</p><p>Передача данных выполняется через стандартный протокол взаимодействия клиента и сервера HTTP. Браузер инициирует запрос, получает в ответ HTML-страницу, либо сообщение об ошибке (если в запросе есть неточности). Используются стандартные методы получения данных — GET и POST. Первый (GET) применяется при получении данных от сервера, второй (POST) используется для отправки данных на сервер в теле HTTP-запроса.</p><p>Благодаря способности AJAX работать с разными форматами, типами данных и серверными API, эта методика универсальна. Асинхронный обмен позволяет веб-приложениям быстро загружаться, плавно работать и не перезагружаться после каждого запроса пользователя к серверу. Это особенно актуально для приложений, требующих постоянного взаимодействия с сетевым устройством — социальных сетей, онлайн-магазинов, браузерных версий мессенджеров.</p><h2>Как работает AJAX</h2><p>Магия асинхронных запросов AJAX базируется на взаимодействии с DOM-объектами браузерной страницы. Процесс выглядит следующим образом:</p><ol><li>С помощью JavaScript браузер отправляет HTTP-запрос на сервер, где происходит обработка данных и отправка ответа. Чтобы отправить запрос, потребуется создать объект XMLHttpRequest — без него отправлять запросы и получать ответы без перезагрузки не получится.</li><li>При этом запрос необходимо настроить — указать метод GET/POST, URL и перейти на асинхронный режим работы.</li><li>Сервер возвращает данные, с которыми начинает работать JavaScript. Когда браузер принимает исходный код страницы, он выстраивает множество виртуальных элементов на базе этого кода — сюда входят заголовки, изображения, текст, ссылки и прочее.</li><li>При этом к каждому компоненту виртуальной модели можно обращаться отдельно с целью изменить его свойства или содержание. JavaScript позволяет поменять фон страницы, изменить заголовок и внести другие изменения, не перегружая страницу.</li></ol><p>Простой пример запроса AJAX выглядит следующим образом (используется метод получения данных GET):</p><p>В этом примере мы создаем объект XMLHttpRequest, настраиваем запрос, обрабатываем ответ и данные, отправляем запрос на сервер. Данные выводятся в консоль без перезагрузки страницы — обновляется только нужный элемент интерфейса.</p><p>В следующем примере показан код для отправки формы с использованием запроса AJAX:</p><p>С помощью этого кода пользователь отправляет данные формы на сервер и получает ответ без перезагрузки страницы. В браузере запускается скрипт, привязанный к кнопке «Отправить». Все процессы происходят внутри скрипта — новая информация встроена в уже открытую страницу.</p><h3>Отладка AJAX-запросов</h3><p>Для эффективной разработки и поддержки приложений программистам важно научиться отлаживать и тестировать запросы AJAX. Для этого необходимы встроенные инструменты браузеров Chrome, Firefox, Edge и других.</p><p>Эти инструменты позволяют:</p><ul><li>просматривать отправленные на сервер запросы во вкладке Network;</li><li>проверять атрибуты запросов/ответов и их содержимое;</li><li>следить за временем выполнения отправленных запросов, выявлять узкие места и оптимизировать процессы.</li></ul><p>Для тестирования запросов полезно создавать фейковые API или проверять работу реальных интерфейсов вне контакта браузера с помощью библиотек MSW или Postman.</p><p>Прогерам будут полезны ценные советы по оптимизации процессов при работе с запросами:</p><ul><li>Используйте кэширование, чтобы уменьшить количество запросов. Это снижает нагрузку на сервер и повышает производительность.</li><li>Применяете сжатие данных для снижения объема отправляемой информации. Это ускоряет процесс передачи и обработки данных.</li><li>Всегда обрабатывайте ошибки для улучшения пользовательского опыта. Лучше заранее предусмотреть все варианты, чтобы снизить риск возможных проблем при использовании приложения.</li></ul><h2>Преимущества AJAX</h2><p>Перечислим основные плюсы технологии:</p><ul><li><b>Обновление данных без необходимости перезагружать страницу. </b>Это улучшает опыт пользователей и делает взаимодействие с приложением более плавным и быстрым. Юзерам гораздо удобнее видеть обновление на той же странице, чем загружать новую.</li><li><b>Уменьшение трафика. </b>Поскольку браузер получает от сервера не всю страницу полностью, а только ограниченную запросом информацию, тратится меньше ресурсов на передачу данных.</li><li><b>Снижение нагрузки на сервер</b>. Если приложение открывает страницы «на лету», достаточно один раз прогрузить стандартные элементы (шапку, меню, подвал), а остальные части загружать по необходимости.</li><li><b>Быстрота и отзывчивость приложений.</b> Чем меньше данных в запросе AJAX, тем быстрее придет ответ от сервера. В современных продуктах скорость и удобство — ключевые конкурентные преимущества.</li><li><b>Экономия ресурсов. </b>Безлимитный интернет есть не у всех и не везде, а запросы AJAX используют ресурсы в минимальном режиме.</li></ul><p>Необходимо также понимать, что технология не универсальна и подходит не для всех ситуаций и приложений.</p><h2>Недостатки AJAX</h2><p>В числе основных минусов AJAX:</p><ul><li><b>Потенциальные проблемы с SEO-контентом. </b>Содержание страниц, которое подгружается с помощью AJAX, часто недоступно для поисковиков, что негативно сказывается на индексации. Поисковые системы видят исходный ход, но не данные с серверов. Это может быть проблемой для сайтов, которые нуждаются в привлечении пользователей. Для сеошников работа с сайтами на AJAX — головная боль.</li><li><b>Кэширование.</b> Динамическое содержание может создать сложности с кэшированием, что приводит к загрузке неактуальных данных.</li><li><b>Зависимость от JavaScript. </b>Пользователь может отключить JavaScript, что ограничит функциональность сайта. Данные не смогут прийти с сервера, интерактивного обновления не получится.</li><li><b>Усложнение проекта.</b> Работа с запросами AJAX требует от разработчиков определенной квалификации. Они должны предвидеть различные внештатные ситуации, связанные с асинхронными запросами, и заранее прописать скрипты на такие случаи. Потребуется также продумать бэкенд — ответы сервера на различные запросы.</li></ul><p>При нестабильной связи AJAX может не получить ответа от сервера либо не отправить запрос. Такая ситуация нарушает логику загрузки страницы — ее придется все-таки перезагружать и начинать все с нуля.</p><h2>Где используется AJAX</h2><p>Технологию используют для улучшения пользовательского опыта при работе с сайтами и веб-приложениями. AJAX-запросы решают множество подзадач:</p><ul><li><b>Динамическое обновление.</b> С помощью AJAX обновляются отдельные элементы страниц — таблицы, списки, графики. Это особенно удобно на сайтах, где применяются фильтры — например, на страницах онлайн-магазинов.</li><li><b>Автозаполнение и поиск.</b> AJAX используется для мгновенной выдачи результатов поиска. Юзер только начинает вводить текст в поисковую строку и уже видит релевантные варианты. Это удобно для формирования точных и подробных поисковых запросов.</li><li><b>Отправка формы. </b>Чтобы отправить данные заполненных форм, пользователю не нужно ждать обновления, что делает работу более плавной. Например, можно залогиниться после просмотра сайта, оставшись на той же странице.</li><li><b>Загрузка данных для конкретного пользователя.</b> В соцсетях или на сайтах с интерактивными опциями новые сообщения, уведомления и комментарии подгружаются без обновления страницы.</li><li><b>Динамические интерфейсы.</b> Этот процесс вы можете наглядно наблюдать на Гугл-картах и в подобных приложениях — по мере прокрутки подгружаются новые части территории. Аналогичная опция реализована на сайтах с интерактивными прогулками по гостиницам, музеям и другим локациям.</li></ul><p>Иными словами, AJAX-запросы используются везде, где требуются обновления содержания без перезагрузки: чтобы получить список новых сообщений в чате или в общей ленте; подгрузить позиции на витрине товаров; увидеть рекламные баннеры и т.д.. В Ютубе на этой технологии основано сворачивание видео в компактный плеер в углу.</p><p>AJAX — незаменимый инструмент для разработки динамических интерфейсов и улучшения пользовательского опыта. Механизм основан на асинхронности работы браузера и сервера. При нормальной скорости интернета данные передаются мгновенно, так что пользователям даже не приходится ждать. При этом AJAX универсален и может работать с разными форматами данных и серверными API.</p>]]></content:encoded>
    </item>
    <item>
      <title>Что такое cookies, localStorage и sessionStorage: главные отличия и примеры</title>
      <link>https://tproger.ru/articles/chto-takoe-cookies--localstorage-i-sessionstorage</link>
      <comments>https://tproger.ru/articles/chto-takoe-cookies--localstorage-i-sessionstorage?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Денис Кудерин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/chto-takoe-cookies--localstorage-i-sessionstorage</guid>
      <description><![CDATA[<p>Что такое cookies, localStorage и sessionStorage. Показываем основные отличия и примеры кода. Рассматриваем пошаговую инструкцию и важные особенности каждого вида ✔ Tproger
</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/chto-takoe-cookies--localstorage-i-sessionstorage">Что такое cookies, localStorage и sessionStorage: главные отличия и примеры</a>»</p>]]></description>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[JSON]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Node.js]]></category>
      <category><![CDATA[Приложение]]></category>
      <category><![CDATA[Взлом]]></category>
      <category><![CDATA[Персональные данные]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Библиотеки]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 25 Feb 2025 14:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Работа современных сайтов и приложений неизбежно связана с сохранением данных на стороне клиента. Эти данные применяются в других частях веб-ресурсов или используются в следующих сессиях. Например, на сайте онлайн-магазина пользователь сохраняет товары в корзине и завершает сессию. Когда он возвращается на сайт, он может продолжить покупку, не потеряв свои товары.</p><p>Как это реализуется на практике? Есть несколько способов работы с информацией. Наиболее востребованные из них — это cookies, localStorage и sessionStorage. Эти инструменты отличаются друг от друга, но далеко не все разработчики могут объяснить разницу между ними.</p><p>Узнаем, что собой представляют cookies, localStorage и sessionStorage, каковы их основные характеристики и особенности, как они применяются и какой способ работы с данными лучше.</p><h2>Cookies</h2><p>На заре интернета cookies были безальтернативным вариантом хранения данных на стороне клиента. Файлы куки представляют собой элементарные пары типа «ключ-значение» и используются для:</p><ul><li>управления текущими сессиями;</li><li>персонализации пользователя;</li><li>отслеживания его активности.</li></ul><p>При этом данные не просто остаются в хранилище в браузере, но и передаются на серверы в виде HTTP-заголовков, выступая частью спецификации протокола. Cookies поддерживают все браузеры — это универсальный способ работы с информацией. И хотя объем данных для хранения ограничен, производительность этого способа — крайне важный показатель для работы современных веб-ресурсов.</p><p>По сути куки — это ограниченные по размеру текстовые файлы, которые сайт сохраняет на устройстве пользователя. Объем данных в «печеньках» лимитирован — это не больше 4 КБ, при этом у них есть срок хранения, который устанавливает разработчик ресурса.</p><p>Например, в Google есть файлы аналитики для сбора информации, которые хранятся от 6 до 24 месяцев. Некоторые cookies действуют только в период работы в браузере и при закрытии автоматически уничтожаются, другие хранятся в течение всего перерыва между сессиями — их срок жизни зависит от выполняемых задач.</p><p>Куки почти идеальный инструмент для идентификации посетителя, но сам пользователь может отключить их почти на любом ресурсе, что делает «печеньки» недостаточно надежным хранилищем информации.</p><figure><img src="https://media.tproger.ru/user-uploads/101078/2025-02-25/444a9012-6723-4a77-9166-14e4b8210d2f.png" alt="" /></figure><p>Развитие этого инструмента продолжается. Например, в экосистеме Chromium доступна версия, которая поддерживает общую память и асинхронный API CookieStore — им можно пользоваться без блокировки главного потока.</p><p>Закрепим основные характеристики cookies:</p><ul><li>сохраняют данные, которые передаются на сервер с помощью заголовков;</li><li>локальные и сессионные куки-хранилища существуют только на стороне клиента;</li><li>сроки хранения устанавливаются заранее при создании куков;</li><li>объем ограничен (4 КБ);</li><li>бывают защищенные куки, но в этом случае их содержимое будет недоступным на клиентской стороне — такой формат используется для аутентификации пользователей при хранении их токенов.</li></ul><p>Способ хранения данных в cookies имеет определенные ограничения. Чтобы сохранить корректность запроса, содержимое должно быть закодированным и безопасным. При этом интерфейс для чтения и записи cookies не всегда удобный, что вынуждает разработчиков работать с ним не напрямую, а через сторонние библиотеки.</p><p>Этот способ применяют, чтобы сохранить данные авторизации либо когда доступ к сохраненным данным требуется на сервере. Кроме того, куки применяют компании, чтобы отслеживать поведение пользователей, но сами браузеры активно этому противодействуют.</p><p>Разработчики на JavaScript используют свойство document.cookie, которое предоставляет строковый формат для работы всех cookies, связанных с текущим процессом. Пример кода:</p><p>В этом примере для установки cookie разработчик присваивает строку свойству document.cookie. Можно задать дополнительные свойства — например, срок действия, путь или домен.</p><p>У файлов cookie довольно широкая область применения — хранение настроек юзера, удержание посетителей сайта, хранение сведений о текущем сеансе, показ целевой рекламы. При этом файлы устанавливает конкретный сервер, и только он может их прочитать.</p><p>Разработчики устанавливают и читают cookie через заголовки Set-Cookie и Cookie непосредственно в протоколе HTTP. В приложениях куки устанавливают и считывают с помощью соответствующего API либо модуля файлов cookie на одном из серверных языков — например, Node.js.</p><p>Среди рядовых юзеров интернета бытует мнение, что куки вредны и опасны. Это не совсем верно. Сами по себе эти файлы не представляют угрозы для данных — они не содержат вирусы и не могут установить на устройство вредоносное ПО. Но если злоумышленники получат доступ к cookies на вашем устройстве, они будут знать все о сеансах конкретного посетителя и могут использовать эти сведения в своих целях.</p><p>Существует риск, что при работе на компьютерах с публичным вай-фаем или при подключении через чужие взломанные устройства, личные данные могут быть похищены. Определенные уязвимости, связанные с cookie, могут возникать на сайтах онлайн-магазинов, которые уделили недостаточно внимания информационной безопасности.</p><p>Чтобы минимизировать риски, юзеру при посещении незнакомых сайтов или при использовании публичных сетей лучше отказаться от автоматического приема куки-файлов. Альтернативный вариант — входить инкогнито.</p><h2>LocalStorage</h2><p>Это более продвинутый формат хранилища в браузере, позволяющий сайтам сохранять больше информации без ущерба для трафика. LocalStorage создали в качестве альтернативы cookie, чтобы обойти ограничения последних. А именно — небольшой объем хранилища, необходимость постоянно передавать данные с сервера в браузер и обратно. В localStorage работа с данными стала проще и эффективнее.</p><p>В локальном хранилище, в отличие от сеансового, данные сохраняются после закрытия и повторного открытия страницы. Файлы работают до тех пор, пока пользователь их не очистит или это не сделает код на JavaScript.</p><p>Информация хранится в формате «ключ-значение» в виде строк. Даже если ввести числовые или логические данные, они преобразуются в строчные. Для использования хранилища в JavaScript используют объект localStorage.</p><figure><img src="https://media.tproger.ru/user-uploads/101078/2025-02-25/07284145-9813-4c0b-aa55-b68172e7de1c.png" alt="" /></figure><p>Пример кода:</p><p>Запись напоминает код для сеансового хранилища. Метод setItem() используется для хранения данных, метод getItem() — для их получения, removeItem() — для удаления конкретных элементов, clear() — для полной очистки данных. Несмотря на то, что в localStorage сохраняются только строки, с помощью JSON разработчики могут взаимодействовать и с более сложными типами данных.</p><p>Основные характеристики localStorage:</p><ul><li>данные хранятся бессрочно;</li><li>очистить хранилище можно только принудительно — через код JavaScript или полную очистку браузерного кэша пользователем;</li><li>объем данных для хранения — 5-10 МБ (по этому показателю localStorage лидирует среди всех хранилищ);</li><li>старыми браузерами не поддерживается — например, на IE7 это локальный ящик не работает;</li><li>действует по принципу ограничения домена — сохраненная информация доступна лишь одному источнику.</li></ul><p>Поскольку данные не исчезают даже после закрытия компьютера, сайты на длительный срок сохраняют нужную им информацию — в первую очередь это предпочтения пользователя и его настройки.</p><p>Эффективность хранилища в том, что данные не нужно отправлять на сервер при каждом запросе, что позволяет хранить больше информации. localStorage особенно полезны для сохранения индивидуальных настроек — фильтров, размеров окон на сайте, выбора светлой/темной темы и т.д. Благодаря свойствам и размеру хранилища, с некоторыми приложениями юзер может работать и в офлайне.</p><h2>SessionStorage</h2><p>Способ работы с данными sessionStorage во многом аналогичен localStorage, но есть принципиальное отличие — после закрытия браузера данные полностью удаляются. Это не означает, что sessionStorage — хуже, просто у него другая сфера применения. В частности формат идеален для хранения данных, актуальных в рамках конкретной сессии — например, информации при заполнении формы или вводе данных банковской карты.</p><figure><img src="https://media.tproger.ru/user-uploads/101078/2025-02-25/c4040c74-e2e9-41b5-a18b-7cf41465d5b3.png" alt="" /></figure><p>Объем хранилища ограничен, но в большинстве случаев этого достаточно для хранения инфы в пределах одного сеанса. Данные по сути не защищены, так что вопрос приватности — забота пользователя.</p><p>Хранилище сеансов поддерживается всеми актуальными браузерами — данные находятся в полной доступности, пока открыты вкладки и окна. Если пользователь закрывает окно, происходит автоматическая очистка.</p><p>Для подключения сеансового хранилища разработчики на JavaScript используют объект sessionStorage и методы для получения, установки и удаления данных.</p><p>Пример кода:</p><p>Как видите, есть определенное сходство с localStorage, поскольку у хранилищ одинаковый алгоритм работы. Метод setItem() применяется для сохранения данных (первый аргумент — ключ, второй — значение), метод получения — removeItem(), для очистки используется метод clear().</p><p>Основные характеристики sessionStorage:</p><ul><li>данные хранятся в течение одной сессии, после закрытия браузера очищаются;</li><li>хранилище использует контекст браузера верхнего уровня, то есть в каждой вкладке содержатся уникальные данные;</li><li>объем данных — 5 МБ;</li><li>старые браузеры формат не поддерживают.</li></ul><p>Если вы открываете другую вкладку с той же страницей, там будут храниться уже другие данные. При этом перезагрузка страницы на данные не влияет, но если прервется сессия (например, временно отвалится интернет) информация обнулится.</p><p>Способ SessionStorage применяют для сохранения данных неавторизованных посетителей в онлайн-магазинах — какие товары он смотрел, какие положил в корзину. Формат используется также в случаях, когда применение localStorage нецелесообразно — например, при заказе еды в ресторанах. В локальном хранилище посетитель бы увидел прошлый заказ, который он собирал и не оформил, но меню к тому времени может поменяться. В сессионном хранилище актуальный заказ будет собран по новой.</p><h2>Сравнение cookies, localStorage и sessionStorage</h2><p>Принципиальная разница между способами хранения понятна из предыдущих разделов, осталось рассмотреть конкретные критерии.</p><h2>Размер хранилища</h2><ul><li>Файлы cookie. Здесь размер минимальный. Для каждого домена куки могут хранить ограниченный объем данных — как правило, не больше 4 КБ.</li><li>LocalStorage. Максимально возможный объем данных для каждого домена — не менее 5 МБ, а при использовании определенных настроек и больше.</li><li>SessionStorage. Здесь хранится больше данных для одного домена в сравнении с cookies. Размер — не более 5 МБ.</li></ul><h2>Срок хранения</h2><ul><li>Файлы cookie. Данные куки могут быть сеансовыми или постоянными в зависимости от настроек. Постоянные имеют свой срок действия, который исчисляется месяцами или даже годами, сеансовые уничтожаются сразу после завершения сеанса.</li><li>LocalStorage. Данные в локальном хранилище остаются после закрытия браузера и его повторного открытия. Удалить их может только пользователь или код JavaScript.</li><li>SessionStorage. Информация в сеансовом хранилище остается, пока открыта вкладка сайта. При закрытии данные удаляются.</li></ul><h2>Работа с данными</h2><ul><li>Файлы cookie. Разработчик может установить срок действия для файлов, после которого браузер автоматически очистит куки.</li><li>LocalStorage. Нельзя запрограммировать автоматическое удаление данных или другие действия с ними. Они сохраняются, пока не будут удалены принудительно.</li><li>SessionStorage. Здесь нет механизма автоматического истечения срока действия. Поэтому данные будут актуальны, пока открыта страница.</li></ul><h2>Доступ к данным</h2><ul><li>Cookies. Доступ к файлам можно получить и изменить через JavaScript API, но существуют определенные ограничения для третьих лиц.</li><li>LocalStorage и sessionStorage. Есть прямой доступ к информации в хранилищах через API JavaScript, который позволяет манипулировать данными.</li></ul><h2>Сетевой трафик</h2><ul><li>Cookies. Данные автоматически отправляются на север после каждого HTTP-запроса для соответствующего домена, что увеличивает загрузку трафика.</li><li>LocalStorage и sessionStorage. Данные не отправляются на сервер, а остаются на стороне клиента, что сокращает объем лишнего трафика.</li></ul><h2>Когда использовать cookies, localStorage и sessionStorage</h2><p>Использование различных способов хранения информации зависит от целей обращения с данными. На сайтах с авторизацией и значимой историей просмотра (например, в крупных онлайн-магазинах) важно, чтобы пользовательские данные сохранялись в большом объеме и как можно дольше, поэтому предпочтительным инструментом выступает localStorage.</p><p>В других случаях достаточно sessionStorage — например, для неавторизованных пользователей хранить информацию дольше одного сеанса не требуется. Cookies применяются, когда нужно отправить небольшое количество данных на сервер — этот способ используют практически все современные веб-ресурсы при работе с информацией, требующей быстрого обновления.</p><p>Разницу в жизненном цикле cookies, localStorage и sessionStorage используют в соответствии с задачами хранения. Ограниченный срок действия cookies и данных сессионного хранилища могут стать преимуществами в одном случае и недостатками в другом. С данными localStorage аналогичная ситуация — если нужен полный контроль времени хранения, этот формат идеально подходит.</p><h2>Проблемы и перспективы хранилищ данных</h2><p>Все хранилища потенциально уязвимы для XSS-атак. В cookies применяют дополнительные меры защиты: флаги HTTPOnly и Secure запрещают доступ из JavaScript к файлам, чувствительным к безопасности. Для отправки таких файлов используется передача по шифрованным каналам HTTPS.</p><p>Для защиты от атак CSRF (подделка межсайтовых запросов) используют атрибут SameSite, проверку HTTP_Referer/Origin или применение синхронизированных токенов.</p><p>В localStorage для обеспечения безопасности важно соблюдать принцип одного источника и тоже пользоваться зашифрованными HTTPS-соединениями. При этом эксперты все равно не рекомендуют сохранять конфиденциальные данные в localStorage.</p><p>Учитывайте, что куки могут замедлять загрузку, особенно если у пользователей низкая скорость интернета. LocalStorage на HTTP-запросы не влияет, что положительно отражается на производительности веб-ресурса.</p><p>После появления пятой версии HTML localStorage становится более востребованным элементом при разработке веб-приложений. Он обеспечивает полноценной контроль данных с сохранением актуальности проекта, идеально подходит для хранения структурированной информации и ее дальнейшей обработки. При этом инструмент поддерживает синхронизацию данных, когда пользователь открывает приложение в разных вкладках.</p>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft создала фейковую инструкцию «Как удалить Edge» для рекламы своего браузера</title>
      <link>https://tproger.ru/news/microsoft-sozdala-fejkovuyu-instrukciyu--kak-udalit-edge--dlya-reklamy-svoego-brauzera</link>
      <comments>https://tproger.ru/news/microsoft-sozdala-fejkovuyu-instrukciyu--kak-udalit-edge--dlya-reklamy-svoego-brauzera?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/microsoft-sozdala-fejkovuyu-instrukciyu--kak-udalit-edge--dlya-reklamy-svoego-brauzera</guid>
      <description><![CDATA[<p>Microsoft сделала страницу «Как удалить Edge», но вместо инструкции разместила рекламу браузера. Пользователи возмущены таким подходом</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/microsoft-sozdala-fejkovuyu-instrukciyu--kak-udalit-edge--dlya-reklamy-svoego-brauzera">Microsoft создала фейковую инструкцию «Как удалить Edge» для рекламы своего браузера</a>»</p>]]></description>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Windows]]></category>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[Google Chrome]]></category>
      <category><![CDATA[Firefox]]></category>
      <category><![CDATA[Mozilla]]></category>
      <category><![CDATA[Microsoft Edge]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 07 Feb 2025 03:08:08 GMT</pubDate>
      <content:encoded><![CDATA[<p>Пользователи <a href="https://www.microsoft.com/en-us/edge/uninstall-edge?form=MT00OR&amp;cs=163218577">обнаружили</a> на официальном сайте Microsoft страницу под названием «How to uninstall Microsoft Edge» («Как удалить Microsoft Edge»).</p><p>Однако вместо пошаговой инструкции по удалению браузера, страница представляет собой перечень преимуществ Edge, таких как интеграция с Copilot, вертикальные вкладки и встроенный VPN.</p><h2>Реакция пользователей</h2><p>Многие восприняли такой подход как попытку удержать пользователей от перехода на другие браузеры, такие как Google Chrome или Mozilla Firefox.</p><p>Вместо предоставления информации о том, как удалить Edge, Microsoft использует страницу для продвижения своего продукта.</p><figure><img src="https://media.tproger.ru/user-uploads/111041/2025-02-07/a7f076db-6d45-46a5-bb82-a21796786e8e.jpeg" alt="" /></figure><h2>Возможность удаления Edge</h2><p>Отметим, что официально у Microsoft нет простого способа удалить Edge, поскольку браузер интегрирован в операционную систему Windows.</p><p>Но некоторые пользователи сообщают о методах удаления с помощью сторонних программ или через командную строку, хотя такие действия могут привести к нестабильной работе системы.</p><p>Также, вполне легально, удалить Edge могут жители Евросоюза.</p>]]></content:encoded>
    </item>
    <item>
      <title>Linux Foundation запустила инициативу по поддержке Chromium</title>
      <link>https://tproger.ru/news/linux-foundation-zapustila-iniciativu-po-podderzhke-chromium</link>
      <comments>https://tproger.ru/news/linux-foundation-zapustila-iniciativu-po-podderzhke-chromium?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/linux-foundation-zapustila-iniciativu-po-podderzhke-chromium</guid>
      <description><![CDATA[<p>Linux Foundation запустила инициативу поддержки Chromium, объединяя разработчиков для открытого развития экосистемы браузеров</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/linux-foundation-zapustila-iniciativu-po-podderzhke-chromium">Linux Foundation запустила инициативу по поддержке Chromium</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[Google Chrome]]></category>
      <category><![CDATA[Opera]]></category>
      <category><![CDATA[Microsoft Edge]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 10 Jan 2025 11:20:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Накануне Linux Foundation <a href="https://www.zdnet.com/home-and-office/networking/the-linux-foundation-launches-an-initiative-to-support-open-source-chromium-based-browsers/">запустила</a> новую инициативу под названием «Supporters of Chromium-Based Browsers» («Поддержка браузеров на основе Chromium»).</p><p>Цель проекта — укрепить открытое развитие Chromium и стимулировать создание новых браузеров на его основе.</p><p>Chromium, запущенный в 2008 году, является основой для таких популярных браузеров, как Google Chrome, Microsoft Edge и Opera. Однако до сих пор проект оставался в основном под контролем Google.</p><h2>Задачи и структура инициативы</h2><p>Новая инициатива создаст нейтральное пространство для сотрудничества разработчиков и сообщества с открытым исходным кодом. Основные положения:</p><ul><li>Существующие проекты на основе Chromium останутся под управлением их владельцев.</li><li>Новые браузеры будут размещаться под управлением Linux Foundation.</li><li>Инициатива будет следовать открытой модели управления, вдохновлённой успешными проектами Linux Foundation.</li></ul><p>Для руководства проектом будет создан Технический консультативный комитет (TAC), который займётся поддержкой сообщества и развитием экосистемы Chromium.</p><h2>Поддержка крупных компаний</h2><p>Проект уже получил поддержку таких технологических гигантов, как Google, Microsoft и Opera. Компании пообещали финансирование и участие в разработке.</p><h2>Заявления участников</h2><ul><li>Париса Табриз, вице-президент Google по Chrome:«С поддержкой Linux Foundation мы можем создать устойчивую платформу для дальнейшего развития экосистемы Chromium».</li><li>Меган Перез, вице-президент Microsoft Edge:«Мы рады присоединиться к этой инициативе, которая укрепит сотрудничество в экосистеме Chromium».</li><li>Джим Землин, исполнительный директор Linux Foundation:«Этот проект предоставит финансирование и поддержку, необходимые для открытого развития проектов Chromium».</li></ul><h2>Изменение подхода Google</h2><p>В 2021 году Google ограничил доступ к некоторым API Chrome для браузеров на базе Chromium, что вызвало критику со стороны разработчиков.</p><p>Новая инициатива сигнализирует о более открытом подходе, возможно, связанном с антимонопольными разбирательствами против Google в США.</p><p>Если Chromium станет действительно открытым, это может устранить претензии к Google о чрезмерном контроле над экосистемой браузеров и рекламы.</p>]]></content:encoded>
    </item>
    <item>
      <title>WebVM 2.0 — полноценный Linux прямо в браузере</title>
      <link>https://tproger.ru/news/predstavlen-polnocennyj-linux-pryamo-v-brauzere---webvm-2-0</link>
      <comments>https://tproger.ru/news/predstavlen-polnocennyj-linux-pryamo-v-brauzere---webvm-2-0?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/predstavlen-polnocennyj-linux-pryamo-v-brauzere---webvm-2-0</guid>
      <description><![CDATA[<p>Разработчики из Leaning Technologies представили WebVM 2.0 — инновационное веб-окружение Linux, доступное через браузер. WebVM 2.0 позволяет запускать Linux-приложения и работать с файлами в полноценной среде без установки операционной системы</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/predstavlen-polnocennyj-linux-pryamo-v-brauzere---webvm-2-0">WebVM 2.0 — полноценный Linux прямо в браузере</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[WebAssembly]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 14 Nov 2024 09:34:41 GMT</pubDate>
      <content:encoded><![CDATA[<p>Разработчики из Leaning Technologies <a href="https://labs.leaningtech.com/blog/webvm-20">представили</a> WebVM 2.0 — полноценное окружение Linux, доступное через веб-браузер.</p><p>Новинка позволяет запускать Linux-приложения и работать с файлами в полностью функциональной среде без необходимости установки операционной системы на компьютер.</p><h2>Как работает WebVM 2.0</h2><p>WebVM 2.0 создан на базе WebAssembly, что позволяет ему использовать мощные возможности браузера для быстрой работы даже с относительно ресурсоемкими Linux-приложениями.</p><p>Веб-система запускается на стороне пользователя, что обеспечивает безопасность и производительность, так как вся обработка данных происходит локально.</p><p>WebVM 2.0 поддерживает достаточно широкий спектр утилит и приложений, доступных в Linux, включая компиляторы, редакторы и другие инструменты для разработчиков.</p><p>Пользователи могут загружать файлы, запускать программы и писать код, работая с удобным интерфейсом, похожим на традиционное терминальное окно Linux.</p><figure><img src="https://media.tproger.ru/user-uploads/98945/2024-11-14/e7754f9e-5628-4537-83fa-37571e2f00af.jpeg" alt="" /></figure><h2>Основные возможности и преимущества</h2><p>Одной из ключевых особенностей WebVM 2.0 является его доступность на любых устройствах, где есть веб-браузер — будь то ноутбук, планшет или даже смартфон.</p><p>Это делает платформу полезной для разработчиков, студентов и IT-энтузиастов, которым требуется доступ к Linux-инструментам «на ходу».</p><p>Кроме того, WebVM 2.0 не требует сложной установки или настроек, что позволяет запустить окружение буквально в пару кликов. Отличный вариант на случай, когда надо быстро протестировать код или выполнить определенные команды в Linux.</p>]]></content:encoded>
    </item>
    <item>
      <title>Функцию перевода видео с Яндекс.Браузера портировали на Google Chrome и Safari</title>
      <link>https://tproger.ru/news/--funkciyu-perevoda-video-s-yandeks-brauzera-portirovali-na-google-chrome-i-safari</link>
      <comments>https://tproger.ru/news/--funkciyu-perevoda-video-s-yandeks-brauzera-portirovali-na-google-chrome-i-safari?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/--funkciyu-perevoda-video-s-yandeks-brauzera-portirovali-na-google-chrome-i-safari</guid>
      <description><![CDATA[<p>Функция перевода видео из Яндекс.Браузера теперь доступна на Google Chrome и Safari благодаря бесплатному расширению voice-over-translation с открытым исходным кодом на GitHub</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/--funkciyu-perevoda-video-s-yandeks-brauzera-portirovali-na-google-chrome-i-safari">Функцию перевода видео с Яндекс.Браузера портировали на Google Chrome и Safari</a>»</p>]]></description>
      <category><![CDATA[Git]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Google Chrome]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[На английском языке]]></category>
      <category><![CDATA[Яндекс]]></category>
      <category><![CDATA[Английский]]></category>
      <category><![CDATA[YouTube]]></category>
      <category><![CDATA[Safari]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 08 Nov 2024 09:23:57 GMT</pubDate>
      <content:encoded><![CDATA[<p>Фанаты зарубежного контента часто сталкиваются с проблемой языкового барьера, особенно при просмотре видеороликов на английском.</p><p>Ранее популярной функцией потокового перевода видео могли похвастаться только некоторые браузеры, такие как Яндекс.Браузер.</p><p>Однако теперь аналогичное решение доступно и пользователям Google Chrome и Safari — благодаря расширению voice-over-translation, <a href="https://www.iguides.ru/main/other/kak_dobavit_perevod_videorolikov_neyrosetyami_v_safari_i_google_chrome_absolyutno_besplatno_i_v_nesk/">созданному</a> энтузиастом-разработчиком и доступному бесплатно на <a href="https://github.com/ilyhalight/voice-over-translation">GitHub</a>.</p><h2>Возможности voice-over-translation</h2><p>Расширение позволяет переводить видео в реальном времени, обеспечивая качественный русскоязычный дубляж без задержек.</p><p>С его помощью те, кто не знает английский, может получить доступ к огромному количеству обучающих и развлекательных материалов, которые раньше были недоступны из-за языкового барьера.</p><h2>Как установить voice-over-translation:</h2><ol><li><b>Откройте ваш браузер</b> — Chrome или Safari.</li><li><b>Установите менеджер скриптов</b>: для Chrome — Tampermonkey; для Safari — UserScripts.</li><li><b>Скачайте и установите скрипт voice-over-translation</b> с <a href="https://github.com/ilyhalight/voice-over-translation">GitHub</a>.</li><li><b>Откройте видеоролик на английском языке.</b></li><li><b>Активируйте перевод</b> — в окне видео появится баннер, в котором нужно нажать «Перевести».</li></ol><h2>Преимущества использования расширения</h2><ul><li><b>Быстрая установка:</b> процесс занимает всего несколько минут.</li><li><b>Совместимость:</b> работает с любыми видеоплатформами, включая YouTube и Vimeo.</li><li><b>Удобство:</b> переводы осуществляются без необходимости переключаться на другой браузер.</li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Google Chrome перешел с Manifest V2 на V3. Как это коснется вас?</title>
      <link>https://tproger.ru/news/google-chrome-perewel-s-manifest-v2-na-v3--kak-eto-kosnetsya-vas-</link>
      <comments>https://tproger.ru/news/google-chrome-perewel-s-manifest-v2-na-v3--kak-eto-kosnetsya-vas-?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/google-chrome-perewel-s-manifest-v2-na-v3--kak-eto-kosnetsya-vas-</guid>
      <description><![CDATA[<p>Google Chrome перешёл с Manifest V2 на V3, что изменит работу расширений в браузерах на базе Chromium. А значит это коснется Arc, Яндекс.Браузера и т.д</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/google-chrome-perewel-s-manifest-v2-na-v3--kak-eto-kosnetsya-vas-">Google Chrome перешел с Manifest V2 на V3. Как это коснется вас?</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Google Chrome]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 22 Oct 2024 08:04:44 GMT</pubDate>
      <content:encoded><![CDATA[<p>Google <a href="https://www.forbes.com/sites/kateoflahertyuk/2024/10/17/google-chrome-users-just-got-another-new-reason-to-switch/">начала</a> постепенное отключение расширений для Chrome, созданных на основе второй версии манифеста — файла, который декларирует правила взаимодействия браузера и дополнений.</p><h2>Что изменится в Manifest V3?</h2><p>Третья версия манифеста вносит значительные изменения в работу расширений. Они касаются не только Google Chrome, но и всех браузеров на базе Chromium, таких как Microsoft Edge, Opera, Яндекс.Браузер, Arc и других. Основные изменения следующие:</p><ol><li><b>Переход на сервис-воркеры:</b> теперь расширения работают не на основе фоновых страниц, а с использованием сервис-воркеров, которые запускаются по необходимости, а не функционируют постоянно. Это должно сделать работу браузера более эффективной.</li><li><b>Новый способ управления сетевыми запросами:</b> вместо webRequest API, который позволял гибко модифицировать и блокировать запросы, используется declarativeNetRequest. Теперь браузер сам выполняет фильтрацию, а расширения лишь предоставляют списки правил. Это ограничивает возможности блокировщиков рекламы, таких как uBlock Origin, которые использовали более 300 000 правил, тогда как новая версия позволяет задать не более 30 000.</li><li><b>Запрет на использование удалённого кода:</b> расширениям разрешается выполнять только код, включённый в пакет изначально. Это усложняет работу блокировщиков, так как обновления фильтров должны проходить модерацию в Chrome Web Store, что может занять недели.</li></ol><h2>Влияние на пользователей</h2><p>Изменения в Manifest V3 могут негативно сказаться на эффективности блокировщиков рекламы и других полезных, но давно не обновляющихся расширений.</p><p>Разработчик uBlock Origin уже выпустил облегчённую версию расширения — uBlock Origin Lite, адаптированную под новые правила, но с ограниченной функциональностью.</p><h2>Переход на Manifest V3: сроки и альтернативы</h2><p>Google начала работу над Manifest V3 ещё в 2018 году и процесс внедрения продолжается.</p><p>К июню 2025 года все версии Chrome полностью перейдут на новый манифест. Другие браузеры на основе Chromium могут иметь свои сроки перехода. Например, Vivaldi и Brave планируют сохранить поддержку MV2 дольше.</p><p>Для пользователей, желающих сохранить текущие расширения, есть несколько альтернатив: переход на Firefox или Safari, где поддержка MV2 сохраняется, или использование корпоративных политик, позволяющих временно сохранить поддержку устаревших расширений.</p>]]></content:encoded>
    </item>
    <item>
      <title>Хакеры устроили массовую атаку через... Internet Explorer и его компоненты</title>
      <link>https://tproger.ru/news/hakery-ustroili-massovuyu-ataku-cherez----internet-explorer-i-ego-komponenty</link>
      <comments>https://tproger.ru/news/hakery-ustroili-massovuyu-ataku-cherez----internet-explorer-i-ego-komponenty?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/hakery-ustroili-massovuyu-ataku-cherez----internet-explorer-i-ego-komponenty</guid>
      <description><![CDATA[<p>Северокорейская хакерская группа APT 37 воспользовалась уязвимостью «нулевого дня» в Internet Explorer для распространения вредоносного софта RokRAT среди пользователей в Южной Корее</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/hakery-ustroili-massovuyu-ataku-cherez----internet-explorer-i-ego-komponenty">Хакеры устроили массовую атаку через... Internet Explorer и его компоненты</a>»</p>]]></description>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[Хакеры]]></category>
      <category><![CDATA[Уязвимость]]></category>
      <category><![CDATA[Microsoft Edge]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 17 Oct 2024 06:32:04 GMT</pubDate>
      <content:encoded><![CDATA[<p>Хотя Internet Explorer был отключен еще в прошлом году, это не помешало северокорейским хакерам использовать его для атак на пользователей.</p><p>Исследователи из AhnLab <a href="https://uk.pcmag.com/security/154910/north-korean-hackers-exploit-supposedly-dead-internet-explorer-to-attack-users?_gl=1*1xj9huu*_up*MQ..*_ga*MTcyOTc2Mjc1Ni4xNzI5MTM3ODI2*_ga_8TEVGCYPY5*MTcyOTEzNzgyNi4xLjAuMTcyOTEzNzgyNi4wLjAuMA..">выяснили</a>, что злоумышленники воспользовались неизвестной ранее уязвимостью в Internet Explorer для распространения вредоносного ПО среди пользователей в Южной Корее.</p><h2>Как была осуществлена атака</h2><p>В мае хакерская группа APT 37 (или ScarCruft) воспользовалась уязвимостью «нулевого дня» в Internet Explorer, чтобы запустить масштабную атаку.</p><p>Они скомпрометировали сервер южнокорейской рекламной компании, что позволило загружать вредоносный код через всплывающие рекламные окна. Вредоносная программа загружалась без участия пользователя, что делало атаку особенно опасной.</p><h2>Уязвимость через компоненты Internet Explorer</h2><p>Несмотря на то, что Internet Explorer отключен на большинстве ПК с Windows, его компоненты всё ещё можно найти в режиме IE, встроенном в Microsoft Edge, и в сторонних модулях.</p><p>Это дает хакерам возможность эксплуатировать устаревший браузер.</p><p>Злоумышленники использовали факт того, что многие пользователи в Южной Корее устанавливают бесплатное ПО с рекламными модулями, что в конечном итоге и давало возможность злоупотреблять компонентами Internet Explorer.</p><figure><img src="https://media.tproger.ru/user-uploads/98945/2024-10-17/aef3640d-f786-4832-8348-a64e5637f99f.png" alt="" /></figure><h2>Опасность устаревших технологий</h2><p>Сообщается, что хакеры использовали уязвимость для доставки RokRAT — вредоносного софта, который может выполнять удаленные команды и похищать данные с компьютера жертвы.</p><p>Microsoft уже выпустила патч для устранения этой уязвимости в августе, однако остаётся риск, что злоумышленники смогут найти другие способы эксплуатации компонентов Internet Explorer.</p><p>Этот инцидент подчёркивает, что даже устаревшие браузеры могут оставаться источником угроз для пользователей.</p>]]></content:encoded>
    </item>
    <item>
      <title>Firefox 128 передает данные пользователей рекламодателям. Как отключить нововведение?</title>
      <link>https://tproger.ru/news/firefox-128-peredaet-dannye-polzovatelej-reklamodatelyam--kak-otklyuchit-novovvedenie-</link>
      <comments>https://tproger.ru/news/firefox-128-peredaet-dannye-polzovatelej-reklamodatelyam--kak-otklyuchit-novovvedenie-?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/firefox-128-peredaet-dannye-polzovatelej-reklamodatelyam--kak-otklyuchit-novovvedenie-</guid>
      <description><![CDATA[<p>Mozilla многие годы строила свою репутацию на том, что была категорически против слежки за пользователями в сети. Но что-то пошло не так</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/firefox-128-peredaet-dannye-polzovatelej-reklamodatelyam--kak-otklyuchit-novovvedenie-">Firefox 128 передает данные пользователей рекламодателям. Как отключить нововведение?</a>»</p>]]></description>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Firefox]]></category>
      <category><![CDATA[Mozilla]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 17 Jul 2024 07:11:17 GMT</pubDate>
      <content:encoded><![CDATA[<p>В Mozilla Firefox 128 внедрили новую экспериментальную технологию IPA (Interoperable Private Attribution). Она позволяет рекламодателям оценивать эффективность своих кампаний на основе действий пользователей.</p><p>По словам разработчиков технологии, она призвана обеспечить приватность, используя криптографические механизмы дифференциальной приватности и многосторонних конфиденциальных вычислений.</p><h2>Цели и особенности IPA</h2><p>IPA позволяет обрабатывать статистические данные без раскрытия информации о конкретных пользователях.</p><p>Веб-сайты, браузеры и рекламодатели получают лишь агрегированные данные, что уменьшает риск утечки персональной информации.</p><p>Это нововведение было внедрено с целью предложить рекламодателям альтернативу слежке за пользователями, что часто происходит в попытке увеличить доходы.</p><h2>Реакция пользователей</h2><p>Не все пользователи встретили это нововведение положительно. Многие опасаются, что даже с такими мерами конфиденциальности рекламодатели могут найти способы злоупотребления системой.</p><p>Некоторые пользователи выражают мнение, что реклама в интернете достигла уровня, когда её объем и навязчивость значительно влияют на психическое здоровье людей.</p><h2>Как отключить IPA в Firefox 128</h2><p>Функция включена по умолчанию, но её можно деактивировать следующим образом:</p><ol><li>Откройте меню Firefox, нажав на значок ≡.</li><li>Перейдите в раздел «Настройки».<br /></li><li>Выберите вкладку «Приватность и защита».<br /></li><li>Найдите опцию «Разрешить веб-сайтам проводить измерение рекламы с сохранением приватности» и отключите её.<br /></li></ol><h2>Дополнительные нововведения в Firefox 128</h2><p>Кроме интеграции IPA, в Firefox 128 был добавлен инструмент Firefox Translation, который теперь умеет переводить отдельные фрагменты текста на странице.</p><p>Также улучшен дизайн окна для очистки данных об использовании браузера.</p>]]></content:encoded>
    </item>
    <item>
      <title>Обновляйте Google Chrome осторожно. Хакеры все чаще взламывают пользователей через обновление браузеров</title>
      <link>https://tproger.ru/news/obnovlyajte-google-chrome-ostorozhno--hakery-vse-chashhe-vzlamyvayut-polzovatelej-cherez-obnovlenie-brauzerov</link>
      <comments>https://tproger.ru/news/obnovlyajte-google-chrome-ostorozhno--hakery-vse-chashhe-vzlamyvayut-polzovatelej-cherez-obnovlenie-brauzerov?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/obnovlyajte-google-chrome-ostorozhno--hakery-vse-chashhe-vzlamyvayut-polzovatelej-cherez-obnovlenie-brauzerov</guid>
      <description><![CDATA[<p>Свежее исследование экспертов показывает, что злоумышленники стали все чаще использовать обновление браузеров для взлома пользователей</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/obnovlyajte-google-chrome-ostorozhno--hakery-vse-chashhe-vzlamyvayut-polzovatelej-cherez-obnovlenie-brauzerov">Обновляйте Google Chrome осторожно. Хакеры все чаще взламывают пользователей через обновление браузеров</a>»</p>]]></description>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Хакеры]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 03 Jun 2024 10:17:11 GMT</pubDate>
      <content:encoded><![CDATA[<p>В последнее время всё чаще используют фальшивые обновления браузеров для распространения вредоносного ПО, такого как BitRAT и Lumma Stealer (также известный как LummaC2).</p><p>Эти вирусы маскируются под официальные обновления, что делает их особенно коварными и опасными.</p><h2>Механизм атаки</h2><p>Согласно отчету компании eSentire, фальшивые обновления браузеров стали популярным методом для заражения компьютеров пользователей.</p><p>Один из них начинается с посещения зараженного веб-сайта, который перенаправляет пользователя на поддельную страницу обновления браузера.</p><p>Эта страница, как правило, предлагает загрузить ZIP-архив, содержащий вредоносное ПО.</p><h2>Пример атаки</h2><p>На поддельной странице обновления браузера (например, chatgpt-app[.]cloud) пользователь видит ссылку на скачивание файла Update.zip.</p><p>Этот файл, размещенный на Discord, автоматически загружается на устройство пользователя. В архиве содержится JavaScript-файл (Update.js), который запускает выполнение PowerShell-скриптов, загружающих дополнительные полезные нагрузки с удаленного сервера в виде файлов PNG.</p><h2>Распространение через Discord</h2><p>Анализ компании Bitdefender выявил более 50 000 опасных ссылок в Discord, которые распространяли вредоносное ПО, фишинг-кампании и спам только за последние шесть месяцев.</p><h2>Вредоносные программы</h2><ul><li><b>BitRAT</b>: Многофункциональный троян удаленного доступа, позволяющий атакующим собирать данные, добывать криптовалюту, загружать дополнительные бинарные файлы и удаленно управлять зараженными устройствами.</li><li><b>Lumma Stealer</b>: Доступен за $250-1000 в месяц и может захватывать информацию из веб-браузеров, криптокошельков и других источников.<br /></li></ul><h2>Постоянство и загрузчик</h2><p>PowerShell-скрипты обеспечивают постоянство вредоносного ПО на устройстве и запускают загрузчик на базе .NET, который используется для выполнения конечного этапа вредоносной программы. Загрузчик рекламируется как «сервис доставки вредоносного ПО», что позволяет распространять как BitRAT, так и Lumma Stealer.</p><h2>Рекомендации по безопасности</h2><p>Специалисты по кибербезопасности рекомендуют пользователям:</p><ul><li>Проверять подлинность уведомлений об обновлениях.</li><li>Скачивать апдейты только из доверенных источников.<br /></li><li>Быть внимательными к подозрительным ссылкам и сообщениям.<br /></li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Google Chrome начнет защищать от фишинга и вирусов в реальном времени</title>
      <link>https://tproger.ru/news/google-chrome-nachnet-zashhishhat-ot-fiwinga-i-virusov-v-realnom-vremeni</link>
      <comments>https://tproger.ru/news/google-chrome-nachnet-zashhishhat-ot-fiwinga-i-virusov-v-realnom-vremeni?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/google-chrome-nachnet-zashhishhat-ot-fiwinga-i-virusov-v-realnom-vremeni</guid>
      <description><![CDATA[<p>Google добавила в Chrome огромное количество улучшений, так или иначе завязанных на «прокачке» безопасности браузера. На всех платформах</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/google-chrome-nachnet-zashhishhat-ot-fiwinga-i-virusov-v-realnom-vremeni">Google Chrome начнет защищать от фишинга и вирусов в реальном времени</a>»</p>]]></description>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Google Chrome]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 15 Mar 2024 12:36:38 GMT</pubDate>
      <content:encoded><![CDATA[<p>Надоели фишинговые сайты, которые воруют пароли и подсовывают вирусы? Google объявила войну злодеям в интернете, внедрив крутые фишки в свой браузер Chrome.</p><h2>Что за фишки?</h2><h3>Защита от вирусов и фишинга теперь в реальном времени.</h3><p>Раньше Chrome сравнивал адрес сайта со списком опасных, который обновлялся раз в полчаса. А мошенники наловчились создавать левые сайты на пару минут, успевая делать гадости.</p><p>Сейчас же Chrome мгновенно сверяется с базой Google, где хранится инфа о «плохих» сайтах. Результат: на 25% больше заблокированных мошеннических страниц.</p><p>При этом, что важно, ваши данные при этом никто не видит. Google обещает, что вся проверка происходит анонимно и безопасно. Обновление вот-вот появится в Chrome для компьютеров и iOS. А в течение месяца еще и на Android.</p><figure><img src="https://media.tproger.ru/user-uploads/98945/2024-03-15/2de364a6-bf33-4812-ab97-13a2ca8b1a19.png" alt="" /></figure><h3>Enhanced Protection</h3><p>Вместе с тем в браузере появится режим «супер-защиты» — <b>Enhanced Protection</b>. Он еще умнее, сканирует файлы на вирусы и даже ругает вредные расширения для Chrome.</p><h3>Не забыли в Google и про пароли</h3><p>Chrome на iOS теперь проверяет пароли не только на утечки, но и на слабые или одинаковые (которые вы используете на разных сайтах).</p><figure><img src="https://media.tproger.ru/user-uploads/98945/2024-03-15/963d9e18-4222-4530-83e0-6167063e5e17.png" alt="" /></figure><h2>Как включить всё это добро?</h2><p>Новые фишки включатся сами. Но если хотите проверить:</p><ul><li>Открываем Chrome</li><li>Идем в Настройки<br /></li><li>Жмем «Проверка безопасности» и смотрим, чтобы защита была включена.<br /></li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Новые фичи Яндекс.Браузера</title>
      <link>https://tproger.ru/news/novye-fichi-yandeks-brauzera</link>
      <comments>https://tproger.ru/news/novye-fichi-yandeks-brauzera?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Ирина Тюльпакова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/novye-fichi-yandeks-brauzera</guid>
      <description><![CDATA[<p>Редактирование текстов, перевод с озвучкой и саммари видео — новые нейронки в Яндекс.Браузере.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/novye-fichi-yandeks-brauzera">Новые фичи Яндекс.Браузера</a>»</p>]]></description>
      <category><![CDATA[Нейронные сети]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Яндекс]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 13 Feb 2024 15:20:13 GMT</pubDate>
      <content:encoded><![CDATA[<p><b>Во-первых</b>, Яндекс.Браузер научился работать с текстом.</p><figure><img src="https://media.tproger.ru/user-uploads/88534/2024-02-13/aac9466f-a849-4e25-ab32-3d4cf5278973.png" alt="" /><figcaption>Скриншот взят с официального сайта Яндекс.Браузера</figcaption></figure><p>Работать фича будет просто: соответствующая кнопка будет всплывать в контекстном меню (чтобы его включить, зайдите в Настройки -&gt; Инструменты -&gt; Контекстное меню). Иначе, пользуйтесь горячими клавишами:</p><ul><li>Alt + R — исправить ошибки;</li><li>Alt + U — улучшить;</li><li>Alt + Y — сократить (работает для текстов от 100 символов).</li></ul><p><b>Во-вторых</b>, браузер научился пересказывать текстовое содержимое страниц (раньше он обрабатывал только видео).</p><figure><img src="https://media.tproger.ru/user-uploads/88534/2024-02-13/a6a60cf2-cd4c-4143-9155-187ac50c444a.png" alt="" /><figcaption>У некоторых такая кнопка может выглядеть как четыре точки рядом с поисковой строкой</figcaption></figure><p>Пересказ можно скопировать, попросить зачитать или сгенерировать на него ссылку. Видеопереводы тоже обновили: добавили корейский и японский языки.</p><p><b>Ну и по мелочи</b>: Алиса научилась генерировать картинки по пользовательскому запросу (скорее всего, к ней привязали яндексовский Шедеврум). А чтобы перейти по QR-коду из видео, телефон больше не потребуется — браузер сам обнаружит код в видеопотоке. И предложит либо скопировать ссылку, либо сразу по ней перейти.</p>]]></content:encoded>
    </item>
    <item>
      <title>Google Chrome тестирует предпросмотр ссылок</title>
      <link>https://tproger.ru/news/google-chrome-testiruet-predprosmotr-ssylok</link>
      <comments>https://tproger.ru/news/google-chrome-testiruet-predprosmotr-ssylok?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дух айтишной эмо школы]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/google-chrome-testiruet-predprosmotr-ssylok</guid>
      <description><![CDATA[<p>В Google тестируют функцию для Chrome, которая позволит просматривать содержимое сайтов по наведению мыши на гиперссылку через popup-окошко.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/google-chrome-testiruet-predprosmotr-ssylok">Google Chrome тестирует предпросмотр ссылок</a>»</p>]]></description>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Google Chrome]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 26 Jul 2023 09:01:05 GMT</pubDate>
      <content:encoded><![CDATA[<p>В Google тестируют новую функцию для Chrome, которая позволит просматривать содержимое веб-сайтов по наведению мыши на гиперссылку. Предпросмотр работает как маленькое popup-окошко.</p><p>Функцию планируют добавить в Google Chrome, чтобы предотвратить переходы на вредоносные сайты и сократить количество используемых данных, чтобы пользователи не подгружали нежелательный контент.</p><p>Также предварительный просмотр можно будет открыть в боковом меню браузера или в новой вкладке.</p><figure><img src="https://media.tproger.ru/uploads/2023/07/e610df83-dcf5-4657-adb7-d3659475e6b6.png" alt="" /></figure><p>Идею назвали «Эфемерными окном и вкладками». Она будет выглядеть примерно так же, как работает предпросмотр вкладок в мобильном браузере.</p>]]></content:encoded>
    </item>
    <item>
      <title>Вышла stable-версия браузера Opera One с GPT-ботом Aria для Windows, Mac и Linux</title>
      <link>https://tproger.ru/news/vywla-stable-versiya-brauzera-opera-one-s-gpt-botom-aria-dlya-windows-mac-i-linux</link>
      <comments>https://tproger.ru/news/vywla-stable-versiya-brauzera-opera-one-s-gpt-botom-aria-dlya-windows-mac-i-linux?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дух айтишной эмо школы]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/vywla-stable-versiya-brauzera-opera-one-s-gpt-botom-aria-dlya-windows-mac-i-linux</guid>
      <description><![CDATA[<p>Opera анонсировала выпуск первой стабильной версии браузера Opera One, в который был встроен чат-бот Aria на базе GPT.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/vywla-stable-versiya-brauzera-opera-one-s-gpt-botom-aria-dlya-windows-mac-i-linux">Вышла stable-версия браузера Opera One с GPT-ботом Aria для Windows, Mac и Linux</a>»</p>]]></description>
      <category><![CDATA[Нейронные сети]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Opera]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 20 Jun 2023 11:14:25 GMT</pubDate>
      <content:encoded><![CDATA[<p>Opera анонсировала выпуск первой стабильной версии браузера Opera One, в который был встроен чат-бот Aria на базе GPT-модели. Браузер доступен для трёх ОС: Windows, Linux и MasOS.</p><p>Opera One основана на движке Chromium. В браузере был полностью переработан дизайн, который теперь стал модульным.</p><p>Раньше обработка анимаций приводила к подвисаниям браузера. В Opera One эту проблему решили при помощи многопоточного компоновщика, и в Opera обещают, что браузер справляется с нагрузками при отрисовке страниц безо всяких проблем.</p><p>Собственный ИИ Opera полностью интегрирован в Opera One как в версии для ПК, так и для Android-приложения. Чат-бот Aria полностью бесплатный, он обучен на актуальной информации и доступен в 180 странах.</p><figure><img src="https://media.tproger.ru/uploads/2023/06/e9f38d35-6a26-4772-b52d-180f491dfda8.png" alt="" /></figure><p>Также в Opera One с помощью ИИ комбинируются вкладки. Также в боковой панели предлагаются сайты для веб-серфинга, актуальность которых также определяется при помощи ИИ.</p><p>Кроме того, Opera One предлагает встроенные VPN и блокировщик рекламы. Они абсолютно бесплатны.</p><figure><img src="https://media.tproger.ru/uploads/2023/06/81bebd9c-ae2e-4f64-b796-47fc2da177ad.png" alt="" /></figure>]]></content:encoded>
    </item>
    <item>
      <title>Opera показала новый браузер — One</title>
      <link>https://tproger.ru/news/opera-pokazala-novyj-brauzer-one</link>
      <comments>https://tproger.ru/news/opera-pokazala-novyj-brauzer-one?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Павел Федоренко]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/opera-pokazala-novyj-brauzer-one</guid>
      <description><![CDATA[<p>Opera показала раннюю версию своего нового браузера One с нейросетевыми инструментами. Планируется, что он заменит текущий браузер.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/opera-pokazala-novyj-brauzer-one">Opera показала новый браузер — One</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Opera]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 25 Apr 2023 10:55:14 GMT</pubDate>
      <content:encoded><![CDATA[<p>Opera показала раннюю версию своего нового браузера One. Планируется, что он заменит текущий браузер.</p><p>В новом браузере показали новый дизайн с модульной архитектурой, кучей анимаций и автоматической группировкой вкладок.</p><figure><img src="https://media.tproger.ru/uploads/2023/04/bf16d229-eb0d-4caa-9e69-1c9734f3fe3d.jpeg" alt="" /><figcaption>Обновлённый вид браузера One от Opera</figcaption></figure><p>Браузер будет сам группировать открытые сайты на основе того, что находится на странице. Но пользователи смогут группировать свои «острова» и вручную.</p><p>Вот как будут работать «острова».</p><p>Разработчики задались целью разгрузить главную страницу, чтобы пользователю мог проще было интегрировать в своё рабочее пространство новые функции и расширения.</p><p>В новом браузере компания делает упор для  ИИ-помощников: в Opera One добавили боковую панель для чат-ботов. Первыми туда интегрируют ChatGPT и ChatSonic.</p><p>Пока <a href="https://www.opera.com/ru/computer/thanks?ni=developer">доступна</a> только ранняя версия для разработчиков. Но совсем скоро обещают выпустить полноценную версию для всех популярных платформ.</p><p>Опрос: Как вам новый браузер от Opera? Перешли бы на Opera One, когда выйдет полноценный релиз?</p>]]></content:encoded>
    </item>
    <item>
      <title>Как запустить мобильное приложение за две недели с помощью PWA</title>
      <link>https://tproger.ru/articles/kak-zapustit-mobilnoe-prilozhenie-za-tri-nedeli-s-pomoshhju-pwa</link>
      <comments>https://tproger.ru/articles/kak-zapustit-mobilnoe-prilozhenie-za-tri-nedeli-s-pomoshhju-pwa?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[AFFINAGE DIGITAL]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-zapustit-mobilnoe-prilozhenie-za-tri-nedeli-s-pomoshhju-pwa</guid>
      <description><![CDATA[<p>Зачем нужны PWA-приложения, есть ли у них ограничения и как интегрировать прогрессивное веб-приложение в сайт.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-zapustit-mobilnoe-prilozhenie-za-tri-nedeli-s-pomoshhju-pwa">Как запустить мобильное приложение за две недели с помощью PWA</a>»</p>]]></description>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Фронтенд]]></category>
      <category><![CDATA[Приложение]]></category>
      <category><![CDATA[Гостевая публикация]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 10 Aug 2022 07:32:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Frontend-разработчик AFFINAGE Никита Воробьев рассказывает, какие задачи решают PWA-приложения, есть ли у них ограничения и почему Frontend-разработчики справляются с PWA-разработкой лучше других. В конце материала — инструкция по интеграции прогрессивного веб-приложения в сайт.</p><p>PWA — промежуточная технология между сайтами и нативными мобильными приложениями. По сути, это «прокачанная» копия веб-сайта, размещенная на устройстве пользователя и не требующая отдельной разработки для iOS или Android.</p><p></p><p>«Прогрессивное web-приложение (англ. progressive web app, PWA) — технология в web-разработке, которая визуально и функционально трансформирует сайт в приложение (мобильное приложение в браузере)»</p><p></p><p>Так описывается технология в Wikipedia, но нам этого мало, так что давайте подробнее разберем, что это такое.</p><figure><img src="https://media.tproger.ru/uploads/2022/08/image4.png" alt="" /></figure><p>PWA-приложение не нужно отдельно разрабатывать для iOS и Android: оно устанавливается на главный экран смартфона, — для этого нужно заложить технологическую базу на этапе Frontend-разработки. Можно сказать, что PWA — это сайты с расширенной функциональностью, которая позволяет им быть похожими на нативные мобильные приложения.</p><p>Работают эти приложения так же, как и обычные мобильные приложения: показывают Push-уведомления, работают в автономном офлайн-режиме, сохраняют данные локально. По внешнему виду они ничем не отличаются от нативных приложений и могут размещать иконку на рабочем столе (домашнем экране) для быстрого запуска.</p><p>PWA, как обычные сайты, размещаются на доменах с https-шифрованием. Таким образом поддерживается уникальность приложений, поскольку не бывает двух одинаковых доменов.</p><p><b>Задачи, которые решает PWA:</b></p><ul><li>Стимулировать повторные продажи.</li><li>Возвращать клиентов компании в одно нажатие на экране телефона.</li><li>Повышать узнаваемость бренда. Иконка с логотипом компании всегда на виду на рабочем столе у пользователя.</li><li>Повышать средний чек сделки, допродавая продукты при помощи Push-уведомлений.</li><li>Оставаться на связи с клиентом: показывать Push-уведомления о том, что товар прибыл в пункт самовывоза или будет доставлен сегодня.</li><li>Экономить на рекламе. Не нужно настраивать догоняющую рекламу с новой акцией, достаточно отправить уведомление для текущих клиентов.</li><li>Избавиться от конкуренции в поисковой выдаче. Пользователи возвращаются через приложение, в котором нет конкурентов, в отличии от поисковой выдачи.</li></ul><p>Однако любую из этих задач может решить и нативное мобильное приложение, так что в случае с PWA-разработкой можно поставить знак равенства между PWA Frontend developer и Mobile developer, поскольку они решают одни и те же задачи.</p><h2>История PWA</h2><p>Технология была <a href="https://docs.microsoft.com/en-us/previous-versions//ms536496(v=vs.85)?redirectedfrom=MSDN">создана</a> компанией Microsoft еще в 2000 году. В 2007 сотрудники Apple <a href="https://www.apple.com/newsroom/2007/06/11iPhone-to-Support-Third-Party-Web-2-0-Applications/">разработали</a> свой вариант HTML-приложений.</p><p>Изначально приложения для оригинального iPhone разрабатывались именно на платформе web. Однако успеха технология не сыскала по причине скудного UX, и в скором времени появился App Store, который по факту отложил развитие PWA.</p><p>Ожила и приобрела широкую известность технология только в 2015 году благодаря расширению возможностей браузера Google Chrome и продвижению Service Worker и Web App Manifest. Тогда же дизайнер Фрэнсис Берримэн и инженер Google Chrome Алекс Рассел <a href="https://medium.com/@slightlylate/progressive-apps-escaping-tabs-without-losing-our-soul-3b93a8561955">придумали</a> термин PWA.</p><p>Затем поддержку прогрессивного веб-приложения начали добавлять во все браузеры и операционные системы. К примеру, в Windows, начиная с 10 версии, появилась возможность распространения PWA через Microsoft Store.</p><p>Но все же основная причина развития данной технологии — привлечение и удержание мобильного трафика: так, в России мобильный трафик по итогам 2021 года <a href="https://www.cnews.ru/news/line/2022-01-24_dolya_mobilnogo_trafika">составил</a> рекордные 83%.</p><h2>Примеры PWA</h2><p>Существует огромное множество прогрессивных веб-приложений — Telegram, Pinterest, Tinder, Starbucks.</p><figure><img src="https://media.tproger.ru/uploads/2022/08/image12-autoconverted.jpeg" alt="" /></figure><p>Появились и отдельные сайты-каталоги PWA, например <a href="https://appsco.pe/">appsco.pe</a> и <a href="https://www.findpwa.com/">findpwa.com</a>. Другие ресурсы для тех, кто интересуется разработкой прогрессивных веб-приложений — <a href="https://www.pwastats.com/">pwastats.com</a> и <a href="https://web.dev/tags/case-study/">web.dev</a>, раздел Case Study.</p><p>На этих сайтах можно прочитать про множество успешных кейсов применения PWA с цифрами и с результатами. Один из примеров — как Starbucks смогли в два раза <a href="https://www.pwastats.com/2020/02/starbucks/">увеличить</a> количество ежедневных пользователей.</p><h2>Структура PWA</h2><p>Чаще всего PWA состоит из Service Workers, Application Manifest, Офлайн-кэширования, различных PWA-технологий, адаптивного дизайна, фоновой синхронизации, Push-уведомлений, Media API и Geolocation API.</p><figure><img src="https://media.tproger.ru/uploads/2022/08/image3-autoconverted.jpeg" alt="" /><figcaption>Пример структуры PWA</figcaption></figure><p>Модификаций структуры множество, однако минимальные требования для работы PWA — это:</p><ul><li>Валидное и защищенное HTTPS-подключение (у домена должен быть установлен SSL-сертификат).</li><li>Успешно установленный файл Service Worker`а.</li><li>Правильно установленный и валидный JSON-файл манифеста.</li></ul><p>Любой сайт можно дополнить данными составляющими и тем самым получить прогрессивное веб-приложение.</p><h3>Service Worker</h3><p>«Сердце» PWA — Service Worker. Это проксирующий слой между фронтэндом и бэкэндом, находящийся в браузере. Все запросы браузера идут через него.</p><p>Из хранилищ у Service Worker’a есть доступ к Cache-хранилищу для web-ресурсов, и IndexDB для данных. Но, самое главное, — полная свобода для реализации бизнес-логики.</p><p>С точки зрения написания кода, Service Worker представляет собой Javascript-файл. В нем разработчик определяет логику работы с приходящими из фронтэнда запросами и другую функциональность.</p><figure><img src="https://media.tproger.ru/uploads/2022/08/image7.png" alt="" /></figure><h3>Web App manifest</h3><p>Web App manifest — JSON-файл, декларативно определяющий для браузера название приложения, иконку, как будет выглядеть PWA (fullscreen, standalone и другие варианты отображения) и некоторые другие параметры. Позволяет «установить» PWA как отдельное приложение на домашний экран смартфона.</p><h2>Технические особенности PWA</h2><h3>Способы установки PWA</h3><p>Существует три способа установки PWA: при помощи автоматического уведомления, через «…» (три точки) в меню браузера, при клике на кнопку установки на странице.</p><figure><img src="https://media.tproger.ru/uploads/2022/08/image6-autoconverted.jpeg" alt="" /></figure><p>Так выглядит установка с помощью автоматического уведомления</p><figure><img src="https://media.tproger.ru/uploads/2022/08/image2-autoconverted.jpeg" alt="" /></figure><p>Пример установки через «…» (три точки) в меню браузера</p><figure><img src="https://media.tproger.ru/uploads/2022/08/image10-autoconverted-1.jpeg" alt="" /><figcaption>Пример установки при клике на кнопку установки на странице</figcaption></figure><h3>Отображение PWA</h3><p>PWA работают на базе WebView, который предоставляют браузеры. WebView очень популярный способ для отображения интерфейсов.</p><p>Браузер, который будет открывать PWA после установки приложения, определяется операционной системой iOS или Android.</p><p>Для Android используется Google Chrome, а для iOS — Safari.</p><p>Очень упрощенно можно сказать, что PWA открывается во вкладке браузера, но без интерфейса самого браузера. Однако мы можем отображать интерфейс браузера, если нам это необходимо.</p><figure><img src="https://media.tproger.ru/uploads/2022/08/image1-autoconverted.jpeg" alt="" /><figcaption>Варианты отображения PWA</figcaption></figure><h3>Поддержка PWA</h3><p>По данным caniuse.com, 94% устройств пользователей поддерживают service workers, возможность установки на домашний экран есть у 87% пользователей.</p><h3>Функциональность PWA</h3><p>PWA поддерживает множество способов взаимодействия с аппаратной частью телефона.</p><p>Такие функции как доступ к контактам пользователя, NFC, считывание QR, поддержка AR/VR пока недоступны, но в ближайшее время их должны добавить.</p><p>Подробнее обо всех функциях с примерами кода можно узнать на сайте <a href="https://whatpwacando.today/">whatpwacando.today</a>.</p><figure><img src="https://media.tproger.ru/uploads/2022/08/image5-autoconverted.jpeg" alt="" /></figure><h2>Фреймворки и библиотеки</h2><p>Для PWA необходимо только два файла — Service Worker и Web App manifest, — поэтому для разработки подойдут все актуальные реактивные фреймворки. Для каждого из них есть плагин, который добавляет предустановленный файл манифеста, предустановленный файл service worker’a и дополнительную функциональность.</p><p>Также есть фреймворки конкретно для работы с PWA:</p><ul><li><a href="https://www.reactpwa.com/">React PWA Library</a></li><li><a href="https://angular.io/guide/service-worker-intro">Angular PWA Framework</a></li><li><a href="https://cli.vuejs.org/ru/core-plugins/pwa.html">Vue PWA Framework</a></li><li><a href="https://ionic.io/pwa">Ionic PWA Framework</a></li><li><a href="https://blog.logrocket.com/building-a-pwa-with-svelte/">Svelte PWA Framework</a></li></ul><h2>PWA Builder</h2><p>С его помощью можно легко разработать прогрессивное веб-приложение и сгенерировать пакеты из PWA для размещения приложения в различных сторах. При этом нужно учесть, что размещение в AppStore на данный момент считается экспериментальной фичей и работает не всегда корректно.</p><h2>Отличительные качества PWA</h2><h3>Ограниченный доступ к аппаратной части</h3><p>К недостаткам PWA можно отнести ограниченный доступ к аппаратной части мобильного устройства.</p><p>Поскольку прогрессивные веб-приложения запускаются в браузере, они не имеют прямого доступа ко всем возможностям платформы (операционной системы и аппаратным возможностям), к которым имело бы доступ нативное приложение, созданное с использованием SDK-платформы.</p><p>Но поддержка и возможности постоянно развиваются и имеющейся на данный момент функциональности достаточно для реализация большинства задач.</p><h3>Установка в обход магазинов приложений</h3><p>PWA, хоть и можно добавить в сторы, но их дефолтный способ установки — через браузер, т.е. они устанавливаются в обход сторов.</p><p>Это огромный плюс, т.к. в таком случае не приходится связываться с политикой проверки магазинов перед публикацией приложения. Но это относительно натянутый факт, так как и на андроид можно апк-файл скачать в обход стора. ?</p><h3>Фоновая установка обновлений</h3><p>Больше не нужно заставлять пользователей устанавливать обновления. Когда вы выпускаете новую версию своего приложения, все ваши пользователи автоматически получают новую версию.</p><p>Вы также можете предупреждать пользователей об изменениях. Достигается это с помощью системы кэширования файлов приложения. Разработчики могут отследить изменения между файлами на устройстве пользователя и файлами на домене.</p><h3>Меньший размер приложения</h3><p>Размер PWA-приложения, как правило, не превышает 1-3 мегабайт. Это меньше, чем мобильное приложение. Средний размер мобильного приложений, по данным 2017 года, 38 Мб для iOS и 15 Мб для Android.</p><figure><img src="https://media.tproger.ru/uploads/2022/08/image8-autoconverted.jpeg" alt="" /></figure><h3>Меньшие затраты на разработчиков</h3><p>Для компаний, бизнеса разработка и поддержка PWA финансово выгоднее.</p><figure><img src="https://media.tproger.ru/uploads/2022/08/image9-autoconverted.jpeg" alt="" /><figcaption>rabota.ru Q1 2022</figcaption></figure><p>В общем, PWA имеет свои отличительные особенности и недостатки.</p><figure><img src="https://media.tproger.ru/uploads/2022/08/image11-autoconverted.jpeg" alt="" /><figcaption>Таблица особенностей PWA и нативных приложений</figcaption></figure><p>В связи с ограничениями аппаратной части, <b>PWA не может полностью заменить нативные приложения</b>, но четыре ключевые функции PWA-приложений закрывают потребности 90% мобильных пользователей:</p><ul><li>Отправка Push-уведомлений, чтобы вернуть пользователей.</li><li>Установка иконки на домашний экран, чтобы дать пользователям быстрый доступ к приложению.</li><li>Доступ к некоторым нативным аппаратным функциям, например, камеры, микрофона.</li><li>Возможность работы офлайн.</li></ul><p><b>Мы рекомендуем разрабатывать PWA-приложения когда нужно:</b></p><ul><li>Повысить удовлетворенность и вовлеченность клиентов/пользователей, например, дать пользователям быстрый доступ к повторным заказам.</li><li>Протестировать гипотезу с минимальными финансовыми вложениями: прежде чем вкладывать в разработку нативного приложения, можно протестировать на PWA.</li><li>Сделать кроссплатформенную совместимость в сжатые сроки</li><li>Предложить аудитории новый канал взаимодействия с компанией.</li></ul><h2>Как интегрировать PWA в сайт: инструкция для начинающих</h2><p>Собрали полезные ресурсы, которые помогут разработать и запустить прогрессивное веб-приложение на любом стеке.</p><p><b>1. Добавить файлы manifest и serviceworker</b></p><ul><li><a href="https://pwa-workshop.js.org/1-manifest/">Инструкция</a> по добавлению файла manifest в проект. Пояснение по полям файла,</li><li><a href="https://app-manifest.firebaseapp.com/">Ресурс</a> для генерации файла manifest.</li><li><a href="https://developer.mozilla.org/en-US/docs/Web/Manifest">Документация</a> по manifest от разработчиков Mozilla. Примеры файла manifest, пояснение по полям, совместимость с браузерами.</li><li><a href="https://pwa-workshop.js.org/2-service-worker/">Инструкция</a> по добавлению файла serviceworker, его регистрация, жизненный цикл.</li><li><a href="https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers">Документация</a> по serviceworker от разработчиков Mozilla. Примеры файла, архитектура, жизненный цикл, кеширование, запросы.</li></ul><p><b>2. Подключить и настроить библиотеки workbox</b></p><ul><li><a href="https://developer.chrome.com/docs/workbox/the-ways-of-workbox/">Документация</a> по всем способам и вариациям подключения workbox.</li><li>Все возможные фреймворки и библиотеки, <a href="https://developer.chrome.com/docs/workbox/framework-integrations/">интегрированные</a> с workbox.</li></ul><p><b>3. Добавить кнопки на сайте для установки приложения</b></p><ul><li><a href="https://web.dev/customize-install/">Инструкция</a> по добавлению кнопки установки приложения.</li><li><a href="https://javascript.plainenglish.io/creating-a-browser-agnostic-pwa-install-button-41039f312fbe">Инструкция</a> по добавлению кнопки установки приложения.</li></ul><p><b>4. Запросить разрешения на отправку push-уведомлений</b></p><ul><li><a href="https://web.dev/notifications/">Документация</a> о push-уведомлениях со всеми тонкостями.</li><li><a href="https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Re-engageable_Notifications_Push">Инструкция</a> от разработчиков Mozilla по добавлению push-уведомлений.</li></ul><p>Последующие пункты необязательны, но могут пригодиться для дополнительных этапов интеграции.</p><p><b>5. Настроить различные стратегии кэширования для статичных файлов</b></p><ul><li><a href="https://pwa-workshop.js.org/4-api-cache/">Инструкция</a> по настройке стратегий кеширования с примерами и пояснением.</li><li><a href="https://intercom.help/progressier/en/articles/5703064-what-s-a-caching-strategy">Вариации</a> стратегий кеширования, пояснение каждой.</li></ul><p><b>6. Настроить показ уведомлений при обновлении кеша</b></p><p><a href="https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/updatefound_event">Документация</a> от разработчиков Mozilla по событию обновления кеша.</p><p><b>7. Запись и чтение данных в IndexedDB</b></p><ul><li><a href="https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API">Документация</a> от разработчиков Mozilla по IndexedDB, интерфейсам, спецификацией.</li><li><a href="https://web.dev/indexeddb/">Документация</a> по IndexedDB с примерами использования.</li></ul><h2>Итог</h2><p>Разработка PWA мало чем отличается от обычной веб-разработки и со стороны написания кода, и со стороны дизайна, — разработчику необходимо написать чуть больше кода, а дизайнеру буквально отрисовать иконку для отображения на главном экране.</p><p>PWA обладает схожей функциональностью и спектром задач с нативными приложениями, но разработка прогрессивного веб-приложения куда быстрее и дешевле. А еще PWA легко интегрировать в уже существующие веб-приложения. Если вы хотите прокачать свои скиллы в разработке PWA, приходите к нам!</p>]]></content:encoded>
    </item>
  </channel>
</rss>