' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'')//-->
В статье рассмотрены некоторые проблемы в работе расширения 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+, если это не оговорено отдельно.
Далее, исходя из принятого допущения, перейдём к рассмотрению собственно проблемы загрузки.
Проблема наблюдается во всех версиях текущей линейки "Get CRX RU".
Проблема характерна для всех новых версий Chromium‑браузеров на движке CR‑81+.
Суть проблемы: в современных браузерах в "Get CRX RU" с установками по умолчанию не работает загрузка из репозитория Chrome WebStore, при этом в других репозиториях в том же браузере проблема не наблюдается.
С точки зрения пользователя ошибка выглядит как отказ от загрузки с запросом её подтверждения:
При этом подтверждение продолжения загрузки в некоторых браузерах приводит к той же ошибке.
В самом расширении "Get CRX RU" при этом генерируется вот такая консольная ошибка (пример для Cent Browser):
Ошибка устойчиво воспроизводится в современных браузерах и не зависит от самого расширения.
Теперь, когда проблема чётко очерчена, можно перейти и к…
Специально подчеркну, что проблема наблюдается:
В остальных веб-сторах (Mozilla, Opera, MS Edge) и на всех сайтах скриптов такой проблемы нет (не выявлена).
Проблема известна давно, неоднократно "всплывала" в обсуждениях "Get CRX RU" на форуме Ru-Board (пример одного из обсуждений), предположительно – связана с повышенной "огороженностью" текущих версий браузеров в сочетании с политикой безопасности репозитория CWS. В браузерах на движках до CR‑81 (например, 360 Extreme Explorer 12/CR78 и другие браузеры старых версий, начиная с CR‑31) такой проблемы нет.
Как видно из приведённого на скриншоте выше примера консольной ошибки, проблема связана с запретом со стороны браузера на отправку запроса для получения текста описания из магазина или номера версии скачиваемого дополнения. Соответственно, для устранения этой проблемы в CWS не следует использовать настройки, связанные с отправкой такого запроса, а именно – необходимо в настройках ВЫКЛючить две "проблемные" опции:
По той же причине (отказ в обработке XHR‑запроса) также невозможно загрузить расширения из репозитория CWS по ссылкам на страницы этого магазина. Такая проблема пользователями не заявлялась, но вполне возможна, так как и в этом случае используется тот же самый механизм запроса (как минимум – для проверки работоспособности ссылки) и, следовательно, при попытке загрузки по ссылкам вы получите точно такую же ошибку, что и описанная выше.
Самое очевидное решение – для запуска загрузки перейти по ссылке на страницу CWS и уже оттуда запустить загрузчик. Думаю, понятно, что и в этом случае у вас также должны быть ВЫКЛючены обе указанные выше настройки.
Кроме того, в случае загрузки по ссылкам в браузерах на базе CR‑81+ к ошибке будет приводить и ВКЛючение ещё одной опции, также связанной с XHR‑запросами:
Поэтому, в случае загрузки по ссылкам в браузерах новых версий БЕЗ перехода на страницу CWS, решение аналогично, но теперь у вас должны быть ВЫКЛючены все три указанные выше настройки.
Естественно, во всех указанных случаях вы НЕ сможете получить авторский номер версии для скачиваемого аддона. При необходимости получения текста описания вам придётся ВКЛючить и использовать вспомогательные опции для ручного формирования такого описания:
Можно включить или использовать любую из них, на выбор, или обе сразу, обе опции работают для всех репозиториев.
Понятно, что все указанные выше действия не решают задачу восстановления полной функциональности загрузчика в репозитории Chrome WebStore, а лишь устраняют ошибку за счёт установки некоторых ограничений.
Тем не менее, и на современных браузерах можно использовать "воровайку" по полной, если применить…
Для всех новых версий 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‑файлах ланчеров или в ярлыках запуска браузера), поэтому достаточно будет просто проверить его наличие в вашей конфигурации.
Подытожу по этому методу.
Казалось бы, всё отлично, почему бы и не использовать только ключ, если он даёт "полный фарш" настроек, но я, если честно, не хочу рекомендовать применение этого способа исключительно по соображениям безопасности – этот ключ влияет на все сетевые соединения и меняет общую стратегию защиты браузера. Особых проблем это не должно вызвать, но, как говорится, бережёного бог бережёт… :)
В общем, здесь выбор остаётся за вами и применение ключа я оставляю только на ваше усмотрение.
Для лучшего понимания общей "перспективы на будущее" далее приведены некоторые…
1. Полноценное решение данной проблемы на уровне кода "Get CRX RU" не представляется возможным в силу не вполне понятных причин такого поведения браузеров по отношению к сайту Chrome WebStore, что, соответственно, относится только к компетенции разработчиков этих браузеров.
2. Упрощённая программная проверка браузера также не представляет особого интереса в силу того, что однозначной идентификации конкретного типа браузера нет, он определяется как и любой другой семейства Chromium, а номер его версии может лишь косвенно указывать на вероятность возникновения ошибки, и, понятно, не может быть использован для надёжной автопроверки и автоблокировки "проблемных" настроек.
3. Предложения "да отключи ты их по умолчанию" в отношении указанных опций, автором не рассматриваются, поскольку указанные проблемы имеются только в определённых* версиях браузеров, в других функция запроса номера версии и текста описания из CWS работает безо всяких проблем, равно как и функция загрузки по ссылкам на страницы CWS.
* Да, это массовые современные версии и общий тренд на усиление безопасности понятен, но не исключено, что со временем будет найдено более "красивое" решение, нежели простое выключение достаточно нужных опций, бо́льшая часть которых работает и для всех остальных поддерживаемых репозиториев.
Ну и кроме того – даже если опции просто выключить по умолчанию, всегда найдётся пользователь, который их включит, со вполне предсказуемым последующим результатом… :)
4. Реализация надёжной автоматической проверки и превентивного отключения и автоблокировки указанных настроек только для страниц CWS (при сохранении их для других репозиториев) принципиально возможна, но автором пока не рассматривается (хотя я даже знаю, как именно можно это делать достаточно "красиво")), по той же причине – такая проверка НЕ требуется когда есть указанный ключ командной строки, тогда функция работает как положено во всех репозиториях (включая CWS), а излишнее увеличение размера кода расширения только ради решения этой проблемы видится нецелесообразным (как и выпуск отдельной спецверсии под самые новые браузеры).
В общем и целом, если вам, граждане "хромоводы", хочется решить проблему раз и навсегда – давите на авторов браузеров и добивайтесь, чтобы они привели поведение своих браузеров в соответствие с вашими пожеланиями. :)
Ну или попробуйте обратиться к гуглам, чтобы они немножко понизили "огороженность" своего магазинчика… :))
Если вы обнаружите какие-либо ошибки в этой статье – не поленитесь сообщить об этом в комментариях. …а также не стесняйтесь высказывать свои соображения по теме, даже если они "не совпадают с мнением редакции"… :)