Як запускати розширення Хрому не з магазину WebStore

    Дев'ять досить чесних способів відбирання функції цензора у продукту великої компанії.
 
Починаючи з версії 35 (35.0.1916.114 m), як відомо (англ.) , браузер Chrome для ОС Windows перестав підтримувати установку нових і роботу перш встановлених розширень, розміщених не в магазині Chrome WebStore. Це ж стосується і всіх юзерскріптов, що не розміщених в цьому магазині. Група Windows-користувачів — обширна, тому потрібні нові інструкції про те, як з цим боротися. Лінуксоїди і маководов цього, на щастя, поки що не загрожує.
 
 
 Історія
 
     
Перше закручування е гайок у вересні 2012 р.: версія маніфесту 2.0;
 
 Повна заборона роботи не з магазину в травні 2014;
 
 Це планувалося ще в листопаді 2013-го: Chrome users on Windows will soon have to get extensions through Google's store .
 
 
Причини обмежень — у великому розмаху поширення шкідливих розширень, які шляхом нескладних інструкцій з установки просуваються на сайтах, непідконтрольних Гуглу.
 
Що може бути в установці розширень поганого? У першу чергу, якщо скрипт (розширення або юзерскріпт) починає працювати на домені, який містить дані користувача, його конфіденційну інформацію, його паролі, логін — все це стає доступним скрипту, і далі тільки моральні питання до розробника скрипта визначають не «зіллє» чи він куди-небудь ці дані. Незважаючи на деяке розходження між Global Scope розширення та іншої частини сторінки, немає жодної проблеми впровадити скрипт в основну сторінку (навіть шляхом подгрузки зовнішнього змінюваного скрипта) і після цього вже нічим не відрізнятися від скриптів сторінки. Все, за що відповідає власник сайту (домена) відносно даних користувача, отримує потенційно і автор розширення або юзерскріпта. Про це постійно раніше попереджав Google Chrome при спробі встановити скрипт або розширення. Це буде і зараз, але з різницею в тому, що браузер за замовчуванням буде встановлювати розширення тільки з магазину Google WebStore .
 
Тепер для установки розширень потрібно використовувати більш складну техніку, щоб обійти нові перешкоди. Варіанти є. Для корпоративних користувачів спеціальних розширень є навіть можливість в різних ОС «підписати» браузер на дозвіл скачування з певного виробничого сайту і навіть можливість автоматичного завантаження або оновлення всіх необхідних підприємству розширень — при першій установці браузера або при черговому запуску.
 
 Подальший текст призначений для людей, які розуміють, які можуть бути наслідки установки неперевірених розширень Хрому не з магазину компанії Google.
 
 Варіанти обходу обмежень
Є різні способи: прості і складні, ручні та автоматичні. Не вибирайте відразу перший — можливо, вас влаштує наступний простий, або спосіб зі зміною браузера (з сімейства Webkit). Наскільки зручний той чи інший спосіб, залежить від цілей користувача і від фактичної надійності різних трюків, яка буде перевірена тільки з часом.
 
Є офіційні поради від Гугла для таких випадків, але там не на одній сторінці і неповно.
 
 Спосіб 1, не «пакуй, так не упакований будеш». Самий чесний, але офіційно не рекомендований. Розпакувати і встановити кожне розширення розпакованим.
 
 Процес установки розпакованого розширення в Chrome
 
Цим способом можливо вирішити різні випадки запуску розширень і юзерскріптов в браузері — як нових, так і перестали раптово працювати після некерованого оновлення браузера.
 
1.1. Установка завантаженого звідки-розширення у вигляді файлу *. crx
 
1.1.1. Спочатку відкрити сторінку chrome :/ / extensions / і встановити галочку «Режим розробника», щоб з'явилися кнопки для встановлення та оновлення розширень.
 
1.1.2. Взяти файл розширення з закінченням «CRX», перейменувати закінчення в «ZIP» і розпакувати отриманий архів у папку (зроблену, наприклад, в загальній папці для розширень, створеної для цих цілей. Приклад: c: \ myFiles \ chromeExtensions \ habrajax).
 
1.1.3. Встановити розпаковане розширення з папки натисканням на кнопку «Завантажити розпаковане розширення», далі — вибрати каталог, в якому воно Розпаковано (зручно просто внести в поле імені папки шлях до папки, потім Enter, ніж іти мишею, вибираючи шлях).
 
1.2. Установка юзерскріпта — файлу з розширенням *. user.js
 
Юзерскріпт доведеться оформити як простеньке розширення — «зліпити» з файлу *. User.js і файлу маніфесту manifest.json , за основу якого взяти шаблон, в якому замінити вручну кілька полів, щоб потім у списку розширень було зручно читати опис юзерскріпта (назву, версію, опис. Потім обидва файли покласти в таку ж пойменовану папку, як у п. 1.1.2.
 
Все це генерується автоматично закиданням файлу розширення на сторінку chrome :/ / extensions , як раніше. Лише працювати розширення не буде, і все одно треба буде переходити до розпакованого розширенню за п. 1.3.1. Ручний процес описаний для розуміння простоти і взаємозв'язку юзерскріпта та розширення.
 
1.2.1. Завантажити та отримати файл юзерскріпта з розширенням *. User.js .
 
1.2.2. Підготувати папку, наприклад, c: \ myFiles \ chromeExtensions \ habrPercentageRing \, в яку покласти файл *. User.js.
 
1.2.3. На початку файлу юзерскріпта подивитися директиви скрипта — рядки виду
 
// @name ...
// @version ...
// @description ...
// @include ... (может быть несколько)
// @exclude ... (может быть несколько)

і заповнити даними (на місці трикрапок) шаблон у файлі manifest.json , який створити в тій же новій папці.
 
Заготівля (шаблон) файлу manifest.json :
 
 
{
   "content_scripts": [ {
      "exclude_globs": [ "все_домены_и_пути_из_exclude_директив" ],
      "exclude_matches": [  ],
      "include_globs": [ "все_домены_и_пути_из_include_директив" ],
      "js": [ "имя_файла_юзерскрипта.js" ],
      "matches": [ "http://*/*", "https://*/*" ],
      "run_at": "document_idle"
   } ],
   "converted_from_user_script": true,
   "description": "описание_вашего_юзерскрипта",
   "key": "можно_удалить_не мешает",
   "name": "имя_вашего_юзерскрипта",
   "version": "номер_версии_юзерскрипта",
   "manifest_version": 2
}

 (замінні слова написані одним словом з підкресленнями, щоб зручно було виділяти в редакторах подвійним кліком) ;
 номер_версіі_юзерскріпта — до 4 чисел не більш 32767, розділені крапками.
 імя_файла_юзерскріпта.js — ім'я файлу скрипта, який лежить поруч з файлом manifest.json
 
 все_домены_и_пути_из_include_директив — в лапках кожен, розділені комами, з усіма метасимвол типу "*" — Всі шляхи з директив @ include, які пишуться на початку файлу юзерскріпта;
 
 все_домены_и_пути_из_exclude_директив — те ж, для директив @ exclude
 
Рядки без замінних слів повинні бути присутніми в маніфесті, щоб розширення на базі юзерскріпта працювало. Всі старанно внесення дані допоможуть не заплутатися в списку встановлених розширень пізніше на сторінці chrome :/ / extensions .
 
1.2.4. Встановити розширення, як в п. 1.1.3.
 
1.3. Відновлення раніше встановленого розширення або юзерскріпта
 
Якщо виявилося, що браузер «затявся» і відключив раніше встановлене розширення, відмовляючись виконувати його далі — не обов'язково завантажувати і встановлювати його знову.
 
1.3.1. Знайдемо каталог з цим розширенням на системному диску (наприклад, в WinXP — в каталозі С: \ Documents and Settings \ <ім'я користувача> \, в Win7 — С: \ Users \ <ім'я користувача> \ (відкрити приховані папки ), використовуючи довге кодове слово типу «gggcejmogjjjkpidlfinoaonmkpmegnn», написане після слова «ID:» у блоці опису розширення.
 
1.3.2. Використовуємо папку, яку браузер встиг зробити раніше для цього розширення або юзерскріпта. Зазвичай, у вкладеній папці є папка з номером версії розширення. Вибираємо потрібну — і завантажуємо як розпаковане розширення (можна просто вставити шлях до папки в поле Browse for Folder — Folder ).
 
Краще, звичайно, перенести папки з цінними розширеннями в інше місце (як у колишніх прикладах, в c: \ myFiles \ chromeExtensions), інакше при видаленні браузера з системи (або користувача) вони можуть піти.
 
1.3.3. Це ще не кінець пригод — в розширенні, зробленому на базі юзерскріпта, може бути не прописана у файлі manifest.json строчка «manifest_version»: 2, про що браузер скаже, відмовляючись його встановити. Пропишемо
 
"manifest_version": 2,

у першому рівні структури JSON цю пару «ключ-значення».
 
1.3.4. Завантажилося? Тепер не забудьте встановити галочку «Включити».
 
 (кінець варіантів)
 
Після подібних установок в списку розширень буде відображатися шлях до каталогу, в якому знаходиться кожне розпаковане розширення. Як плюс для розробників, вкрай просто його буде самостійно модифікувати. Після модифікації буде потрібно лише ще раз встановити через кнопку «Завантажити розпаковане розширення» (далі — вибрати каталог, в якому воно Розпаковано). Навіть попередньо видаляти наявне у списку — не обов'язково. Дія зводиться до натискання 2 кнопок, якщо браузер пам'ятає шлях до каталогу розширення. Або просто натиснути кнопку «Оновити розширення», якщо треба оновити всі.
 
Так, робота ручна і безглузда — раніше це робив браузер. Щоб її уникнути, треба користуватися «девелоперської» версією браузера, в якому раніше можна ставити юзерскріпти затягуванням або використовувати інші «милиці» та інші геніальні складності. Перераховуємо далі способи забезпечення установки розширень іншими хитрими шляхами.
 
Якщо буде бажання «вдосконалити» скрипт, перетворивши його в розширення, додаванням нових параметрів в маніфест, то тоді пропаде важлива перевага юзерскріпта — його можлива кроссбраузерность, коли один і той же скрипт може працювати в 3 браузерах, включаючи стару Оперу. І в 4-му — Safari, якщо його таким же нехитрим шляхом змусити виглядати як розширення Safari (за своїми правилами, які тут описувати не будемо).
 
Що ще характерно — якщо у вас є «легальне» точно таке ж розширення Хрому з магазину WebStore з тим же ім'ям і версією, воно не буде стиратися розпакованим варіантом розширення, а обидва будуть працювати одночасно. Одне з них розумно відключити щоб уникнути несподіваних ефектів «накладення».
 
 Спосіб 2, «хімія командного рядка». Простий, але з невідомої тривалістю підтримки. Доведеться запускати зі спеціального ярлика (shortcut).
 
2.1 Запустити браузер з командного рядка з параметром "- enable-easy-off-store-extension-install". Це можна зробити з консолі, але зручніше для майбутнього — через ярлик, у якому дописується параметр. Приклад:
 
"C:\Program Files\Google\Chrome\Application\chrome.exe" --enable-easy-off-store-extension-install

 
 
2.2. Якщо був зроблений ярлик з параметром — запускати браузер кліком по ньому або комбінацією призначених клавіш. Можливий незапуск, якщо в момент запуску працював прихований процес раніше запущеного Хрому без параметра (перевірити і вбити в менеджері завдань, Ctrl-Shift-Esc). Приховані процеси залишаються, якщо встановлена ​​настройка в браузері «Продовжувати роботу програм у фоновому режимі після закриття браузера» .
 
 Спосіб 3, «хімія реєстру». Теж простий, але з невідомої тривалістю підтримки. За відгуками, він працює у версії 35.0.1916.114 m, але не працює у версії Хрому 35.0.1916.153. Був описаний 16.03.2014 в http://my-chrome.ru/2014/03/yes-we-can/ . У деяких працює і в оновлених версіях старше 114 m, судячи з відгуків, тому умови спрацьовування ще належить з'ясовувати.
 
3.1. Для 64-бітної Windows 7 в реєстрі по шляху HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Google \ Update \ ClientState \ {8A69D345-D564-463C-AFF1-A69D9E530F96} прописуємо замість ap: "-multi-chrome" або «1.1-beta-multi-chrome» (тип REG-SZ) значення «2.0-dev-multi-chrome» (без лапок):
 
Для Win XP шлях буде такою: HKEY_LOCAL_MACHINE \ SOFTWARE \ Google \ Update \ ClientState \ {8A69D345-D564-463C-AFF1-A69D9E530F96}
 
3.2. Повторити те ж для папки {4DC8B4CA-1BDA-483e-B5FA-D3C12E15B62D} і такого ж параметра в ній.
Пишуть, що може допомогти і таке значення: «2.0-Canary-multi-chrome».
 
3.3. Перезапуск браузера, повний, з вбивання прихованих процесів. Ознака того, що розширення стали працювати — активний чекбокс для включення розширення.
 
3.4. Включити розширення установкою чекбокса.
 
Сенс фокуса в тому, що повідомляємо браузеру, що це нібито DEV-версія браузера. Він, як побічний ефект, починає хотіти оновитися до DEV-версії, що видно в попап «About ...».
 
Якщо в реєстрі не знайшлося цього шляху — спробуйте пошукати пошуком по реєстру значення «multi-chrome» і замінити всі такі знахідки.
 
 Спосіб 4, «троянський кінь у магазині». Ставимо розширення SimpleExtManager , після чого засобами налаштувань в цьому розширенні можемо включати відключені чекбокси при іменах всіх розширень незалежно від їх походження. Ненароком ця лазівка ​​виявилася працюючою. Правда, включати чекбокси доведеться при кожному повному (холодному) запуску браузера. Але все одно, в наявності — красивий троянський ефект, нехай і з ручним приводом.
 
 Спосіб 5: ще простіше, але без перспектив: встановити стару версію браузера Chrome і заборонити в ній оновлення.
 
Раз вже ми зібралися розглянути всі способи, розглянемо і найдивніші. З комбінації двох нелогічних дій, дійсно — виходить рішення. Перше нелогічне — приректи себе на застарілий браузер. Друге нелогічне — відключити оновлення. Від першого з'являються дірки в безпеці, від другого — теж. Але розширення будуть жити. Може бути, когось теж це влаштує і хтось давно мріє відключити поновлення Хрому, але до цих пір не знає, як.
 
Старі версії брати звідси .
Для відключення оновлень підказують такий батник:
 
reg ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Update" /v UpdateDefault /t REG_DWORD /d 0 /f
reg ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Update" /v AutoUpdateCheckPeriodMinutes /t REG_DWORD /d 0 /f
reg ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Update" /v DisableAutoUpdateChecksCheckboxValue /t REG_DWORD /d 1 /f
reg ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Update" /v Update{8A69D345-D564-463C-AFF1-A69D9E530F96} /t REG_DWORD /d 0 /f

Або такий варіант з hosts-файлом.
 3-й спосіб : в chrome :/ / plugins / .
 
 Спосіб 6, «прикинься розробником». Цю можливість залишив тобі Гугл. Якщо користуватися версією браузера, завантаженої з Dev-або Canary-каналу, обмеження працездатності немагазінних розширень не буде. Ці версії не будуть конфліктувати з встановленим в системі Хромом стабільної версії.
 
Мінуси — очевидно, в тому, що треба заново збирати свої настройки браузера, а потім стежити за версіями і переходити на нові. Не всім «життя заради браузера» підходить.
 
Добрий Гугл обіцяє не забороняти установку розширень в DEV і Canary-версіях. Тут все логічно: на експерименти йдуть розробники, маргінали, а вони знають, чим загрожує установка неперевірених розширень. Іншим же рекомендувати це не з руки, бо виглядає як примусове до неперевірених, сирим версіями браузера. Навіть більшості розробників це не потрібно — у кожного є багато інших завдань і захоплень. Але парад дивацтв триває.
 
 Спосіб 7, «думай інакше» («think different»). Свіжа думка Apple: «Навіщо нам Windows?». Ох, як же це банально! Переходимо на Mac або Linux.
 
 Спосіб 8, «думай інакше, але в Windows». Навіть так? Так. Переходимо на інший браузер, заснований на Chromium. Якщо він підтримує розширення, то він не матиме залочіванія розширень на гугловських магазині.
 
Перший кандидат для заміни — це, звичайно, Chromium : браузер, службовець основою для Chrome, але без закритих (з точки зору кодів і політики компанії) технологій Google.
 
 Спосіб 9, «будь босом». Для шановних власників корпоративних мереж підприємства (голосно сказано, але все набагато простіше ) є спосіб мати власний домен, з якого користувачі можуть встановити розширення.
 
У порівнянні з перерахованими вище способами — краще не ускладнювати собі життя, якщо немає реальної необхідності дотримуватися браузера Chrome і політики підприємства з установки розширень.
    
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.