Get CRX RU и Chromium CR‑81+ : Загрузка из CWS
Опубликовано: Бармалей · 02.07.2021 · 00:01 ••• Обновление: 02.07.2021 · 00:01 0

В статье рассмотрены некоторые проблемы в работе расширения Get CRX RU, возникающие у пользователей современных версий Chromium‑браузеров, а также указаны общие причины и методы решения этих проблем.

Статья написана на основе обратной связи от пользователей "Get CRX RU" и собственного опыта работы.

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


Скажу сразу – статья написана достаточно подробно, чтобы вы хорошо понимали причины возникновения проблем с загрузчиком в определённых версиях браузеров и сам смысл выполняемых действий по их устранению. Ну а те, кому не хочется читать "многабукаф", могут ознакомиться с краткой "выжимкой" решений в соответствующем разделе FAQ'а:
Chromium CR‑81+ : Нет загрузки из CWS с установками по умолчанию.

Итак, если "я остаюсь и хочу знать всё", начнём с…


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

Чтобы в дальнейшем не было "разночтений и непоняток", вкратце поясню про базовую версию движка браузера, начиная с которой проблема может проявляться в принципе.

1. Проблема может возникать лишь в отдельных браузерах на движках старше CR‑81, авторы которых "бегут немного впереди паровоза" и вводят в стабильные версии своих браузеров фичи, применяемые в билдах для разработчиков. Однако, в большинстве браузеров таких версий проблемы с загрузчиком "Get CRX RU" всё же отсутствуют.

2. Основной причиной проблемы, рассматриваемой в этой статье, на уровне браузера является изменение подхода разработчиков к безопасности, которое началось с базового движка CR‑81 и связано с "борьбой нанайских мальчиков" против тестовой девелоперской функции для временного понижения уровня безопасности браузера. :)

3. Проблема может возникать и в отдельных браузерах на движках новее CR‑86+, авторы которых "немного тормозят" или несвоевременно вносят в стабильные версии своих браузеров ограничивающие фичи. Кроме того, примерно с этих билдов и были существенно "закручены гайки" общей политики безопасности.

4. Во избежание сложностей с пониманием что, как, где и когда было отломано, в данной статье под "проблемными" будут подразумеваться все версии именно на базе движка CR‑81+, если это не оговорено отдельно.

Далее, исходя из принятого допущения, перейдём к рассмотрению собственно проблемы загрузки.


Проблема загрузки дополнений из магазина Chrome WebStore

Проблема наблюдается во всех версиях текущей линейки "Get CRX RU".

Проблема характерна для всех новых версий Chromium‑браузеров на движке CR‑81+.

Суть проблемы: в современных браузерах в "Get CRX RU" с установками по умолчанию не работает загрузка из репозитория Chrome WebStore, при этом в других репозиториях в том же браузере проблема не наблюдается.

С точки зрения пользователя ошибка выглядит как отказ от загрузки с запросом её подтверждения:

При этом подтверждение продолжения загрузки в некоторых браузерах приводит к той же ошибке.

В самом расширении "Get CRX RU" при этом генерируется вот такая консольная ошибка (пример для Cent Browser):

Ошибка устойчиво воспроизводится в современных браузерах и не зависит от самого расширения.

Теперь, когда проблема чётко очерчена, можно перейти и к…


Основные причины и способы решения проблем в новых браузерах

Специально подчеркну, что проблема наблюдается:

  1. Только при работе с репозиторием Chrome WebStore.
  2. Только в браузерах современных версий на движках CR‑81 и новее.

В остальных веб-сторах (Mozilla, Opera, MS Edge) и на всех сайтах скриптов такой проблемы нет (не выявлена).

Проблема известна давно, неоднократно "всплывала" в обсуждениях "Get CRX RU" на форуме Ru-Board (пример одного из обсуждений), предположительно – связана с повышенной "огороженностью" текущих версий браузеров в сочетании с политикой безопасности репозитория CWS. В браузерах на движках до CR‑81 (например, 360 Extreme Explorer 12/CR78 и другие браузеры старых версий, начиная с CR‑31) такой проблемы нет.

Как видно из приведённого на скриншоте выше примера консольной ошибки, проблема связана с запретом со стороны браузера на отправку запроса для получения текста описания из магазина или номера версии скачиваемого дополнения. Соответственно, для устранения этой проблемы в CWS не следует использовать настройки, связанные с отправкой такого запроса, а именно – необходимо в настройках ВЫКЛючить две "проблемные" опции:

  • "Версия CRX-файла от разработчика" – работает только для репозитория CWS.
  • "Загружать текст описания с сайта" – опция относится к работе с любым репозиторием, будьте внимательны!
    На всякий случай – думаю, понятно, что вторая опция имеет смысл только если у вас вообще создаётся описание, то есть если у вас в Настройках ВКЛючена общая опция:
    "Создавать описание для загрузки" – глобальный "выключатель" описания для загрузок из всех репозиториев.

По той же причине (отказ в обработке XHR‑запроса) также невозможно загрузить расширения из репозитория CWS по ссылкам на страницы этого магазина. Такая проблема пользователями не заявлялась, но вполне возможна, так как и в этом случае используется тот же самый механизм запроса (как минимум – для проверки работоспособности ссылки) и, следовательно, при попытке загрузки по ссылкам вы получите точно такую же ошибку, что и описанная выше.

Самое очевидное решение – для запуска загрузки перейти по ссылке на страницу CWS и уже оттуда запустить загрузчик. Думаю, понятно, что и в этом случае у вас также должны быть ВЫКЛючены обе указанные выше настройки.

Кроме того, в случае загрузки по ссылкам в браузерах на базе CR‑81+ к ошибке будет приводить и ВКЛючение ещё одной опции, также связанной с XHR‑запросами:

  • "Имя файла по заголовку страницы" – опция относится к работе с любым репозиторием, будьте внимательны!

Поэтому, в случае загрузки по ссылкам в браузерах новых версий БЕЗ перехода на страницу CWS, решение аналогично, но теперь у вас должны быть ВЫКЛючены все три указанные выше настройки.

Естественно, во всех указанных случаях вы НЕ сможете получить авторский номер версии для скачиваемого аддона. При необходимости получения текста описания вам придётся ВКЛючить и использовать вспомогательные опции для ручного формирования такого описания:

  • "Добавлять текст из буфера обмена" – перед скачиванием придётся скопировать текст описания.
  • "Добавлять текст из выделеного" – перед скачиванием придётся выделить фрагмент текста описания.

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

Понятно, что все указанные выше действия не решают задачу восстановления полной функциональности загрузчика в репозитории Chrome WebStore, а лишь устраняют ошибку за счёт установки некоторых ограничений.

Тем не менее, и на современных браузерах можно использовать "воровайку" по полной, если применить…


Небезопасный способ решения проблем в версиях на базе CR81+

Для всех новых версий Chromium'ов (и большинства хромоклонов в том числе) есть ещё один способ решения проблемы отказа в обработке XHR‑запроса, связанный с общим понижением безопасности браузера и работающий в билдах на базе CR‑81+, а именно – вы можете использовать дополнительный ключ командной строки:

--disable-web-security

Этот ключ даёт возможность НЕ ОТКЛЮЧАТЬ ни одну из перечисленных выше опций и, соответственно, получить полную функциональность "Get CRX RU" и в репозитории CWS, в том числе – автоматическое формирование корректного имени загружаемого дополнения, авторского номера версии и текстового описания со страниц CWS. И, конечно же, этот метод даёт возможность беспроблемной загрузки по ссылкам на этот репозиторий.

В принципе, этот "волшебный" ключик существует достаточно давно и может работать во всех браузерах с древнего билда CR‑21+ (если не с ещё более древнего)), но в нашем случае он представляет интерес для версий, начиная именно с CR‑81, когда начались переделки его функционала в базовом движке. Прочитать о "новых приключениях" этого ключа можно, например, здесь, тут или там (или "загуглить" по теме и самостоятельно найти подходящий материал).

Отмечу, что в некоторых хромоклонах (не во всех, но, в частности, в Cent Browser'е) добавление этого ключа в командную строку может приводить к выдаче предупреждающего сообщения при старте браузера:

Однако, даже при этом ключ работает корректно и полностью снимает все вышеуказанные проблемы с XHR‑запросами. То, в каких хромоклонах такое предупреждение будет выдаваться, зависит от конкретных версий браузеров, билдов, авторов (которые могут и отключать такие алерты в коде!) и, наконец, может зависеть и от других* ваших настроек.

 * Например, если у вас используется** ключ комстроки, запрещающий выдачу таких сообщений:

--disable-infobars

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

С учётом текущих изменений в CR‑81+ нужный нам ключ будет работоспособен только в сочетании с другим:

--user-data-dir

Дополнительный ключ, необходимый в версиях CR‑81+, применяется для прямого указания папки рабочего профиля и в большинстве случаев уже используется в портабельных версиях браузеров (в ini‑файлах ланчеров или в ярлыках запуска браузера), поэтому достаточно будет просто проверить его наличие в вашей конфигурации.

Подытожу по этому методу.

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

В общем, здесь выбор остаётся за вами и применение ключа я оставляю только на ваше усмотрение.

Для лучшего понимания общей "перспективы на будущее" далее приведены некоторые…


Примечания по решению проблемы на уровне кода "Get CRX RU"

1. Полноценное решение данной проблемы на уровне кода "Get CRX RU" не представляется возможным в силу не вполне понятных причин такого поведения браузеров по отношению к сайту Chrome WebStore, что, соответственно, относится только к компетенции разработчиков этих браузеров.

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

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

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

Ну и кроме того – даже если опции просто выключить по умолчанию, всегда найдётся пользователь, который их включит, со вполне предсказуемым последующим результатом… :)

4. Реализация надёжной автоматической проверки и превентивного отключения и автоблокировки указанных настроек только для страниц CWS (при сохранении их для других репозиториев) принципиально возможна, но автором пока не рассматривается (хотя я даже знаю, как именно можно это делать достаточно "красиво")), по той же причине – такая проверка НЕ требуется когда есть указанный ключ командной строки, тогда функция работает как положено во всех репозиториях (включая CWS), а излишнее увеличение размера кода расширения только ради решения этой проблемы видится нецелесообразным (как и выпуск отдельной спецверсии под самые новые браузеры).

В общем и целом, если вам, граждане "хромоводы", хочется решить проблему раз и навсегда – давите на авторов браузеров и добивайтесь, чтобы они привели поведение своих браузеров в соответствие с вашими пожеланиями. :)

Ну или попробуйте обратиться к гуглам, чтобы они немножко понизили "огороженность" своего магазинчика… :))


Опыт эксплуатации Бармалей

Смотрим также:

Бармалей 02.07.2021 02.07.2021 637 0.0

Общие технические сведения о разработке
Статус разработки:Активная, поддерживается автором
Язык интерфейса:Русский
Версия браузера:29+
Протестировано в:SRWare Iron 29/31/49 + 360 Extreme Explorer 9/11/12/13 (CR-63/69/78/86) + Chromium 87
Технологии и API:Чистый JavaScript (ES5), API: contextMenus, downloads, clipboardRead, tabs, content-script

Поделиться

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