Нейросеть — это хорошо, но дайте выбор. Как я убрал «Алису» из поиска Яндекса
Привет, Хабр! Нейросети стремительно входят в нашу жизнь, и вот уже Яндекс встроил свою «Алису» прямо в поисковую выдачу. Иногда это удобно, но часто хочется видеть классический список ссылок, а не огромный блок сгенерированного текста, который отодвигает всё остальное вниз.
Я решил вернуть себе контроль над поиском и написал простое браузерное расширение, которое убирает всё лишнее. Назвал его «Bye Bye Alice AI». В этой короткой статье я покажу, как оно устроено.
Задача
Нужно было убрать два основных элемента:

-
Большой блок с нейроответом (.FuturisSearchWrapper и .serp-item__futuris-snippet).
-
Вкладку «Алиса» в навигации.
А также добавить возможность включать и отключать эту функцию.
Как это работает?
Вся магия происходит в нескольких файлах.
1. manifest.json — паспорт расширения
Это главный файл, где мы описываем наше расширение, запрашиваем нужные права (storage для сохранения настроек) и указываем, какие скрипты и где запускать.
{ «manifest_version»: 3, «name»: «Bye Bye Alice AI», «version»: «3.0», «description»: «Removes Yandex AI (Alice) elements from search results and navigation.», «permissions»: [«storage»], «host_permissions»: [«*://*.yandex.ru/*»], «background»: { «service_worker»: «background.js» }, «content_scripts»: [ { «matches»: [«*://*.yandex.ru/search/*»], «js»: [«remover.js»], «run_at»: «document_start» } ], «action»: { «default_popup»: «popup.html», «default_icon»: «icon_inactive.png» }, «icons»: { «128»: «icon128.png» } }
2. remover.js — скрипт-чистильщик
Этот скрипт запускается на страницах поиска Яндекса. Его задача — найти и удалить мешающие блоки.
const SELECTORS_TO_REMOVE = [ ‘.FuturisSearchWrapper’, ‘a.HeaderNav-Tab[href*=»promo=force_neuro»]’, ‘li.serp-item.serp-item__futuris-snippet’ ]; let isEnabled = true; /** * Находит и удаляет целевые элементы со страницы. */ function removeTargetElements() { if (!isEnabled) return; try { SELECTORS_TO_REMOVE.forEach(selector => { document.querySelectorAll(selector).forEach(el => el.remove()); }); } catch (error) {} } /** * Блокирует переход по промо-ссылкам. * @param {MouseEvent} event — Событие клика. */ function blockPromoNavigation(event) { if (!isEnabled) return; const targetLink = event.target.closest(‘a’); if (targetLink && targetLink.href.includes(‘promo=force_neuro’)) { event.preventDefault(); event.stopPropagation(); } } const observer = new MutationObserver(removeTargetElements); /** * Инициализирует MutationObserver для отслеживания изменений в DOM. */ function initializeObserver() { if (document.body) { observer.observe(document.body, { childList: true, subtree: true, }); removeTargetElements(); } else { setTimeout(initializeObserver, 100); } } chrome.storage.sync.get(‘isEnabled’, (data) => { isEnabled = data.isEnabled !== false; if (isEnabled) { initializeObserver(); } }); chrome.storage.onChanged.addListener((changes, namespace) => { if (changes.isEnabled) { isEnabled = changes.isEnabled.newValue; if (isEnabled) { initializeObserver(); } else { observer.disconnect(); } } }); document.addEventListener(‘click’, blockPromoNavigation, true);
3. popup.html и popup.js — окно настроек
Чтобы пользователь мог сам решать, нужна ему «Алиса» или нет, я добавил простое всплывающее окно с переключателем. Его состояние сохраняется в chrome.storage.
4. background.js — управление иконкой
Маленькая, но важная деталь: иконка расширения меняет цвет в зависимости от того, включена блокировка или нет. Цветная — активна, серая — выключена. Это делается в фоновом скрипте, который следит за изменением настроек.
Результат
Получилось легкое и простое расширение, которое делает ровно одну вещь, но делает ее хорошо. Поиск снова стал чистым и быстрым, а если вдруг понадобится нейросеть — ее можно вернуть одним кликом.
Если вам, как и мне, не хватало такой возможности, можете забрать расширение на GitHub. Проект очень простой, так что может стать отличным примером для тех, кто хочет попробовать написать свое первое расширение.
Спасибо за внимание!
P.S. : Это моя первая статья на Хабре и буду благодарен за карму или/и приглашение
Источник: habr.com
Похожие записи
Оцените материал:
Похожие записи
Стартапам не нужно становиться вирусными, чтобы завоевать клиентов.
24.10.2026
Создание сценариев для экстремальных событий без использования экстремальных данных.
24.10.2026
4,9 на 3000 отзывов. Сколько из них написал живой человек?
24.10.2026Присоединяйтесь и подпишитесь на рассылку самых свежих новостей по Email
Получайте свежие новости и идеи на почту. Без спама — только самое интересное.
Нажимая «Подписаться», вы соглашаетесь с политикой конфиденциальности.
