Лучший способ заставить ваш браузер или веб-сайт запускать локальное приложение!

В следующей статье объясняется, как работать с настраиваемым протоколом в разных операционных системах и запускать приложения с использованием настраиваемых протоколов браузера.

Вступление

Как многие из вас уже знают, большинство современных операционных систем умеют обрабатывать вызовы очень определенного списка протоколов.

Примеры,

  • Вся операционная система автоматически предложит ваш браузер по умолчанию для протоколов http или https. там, запустив https: // ‹website-url› из командной строки, можно даже открыть ваш браузер.
  • Если указать URL-адрес mailto: // ‹some-address›, вы автоматически откроете почтовое приложение.
  • Предоставление URL callto: // ‹phone-number› может открыть приложение вызывающего абонента, если оно у вас есть
  • Больше предопределенных протоколов можно найти здесь.

Вы также можете определить свои собственные обработчики протоколов, если хотите.
Это один из самых удобных способов заставить ваш браузер запускать локальное приложение.

Мотивация

Обогатите свою среду дополнительными протоколами или когда-либо замените текущий протокол собственной реализацией, что может обеспечить большую степень детализации ваших продуктов.
Представьте, что вы пишете приложение для родительского контроля и хотите заменить любой http / https вызовите свое собственное приложение в качестве прокси.
Или представьте, что вы хотите убедиться, что внутреннее приложение работает в фоновом режиме с вашего веб-сайта.

Если вы спросили «как я могу запустить exe-файл на моем компьютере из HTML или javascript на вашем сайте», то здесь вы найдете ответ.

Окна

ОС Windows хранит свои протоколы в своем реестре, структура реестра выглядит так:

HKEY_CLASSES_ROOT 
  alert 
    (Default) = "URL:Alert Protocol" 
    URL Protocol = "" 
    DefaultIcon 
      (Default) = "alert.exe,1" 
    shell 
      open 
        command 
          (Default) = "C:\Program Files\Alert\alert.exe" "%1"

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

  • Клавиша Windows + R (или меню Пуск + командная строка)
  • Введите regedit и нажмите Enter.
  • Найдите каталог HKEY_CLASSES_ROOT и следуйте инструкциям ниже, чтобы добавить свой протокол.
  • Добавьте имя каталога в качестве имени протокола в HKEY_CLASSES_ROOT.
    (это имя протокола будет использоваться позже)
  • Добавьте анонимную¹ запись типа REG_SZ с названием ваших приложений.
    (Она будет отображаться во всех всплывающих окнах браузера, должна быть удобной для пользователя)
  • Добавьте запись с именем Протокол URL с типом REG_SZ без какого-либо значения.
  • Добавьте каталог с именем shell в новый каталог протокола
  • Добавьте каталог с именем open в каталоге оболочки выше
  • Добавьте и введите указанную команду в открытый каталог выше.
  • Добавьте анонимную запись типа REG_SZ с путем к исполняемому файлу вашего приложения

Выполнено!

Теперь вы можете открыть свой браузер и запустить your-protocol-name: // ‹некоторые параметры›, и ваше приложение будет немедленно выполнено.

Пример копирования-вставки

Откройте Windows Shell (от имени администратора) и запустите эти строки

reg add HKEY_CLASSES_ROOT\my-prot /t REG_SZ /d "My Description" /f
reg add HKEY_CLASSES_ROOT\my-prot /v "URL Protocol" /t REG_SZ /d "" /f
reg add HKEY_CLASSES_ROOT\my-prot\shell /f
reg add HKEY_CLASSES_ROOT\my-prot\shell\open /f
reg add HKEY_CLASSES_ROOT\my-prot\shell\open\command /t REG_SZ /d c:\Windows\notepad.exe /f

Запустите my-prot: // и увидите, что блокнот открывается.

Примечание. Более подробную информацию о пользовательском протоколе вы можете найти здесь.

Linux

ОС Linux хранит свои протоколы в иерархии файлов / каталогов на диске, которая выглядит следующим образом:

~/.local/share/applications/<application-mime-file>.desktop
~/.local/share/applications/mimeapps.list

Вы можете добавить свой собственный протокол, следуя этим инструкциям:

  • Создайте пустой файл свойств с именем ‹my-proc› .desktop в каталоге ~ / .local / share / applications /.
  • добавьте в файл следующий текст, измените имена соответствующим образом:
[Desktop Entry]
Name=<my-proc>
Exec=/path/to/application-binary %u
Type=Application
Terminal=true
MimeType=x-scheme-handler/<my-proc>;
  • Откройте ~ / .local / share / applications / mimeapps.list и добавьте строку в разделах [Приложения по умолчанию] со следующим текстом:
    (Если раздел не существует, добавьте эту строку в любом случае )
x-scheme-handler/<my-proc>=<my-proc>.desktop
  • Из терминала linux запустите:
> update-desktop-database ~/.local/share/applications

Выполнено!

Теперь вы можете открыть свой браузер и запустить your-protocol-name: // ‹некоторые параметры›, и ваше приложение будет немедленно выполнено.

Пример копирования-вставки

Откройте один из текстовых редакторов и создайте файл с именем my-terminal.desktop в ~ / .local / share / applications / и вставьте это:

[Desktop Entry]
Name=my-terminal
Exec=bash
Type=Application
Terminal=true
MimeType=x-scheme-handler/my-terminal;

В терминале Linux запустите:

> echo x-scheme-handler/my-terminal=my-terminal.desktop >> ~/.local/share/applications/mimeapps.list
> update-desktop-database ~/.local/share/applications

Введите URL-адрес my-terminal: // в свой браузер и вы увидите, что терминал Linux открывается.

Риски безопасности

Как вы видели в примерах выше, любой браузер или внешнее приложение может запускать зарегистрированное приложение (обработчик) по индивидуальному протоколу.

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

Убедитесь, что ваша строка приложения / путь к двоичному файлу не подвергается введению каких-либо команд, например, клиент может предоставить следующий ввод в качестве аргумента:

abcde;format-disk

В этом примере ваше приложение будет иметь abcde в качестве входных данных, и ваша операционная система может преобразовать указанное выше в другую строку выполнения с именем format-disk.

Обобщить,

Использование обработчика пользовательских протоколов - это очень хороший способ запускать приложения из браузера или веб-сайта, он обычно используется, если вам нужно, чтобы движок / сервер запускался локально на хост-машине для вашего сайта.

Наслаждаться!

Пожалуйста, помогите поделиться этой статьей, поделитесь своей благодарностью в комментариях / аплодисментах и ​​не стесняйтесь поделиться своими заметками, чтобы мы могли одобрить статью.

¹ Анонимная запись - это запись реестра с пустым именем