IETabYC • RU : Что "под капотом"

Бармалей 03.05.2014 08.02.2021 2610.0

Пояснения по особенностям работы с внешним плагином-коннектором в расширении IETabYC • RU. Некоторые технические подробности по разработке и особенности применения аддона.

В этой статье:


Особенности работы с внешним плагином-коннектором

Расширение IETabYC • RU использует для отображения страниц в режиме IE внешний плагин-коннектор для связи с системным Internet Explorer'ом. Этот плагин устанавливается отдельно и регистрируется для системы в целом, что позволяет установить его однократно для использования во всех браузерах, а также производить установку или обновление самого аддона без необходимости повторной переустановки и перерегистрации коннектора.

В отличие от оригинала и его репаков русский форк не содержит установщика внешнего плагина, в комплект аддона входят только js/html файлы, сам же плагин нужно качать и ставить отдельно!

Такой подход был выбран при выпуске первоначальной версии "ИЕТабыча" и сохраняется и во всех последующих релизах. Основная причина разделения – плагин не является предметом разработки расширения, в русском форке используется оригинальная версия коннектора без каких-либо изменений.

Кроме того, удаление плагина из установочного пакета расширения снижает вероятность проблем при загрузке и последующей установке аддона в большинстве браузеров. Ну и, наконец, сам размер установочного пакета при этом значительно уменьшается (практически в 10 раз).

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

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

Итак, что мы имеем в наличии из архивных копий:

  1. Интерактивный установщик версии от 09.02.2014 и его полная распакованная копия
    Предлагался к установке в оригинальной версии прототипа 1.1.0.3 от 12.02.2014.
    В оригинальном CRX-установщике версии 1.1.0.3 содержится та же самая DLL плагина.
    Эта же версия плагина-коннектора присутствует в "автономном репаке" (один из форков оригинала).
  2. Самораспаковывающийся ZIP-архив с регистратором DLL плагина версии от 07.03.2014 (текущая* версия)
    Предлагалась к установке в оригинальной версии прототипа 1.1.0.5 от 01.04.2014 после 01.05.2014.
    В оригинальном CRX-установщике версии 1.1.0.5 содержится та же самая DLL плагина.
    Эта же версия плагина-коннектора присутствует в "бесшовном режиме IE" (один из форков оригинала).
  3. Интерактивный установщик версии от 13.03.2014 и его полная распакованная копия
    Загружен вручную, по "старой ссылке" из оригинальной версии прототипа 1.1.0.3.
    До 01.05.2014 был доступен из оригинала по той же ссылке, что и в версии 1.1.0.3.

* На всякий случай: в своё время мне не понравилась замена исходной ссылки и метода дистрибуции плагина и хотя установленный Каспер молчал как партизан, я дважды (с интервалом) проверил "новый" установщик в онлайне: результаты текущей проверки и детализация отчёта VirusTotal.
Локальный Касперский, кстати, и теперь не против этого инсталлера… :)

Вот такая вот "каша", разобраться* в которой "без бутылки" непросто, особенно с учётом того, что независимо от установщика любой из этих плагинов‑коннекторов корректно работает со всеми оригиналами и форками, хотя все три варианта плагина имеют различия в коде. Для окончательного "разрыва мозга" добавлю, что версия файла плагина во всех трёх случаях одна и та же… :)

* И тогда, в 2014 году, и, тем более, сегодня найти разработчика плагина нереально, это китайцы, сэр…)

В итоге, исходя из желания внести хоть какую-то ясность и управляемость в процесс установки, а также учитывая, что я и сам не люблю "мутные инсталлеры" и предпочитаю делать всё своими руками, для подключения коннектора была выбрана модель самостоятельной ручной установки плагина пользователем с последующей ручной регистрацией его с помощью шаблонного* файла реестра.

* Необходимые ветки реестра и значения параметров в шаблонах указаны на основании данных из скрипта исходного инсталлятора, работоспособность метода неоднократно проверена на разных системах и под разными браузерами.

На этом сайте доступен для загрузки текущий рабочий комплект для ручной установки плагина, состоящий из последней проверенной версии библиотеки плагина (от 13.03.2014, №3 в списке выше), шаблонов файлов реестра для регистрации и удаления плагина в системе и краткой инструкции по применению.

Процесс установки и регистрация в системе NP-плагина с помощью этого комплекта предельно прост:
Указаны соответствующие имена файлов из комплекта.

  1. Поместить файл "ie_your_chrome.dll" в любое* удобное вам место,

    * Например, в папку "/plugins" вашего хром-браузера, файл также можне переименовать по желанию.

  2. Отредактировать файл "IETabYC_Mozilla_PlugIn_INSTALL_EDIT_PATH_BEFORE!!!.reg" под свой путь к плагину.
  3. Запустить "IETabYC_Mozilla_PlugIn_INSTALL_EDIT_PATH_BEFORE!!!.reg".
  4. Перезапустить браузер.
  5. Пользоваться ИЕТабом.

Также просто выполняется и удаление с отменой регистрации в системе плагина-коннектора:
Указаны соответствующие имена файлов из комплекта.

  1. Запустить "IETabYC_Mozilla_PlugIn_UNINSTALL.reg".
  2. Удалить файл "ie_your_chrome.dll" с диска.
  3. Перезапустить браузер.
  4. Не пользоваться ИЕТабом. :)

Условия и особенности применения расширения

Необходимо помнить, что в силу использования внешнего плагина-коннектора для нормальной работы расширения требуется поддержка NPAPI-плагинов в браузере. Такая поддержка доступна во всех браузерах на движке Chromium версий до 45 включительно, а также в некоторых современных хромоклонах типа 360 Extreme Explorer и ему подобных.

Подробнее о работе с этими плагинами читаем в статье Краткое пояснение про плагины NPAPI и PPAPI.

Исходя из сказанного, на текущий момент круг клиентских браузеров, на которых "IETabYC • RU" может работать, весьма ограничен. Тем не менее, аддон можно использовать для решения каких-либо специфичных задач в любом браузере подходящей версии. Что касается применения китайских хромоклонов: независимо от наличия в них встроенной поддержки второго движка, расширение полностью сохраняет работоспособность и на современных версиях.

На всякий случай: аудит исходного кода плагина‑коннектора на предмет безопасности не производился (по причине отсутствия этого самого кода), плагин используется в русском форке по принципу "как есть". Тем не менее, нужно отметить, что каких‑либо "побочных явлений" в виде несанкционированной рекламы и тому подобных проблем за период эксплуатации с февраля 2014 года автором не выявлено, основную задачу по поддержке движка Trident от системного Internet Explorer этот плагин решает корректно.


Исходный код, интерфейс и задействованные API

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

Для отрисовки содержимого вкладки в режиме IE используется проксирование через плагин‑коннектор. При этом все переходы в пределах вкладки также происходят в режиме IE. Открытие ссылок в новых вкладках производится в режиме WebKit (если в ваших Настройках не заданы соответствующие правила автоматического переключения).

При вызове режима IE из контекстного меню ссылок они будут открыты в новой вкладке.

Для переключения режима текущей вкладки с WebKit на IE (и обратно) применяется API chrome.pageAction. Для переключения режима отображения вкладки и для выполнения других действий через контекстное меню страницы используется API chrome.contextMenus. Для выполнения действий на веб-страницах применяется API chrome.tabs.

Для текущего хранения всех пользовательских настроек используется API chrome.storage.

Для обеспечения корректной работы аддона с любыми хостами и протоколами в манифесте запрашиваются разрешения [ "http://*/*", "https://*/*" ].

В русском форке сделана полноценная русификация интерфейса (добавлена отдельная локализация), русская локаль используется по умолчанию. Английская локализация оставлена, частично доработана и исправлена. Китайская* локаль в русском форке не поддерживается и удалена из установочного комплекта.

* При необходимости можно добавить её самостоятельно из архива установщиков оригинальных версий.

Аддон не имеет практических ограничений по версии браузера, используемые API работают в версиях 29+.

Исходный код НЕ обфусцирован, исключительно для удобства при возможных доработках и облегчения читаемости кода при его исследовании. Если кому-то это критично – удалите комментарии и пропустите через компрессоры.)



Так держать! :)
Технические детали

Общие технические сведения о разработке
Статус разработки:Активная, поддерживается автором
Язык интерфейса:Русский, Английский
Версия браузера:29+
Протестировано в:SRWare Iron 29/31/32/36 + 360 Extreme Explorer 9/11 (CR63/69)
Технологии и API:Чистый JS (ES5), API: pageAction, tabs, cookies, storage, management, contextMenus, notifications, content-script

URLПоделиться

Всего комментариев: 0
close