Прокачиваем адресную строку браузера

    С некоторых пор адресная строка не только отображает адрес текущей страницы но и позволяет открыть страницу поиска в разных поисковых системах. Но далеко не все сайты добавили OpenSearch чтобы можно было легко добавить внутренний поиск по сайту.


    В первой части я расскажу как самостоятельно добавить поиск по сайту и другие сервисы. А во второй части расскажу какой сервис кроме поиска при помощи OpenSearch подсказок может организовать сайт.


    OpenSearch — набор технологий, позволяющих веб-сайтам и поисковым системам публиковать результаты поиска в форматах, удобных для распространения и сбора.

    Прокачиваем адресную строку при помощи ключа %s


    Ключ %s в URL заменяется браузерами FireFox и Chrome на введённую фразу после краткого имени URL закладки либо поисковой системы соответственно.


    FireFox


    Firefox позволяет использование этого ключа в URL закладки. Этот ключ в URL будет заменён на фразу введённую после краткого имени закладки.


    Добавляем вручную


    Для ручного добавления закладки нужно открыть все закладки (Ctrl+Shift+B). Нажать кнопку управление и пункт "Новая закладка...". В этом случае сразу будут доступны все поля свойств закладки но заполнять их придётся в ручную.


    Добавляем автоматически


    Если на странице уже есть ссылка с параметром %s(примеры ниже) то её можно добавить через контекстное меню вызванное на ней. Закладке будет автоматически заданно имя из названия ссылки или её атрибута title. В первый раз не будет доступно поле краткое имя.


    Для того чтобы иметь возможность ввести краткое имя закладки нужно её через контекстное меню по ссылке добавить второй раз. На второй раз будут доступны уже все поля редактирования свойств закладки в том числе и поле краткое имя.


    Chrome


    В Chrome URL с ключом %s можно добавить и задать краткое имя на странице[управления поисковыми системами(chrome://settings/searchEngines).


    Добавляем Wayback Machine


    Активная ссылка для закладки: Открыть страницу в Wayback Machine
    Адрес: "https://web.archive.org/web/%s"
    Краткое имя: "-"
    Пример: "- https://example.com"


    Wayback Machine очень помогает когда попадается сайт недоступный по HTTPS. Я добавляю '- ' перед адресом страницы и она открывается из архива. Если страницы сайта не будет в архиве то Wayback Machine предложит её сохранить.



    Добавляем Хабр


    Активная ссылка для закладки: Поиск по хабру
    Адрес: "https://habr.com/search/?q=%s"
    Краткое имя: "-хабр"
    Пример: "-хабр Прокачиваем адресную строку"


    К сожалению поле поиска по сайту с отключёнными скриптами не открывается. Но мы легко можем сделать поиск из адресной строки.


    Активная ссылка для закладки: Открыть статью по номеру
    Адрес: "https://habr.com/p/%s"
    Краткое имя: "-p"
    Пример: "-p 489638"


    Иногда читая статью или комментарии на планшете хочется написать развёрнутый ответ. Это не удобно делать на планшете поэтому необходимо открыть эту же статью на ноутбуке или стационарном ПК. Для того чтобы не искать её можно открыть по номеру.


    Активная ссылка: Открыть профиль
    Адрес: "https://habr.com/ru/users/%s"
    Краткое имя: "-u"
    Пример: "-u ivan386"


    Без скриптов на Хабре меню пользователя не доступно. Открыв свой профиль я могу получить доступ к 4м его пунктам просто введя в адресной строке "-u ivan386". Соответственно также легко я могу перейти и на профили других пользователей Хабра используя их ник.


    Другие сайты


    Аналогично можно поступить и с другими сайтами. Только надо помнить что за место %s передаётся URI кодированная строка и пробелы в ней будут заменены на знак +.


    Прокачиваем адресную строку пользователей при помощи OpenSearch


    OpenSearch полезен для создателей сайтов. Он позволяет указать браузеру шаблон URL поискового запроса и подсказок. И даёт возможность пользователю добавить парой кликов поиск по сайту из адресной строки.


    С помощью OpenSearch не обязательно делать только поиск. Благодаря сервису подсказок можно сделать навигацию в адресной строке и отображать заголовки новостей и новых статей.


    Особенности Firefox


    В Firefox задавая краткое имя для OpenSearch поиска желательно использовать символ @ в начале. После ввода его в адресной строке FireFox отобразит OpenSearch поиска по сайту в списке под адресной строкой. Его можно будет выбрать или ввести вручную краткое имя и нажать пробел после чего будут работать подсказки.


    Также OpenSearch поиск по сайту будет доступен в виде кнопки в адресной строке если пользователь будет вводить поисковой запрос сразу. Но в таком случае подсказки уже не будут работать если пользователь не задал этот поиск по умолчанию. И для открытия поиска по сайту нужно будет нажать эту кнопку.


    Добавляем Википедию


    На Википедии можно протестировать как работает стандартный поиск по сайту с подсказками. Введите в адресной строке @ для проверки что Википедии ещё нет в вашем браузере. Если она есть то переходите к тестированию с использованием того краткого имени которое у вас задано.


    Добавляем:


    1. Откройте википедию
    2. Нажмите три точки в конце адресной строки
    3. Нажмите пункт "Добавить поисковую систему"
    4. Найдите на странице поиск(about:preferences#search) в настройках список "Поиск одним щелчком"
    5. В списке найдите только что добавленную систему "Википедия (ru)"
    6. Сделайте двойной щелчок мышью на поле справа от названия в столбце "Краткое имя"
    7. Введите: @wiki

    Тестируем:


    1. В адресной строке вводим символ @
    2. В появившемся списке можно выбрать @wiki либо ввести с клавиатуры и нажать пробел.
    3. Далее начинаем писать поисковой запрос например Open и должен отобразится список подсказок с сайта Википедии.
    4. После ввода OpenSearch или выбора нужного пункта нажимаем Enter и должна открыться статья или страница поиска по Википедии с заданным нами запросом.

    Демонстрация не стандартного OpenSearch


    В этом примере я хочу показать как можно использовать поиск в адресной строке для навигации и отображения новой информации на сайте.


    Добавляем:


    1. Откройте opensearch-demo
    2. Нажмите три точки в конце адресной строки
    3. Нажмите пункт "Добавить поисковую систему"
    4. Найдите на странице поиск(about:preferences#search) в настройках список "Поиск одним щелчком"
    5. В списке найдите только что добавленную систему "Демонстрация"
    6. Сделайте двойной щелчок мышью на поле справа от названия в столбце "Краткое имя"
    7. Введите: @demo

    Тестируем:


    1. В адресной строке вводим символ @
    2. В появившемся списке можно выбрать @demo либо ввести с клавиатуры и нажать пробел.
    3. Далее пишем - и должен отобразится список команд.
    4. Выбираем статьи и после нажатия пробела должен появится список статей.
    5. Теперь можно выбрать одну из статей и нажать Enter чтобы она открылась или нажать два раза Esc чтобы в адресной строке снова отобразился адрес текущей страницы.

    Как это сделать


    Для того чтобы браузер узнал о наличии OpenSearch у сайта на странице в <head> нужно добавить тег:


    <link rel="search"
            href="https://example.com/opensearchdescription.xml"
            type="application/opensearchdescription+xml"
            title="Search" />

    В самом файле opensearchdescription.xml:


    <?xml version="1.0" encoding="UTF-8"?>
    <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
    
      <!-- название поиска -->
      <ShortName>Search</ShortName>
    
      <!-- ссылка на изображение для кнопки поиска (не обязательное поле) -->
      <Image type="image/png">https://example.com/websearch.png</Image>
    
      <!-- шаблон URL поискового запроса -->
      <!-- Firefox требует наличия Url с типом "text/html" -->
      <Url  method="get" type="text/html"
           template="https://example.com/?q={searchTerms}"/>
    
      <!-- шаблон URL подсказок (не обязательное поле) -->
      <Url  method="get" type="application/x-suggestions+json" 
         rel="suggestions"
         template="https://example.com/suggest?q={searchTerms}" />
    
    </OpenSearchDescription>

    Соответственно браузер будет обращаться по указанным URL а {searchTerms} будет браузером заменятся на поисковую фразу введённую пользователем. Важно помнить что браузер заменяет пробелы знаком '+' и URI кодирует введённый запрос.


    По URL адресу подсказок сайт должен отдавать JSON файл такого вида:


    ["{searchTerms}",[
    "Первая подсказка",
    "Вторая подсказка"
    ]]

    Здесь вместо {searchTerms} должен быть оригинальный запрос пользователя.


    Пример:
    В адресной строке: "@wiki XML Encryption"
    Ответ сервера JSON:


    ["XML Encryption", ["XML Encryption"]]

    Используем OpenSearch не стандартно


    Кроме собственно поиска в подсказках можно реализовать сервисы для сайта.


    Как это мог бы реализовать Хабр


    Было бы удобно не открывая новой страницы проверить не появились ли на сайте новые статьи, новости или комментарии.


    Например:


    Краткое имя: @habr


    1. Список команд
      Команда: @habr -
      Пример подсказок:


      статьи
      новости
      комментарии

      Вводить каждую команду вручную не удобно да и лишние запросы к серверу поэтому по запросу может отображаться список доступных команд разделов сайта. В случае команды выбираем нужную и нажимаем пробел. В случае если это страница сайта(статья например) то выбираем и нажимаем сразу Enter.


    2. Статьи
      Команда: @habr статьи
      Пример подсказок:


      Прогрессивная загрузка XML страниц
      XML сайты в результатах поиска
      Межпланетная файловая система — Простой блог в IPFS при помощи XSLT
      Качаем 16GB торрент через планшет с 4GB свободного места

      В подсказках могут отображаться заголовки свежих статей. У меня под адресной строкой показывает максимум 9 строк из подсказок. Две из них можно использовать для навигации по списку дальше и назад.


    3. Новости
      Команда: @habr новости
      Пример подсказок:


      Учёного засосало в квантовый анигилятор чёрной дыры после открытия микроволновки
      Институт высоких технологий по переливанию из пустого в порожнее открыл свои двери
      Продана первая копия игры кликера "Я миллионер" за $1000000

      В подсказках также могут отображаться заголовки свежих новостей.


    4. Комментарии
      Команда: @habr комментарии
      Пример подсказок:


      Что не так с Хабром

      В подсказках могут отображаться список заголовков статей со свежими комментариями. Но тут у Хабра может возникнуть проблема так как FireFox похоже не передаёт куки в OpenSearch. Но её можно решить задавая дополнительный идентификатор пользователю в URL подсказок при добавлении.



    Если какой то пункт привлёк то выбираем и нажимаем Enter. Если ничего не привлекло то два раза Esc и продолжаем читать открытую статью.


    Заключение


    В интернете становится всё меньше и меньше поисковиков которые самостоятельно индексируют весь интернет. Пользователи и сайты в конечном итоге могут остаться под управлением одного монополиста который сможет диктовать правила шантажируя сайты исключением из индекса.


    OpenSearch это первый шаг к распределённому поиску который позволит пользователям искать по сайту напрямую обращаясь к нему из адресной строки.


    Ссылки


    Спецификация OpenSearch на GitHub
    Справка по OpenSearch на MDN

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 11

      0

      Я для этих целей использую https://duckduckgo.com/bang

        0

        Тоже хорошо. Это можно считать глобальным пространством. Есть недостатки в том что уточка работает в данном случае как страница перенаправления из за чего этот сервис перестанет работать если уточка накроется. Ну и подсказки Википедии она мне не отображает если ввести в адресной строке "!вики XML".


        Открытия поста по номеру или пользовательского профиля по нику в данном случае для Хабра нет. Но это логично так как всего предусмотреть не возможно да и это ещё больше раздует глобальное пространство имён и в итоге прийдём к тем же доменам.

          0

          Кстати для сайтов у которых нет поиска по сайту можно набрать в адресной строке:


          site:example.com поисковой запрос

          Соответственно можно соорудить ссылку для сокращения:


          https://duckduckgo.com/?q=site:example.com %s

          Краткое имя: "-ex"
          Пример: "-ex поисковой запрос"

          +2

          Из полезного еще можно добавить урлы для поиска в гугл.транслейт:
          http://translate.google.ru/#en/ru/%s — с английского на русский
          http://translate.google.ru/#ru/en/%s — с русского на английский
          и т.д.

          0
          У нас в браузере Vivaldi уже давно есть нативная возможность добавить кастомный поисковик из почти любого источника. Правой кнопкой по поисковой строке, например, на хабре и «добавить как поисковую систему».
            0

            В Firefox также есть и такая возможность. Называется "добавить краткое имя для поиска".

              0
              В firefox пользователь сам должен указать URL запроса. Технически неграмотным людям это может быть сложно. А выше описывается сценарий простого тыка в поле поиска. Интересно, vivaldi работает только с формами (а что если на кнопке «поиск» кастомный ajax)? Он умеет только GET-запросы, или POST тоже?
                0

                В фаерфоксе есть 4 способа:


                1. При наличии OpenSearch на сайте добавить через адресную строку или поле поиска.
                  Все настройки кроме краткого имени задаются в автоматически.
                2. Добавить через контекстное меню на поле поиска на странице.
                  Все настройки кроме краткого имени задаются автоматом. Краткое имя тут же предлагают задать. Я не писал про этот способ в статье.
                3. Добавить ссылку с параметром через контекстное меню на ссылке и добавить в закладки.
                  Все параметры задаются автоматически кроме краткого имени. Для возможности задать краткое имя надо повторить добавление ссылки в закладки.
                4. В ручную создать закладку в которой задать все параметры.

                Ну и для способов кроме OpenSearch доступен только GET. OpenSearch может и POST запросы слать.

            +2

            Параметр %s также можно использовать в JavaScript закладках.


            Адрес: "JavaScript: alert('%s'); void(0);"
            Краткое имя: "-js"
            Пример: "-js тест"
            Появится сообщение "тест"

              0

              Кстати заметил что действуют подсказки из закладок. То есть если я добавлю свою страницу профиля https://habr.com/ru/users/ivan386/ в закладки и начну вводить в адресной строке "-u i" то она мне высветится в подсказках.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое