Включить не-PlayStore UserScript с Chrome 35 и выше

Поскольку версия 35 Google Chrome выполнение любого расширения, установленного за пределами Google PlayStore, заблокировано и не может быть включено из меню расширений.

Автоматическая установка скриптов, не связанных с хранилищем, была удалена два года назад, но загрузка script и выполнение перетаскивания в меню расширений все еще позволяли установку, поэтому было возможно создавать и публиковать сценарии для Google Хром. Но теперь все заблокировано.

  • Можно ли вручную добавить разрешения к вашим независимым скриптам?
  • Возможно ли выполнить white-list персональный веб-сайт?
  • Есть ли другое решение?

Я знаю, что это ограничение не распространяется на каналы выпуска dev и canary, но сценарии предназначены для использования пользователями с достаточным количеством знаний, чтобы знать, что они делают, не заставляя их менять свой браузер. Поддержка встроенной поддержки довольно интересна для Chrome (даже если она полностью заблокирована), поэтому лучше, чем сторонний плагин (например, Tampermonkey).

Спасибо

Ответы

Ответ 1

РЕДАКТИРОВАТЬ. Я проверяю это решение, потому что это помогло мне особенно в этой проблеме. Более богатый ответ список обходных путей, отправленных пользователем2428118. Даже если они не решили мою конкретную проблему, их следует учитывать.

Наконец-то я смог найти ответ на свой вопрос благодаря ссылке, опубликованной yoz, и факт в том, что вы может по-прежнему включать script, не относящуюся к PlayStore, без какого-либо стороннего плагина, но, как вы увидите: лучше использовать TamperMonkey (даже если это может означать небольшую адаптацию, это 200% проще).

Решение импортировать распакованный пользователь - script в режиме разработчика.

Шаг за шагом Объяснение

  • Создайте своего пользователя script myscript.user.js как обычно

  • Включите его в каталог и создайте файл с именем manifest.json. Вы получите эту структуру (может быть заархивирована для распространения):

    MyScript/

    • manifest.json
    • myscript.user.js
  • manifest.json - это файл, необходимый для импорта вашего script в качестве расширения Chrome в разработчике. Он описывает пользователя script. Вот ссылка документация, но минимальный код для нашей цели:

     {
         "manifest_version":2,
         "version":"1.0",
         "name": "MyScript",
         "content_scripts": [
             {
                 "js": ["myscript.user.js"],
                 "matches": ["http://domain.com/"]
             }
         ]
     }
    
  • Теперь, когда у вас есть каталог с вашим пользователем script и manifest.json, вы можете импортировать его в качестве распакованного расширения (упакованный будет отключен после перезапуска Chrome). Для этого просто проверьте "режим разработчика" и выберите "Загрузить распакованное расширение...". Перейдите в каталог, созданный на шаге 2, и выберите его: "все".

Load Unpacked Extension

Pros

  • Родное решение
  • Природный для вас, если вы разрабатываете свой script в Chrome (очевидно, это был не мой случай: P)
  • Ваш script теперь рассматривается как "реальное" расширение.

Против

  • О, боже... Мне не хватает установки одним щелчком мыши: даже если пользователю только нужно выполнить шаг 4, это все равно боль.
  • Выглядит менее профессионально, потому что пользователь должен включить режим разработчика
  • Больше не "кросс-браузер", поскольку Google Chrome script должен быть упакован особым образом.
  • Исходный каталог не может быть (повторно) перемещен без нарушения script
  • Предупреждение будет запускаться каждый раз, когда Chrome открыт, чтобы спросить, уверены ли вы, что вы хотите использовать режим разработчика.

Заключение

Мне понравилось, как пользовательские скрипты имели встроенную поддержку Chrome: у каждого стороннего плагина есть небольшие изменения (то есть: обработка данных или xhr). Но минусы многочисленны и важны (особенно два последних)... Даже если включение не-PlayStore script возможно на родном пути, стало такой болью, что я рекомендую адаптировать script для плагина, такого как TamperMonkey. В конце концов, Chrome был исключением, поскольку для каждого другого браузера требуется плагин, теперь эти плагины - единственный способ.

Я все еще чувствую себя немного разочарованным, поэтому, если кто-то найдет лучшее решение (все еще надеясь на некоторые белые списки), мне понравится предлагать некоторую награду.

EDIT. Обратите внимание, что user2428118 предоставил список других интересных обходных решений. Даже если они не решили мою специфическую проблему, их следует учитывать.

РЕДАКТИРОВАТЬ: зафиксировано фиксированное

Ответ 2

Единственный путь, который, как представляется, оставлен, помимо установки расширения, такого как Tampermonkey или получения другого браузера, запускает браузер Chrome с флагом --enable-easy-off-store-extension-install.

Изменить: К сожалению, Google удалил этот флаг из Chromium в апреле.

Однако, если пользователь (или любая программа) запускает Chrome без этого флага даже один раз, скрипты будут автоматически отключены. Вы не можете повторно включить их, даже с правильным флагом; ваш единственный вариант - удалить их и переустановить, а затем в режиме простой установки с расширением магазина.

Итак, ваши варианты:

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

Изменить: есть еще один подход, который, как я обнаружил, работает, а именно захват установленного расширения с правильными разрешениями:

  • Найдите и установите расширение, у которого есть разрешение на запуск содержимого Script на веб-странице, на которую вы хотите запустить. Например, расширение Note Anywhere разрешает вводить пользователя Script, когда документ загружается для любого HTTP или HTTPS URI.
  • Перейдите на страницу расширений, чтобы найти идентификатор расширения.
  • Откройте папку, в которой хранятся расширения Chrome. В Windows это %localappdata%\Google\Chrome\User Data\Default\Extensions.
  • В manifest.json найдите имя и расположение введенного script. Перезапишите содержимое этого файла с помощью пользователя script. (В случае расширения, выбранного в качестве примера, это asset/stickies.js.
  • Удалите любой контент расширения, не упомянутый в manifest.json. Замените все сценарии с ссылками и HTML-страницы, которые вы не используете с помощью файлов emtpy.
    Для расширения, упомянутого выше, я удаляю все, кроме значков, содержимого script, asset/stickies.css и background.html и замените последние два пустым файлом.
  • Перейдите на страницу расширений Chrome и отключите и снова включите расширение.
  • Сделайте резервную копию своей работы, если расширение будет обновлено.
  • Запишите где-нибудь, что расширение в списке расширений имеет свое содержимое, замененное вашим пользователем script.

Ответ 3

Продолжение решения номер 1 из ответа @user2428118.

Чтобы гарантировать, что вы ВСЕГДА запускаете Chrome с помощью флага --enable-easy-off-store-extension-install, вы можете использовать (дополнительно для редактирования всех ярлыков при запуске меню и т.д.) this файл реестра:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\http\shell\open\command]
@="\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\" --enable-easy-off-store-extension-install -- \"%1\""

[HKEY_CLASSES_ROOT\https\shell\open\command]
@="\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\" --enable-easy-off-store-extension-install -- \"%1\""

Замените C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe на фактический путь к chrome.exe в вашей системе.

Ответ 4

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

Это лучшее объяснение, которое я нашел:

http://www.chromium.org/developers/extensions-deployment-faq