使用Chrome 35及更高版本启用非PlayStore UserScript

Dem*_*gos 15 javascript google-chrome userscripts google-chrome-extension

自Google Chrome版本35开始,Google PlayStore外部安装的任何扩展程序的执行都会被阻止,无法通过扩展程序菜单启用.

两年前删除了非商店脚本的自动安装,但下载脚本并在扩展菜单上执行拖放操作仍允许安装,因此仍可以为Google的Chrome创建和共享脚本.但现在一切都被锁定了.

  • 是否可以手动为独立脚本添加权限?
  • 是否可以将个人网站列入白名单?
  • 还有其他解决方案吗?

我知道这个限制不适用于devcanary释放频道,但脚本的目的是让有足够知识的用户知道他们做了什么,而不强迫他们更改浏览器.本机支持支持在Chrome上相当有用(即使现在完全锁定),因此没有第三方插件(即:Tampermonkey)的解决方案更好.

谢谢

use*_*118 13

除了安装像Tampermonkey这样的扩展程序或获得不同的浏览器之外,似乎还剩下唯一的方法就是启动带有--enable-easy-off-store-extension-install标记的Chrome浏览器.

编辑:不幸的是,谷歌在4月从Chromium中删除了这个标志.

但是,如果用户(或任何程序)启动Chrome而没有此标志,则脚本将自动禁用.即使使用正确的标志,也无法重新启用它们; 您唯一的选择是卸载它们,然后在简单的场外扩展安装模式下重新安装.

所以,你的选择是:

  1. --enable-easy-off-store-extension-install每次都会使用标记启动Chrome.如果您已将Chrome固定到Windows 7中的任务栏,则此处描述了更改此快捷方式的命令行参数的方法.
    如果您已将Chrome设置为HTTP和HTTPS协议的默认协议处理程序(如果您将Chrome设置为默认浏览器就是这种情况),则可以修改注册表,以便每次程序尝试打开HTTP时都设置此标记或使用默认程序的HTTPS URL.
    还要确保您将此参数设置为文件扩展名的Chrome配置为打开,如.xht,.htm.xhtml.您可以使用以下.reg文件执行此操作:

    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT\ChromeHTML\shell\open\command]
    @="\"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe\" --allow-easy-off-store-extension-install -- \"%1\""
    
    Run Code Online (Sandbox Code Playgroud)


    安装时,请确保Chrome的路径正确无误.

  2. 安装扩展程序(如Tampermonkey)以管理用户脚本.
  3. 安装不同的浏览器,可以是Chrome的开发人员版本,也可以是完全不同的浏览器,例如Opera(本机支持用户脚本)或Firefox(带Scriptish).
  4. 在收到版本35之前阻止Chrome更新并有被黑客入侵的风险.
  5. 切换到其他操作系统,因为扩展仅在Windows上被阻止.
  6. 如果您的计算机是Windows域的一部分,则可以使用组策略安装扩展.
  7. 将用户脚本转换为bookmarklet.

我意识到这可能不是你想听到的,但是由于谷歌继续限制诚实的开发者,因为有一些不好的玩家没有更好的选择.

编辑:我发现还有一种方法,即使用正确的权限劫持已安装的扩展:

  1. 查找并安装有权在您希望其运行的网页上运行内容脚本的扩展程序.例如,Note Anywhere扩展程序有权在为任何HTTP或HTTPS URI加载文档时注入用户脚本.
  2. 转到扩展页面以查找扩展的ID.
  3. 打开Chrome存储扩展程序的文件夹.在Windows上,这是%localappdata%\Google\Chrome\User Data\Default\Extensions.
  4. manifest.json,找到注入脚本的名称和位置.使用您的用户脚本覆盖此文件的内容.(在选择扩展名的情况下,这是asset/stickies.js.
  5. 删除未引用的扩展名的任何内容manifest.json.将任何未使用的引用脚本和HTML页面替换为emtpy文件.
    对于上面提到的扩展,我将删除除图标,内容脚本以外的任何内容,asset/stickies.cssbackground.html用空文件替换后两者.
  6. 转到Chrome扩展程序页面并禁用然后重新启用该扩展程序.
  7. 如果更新扩展,请备份您的工作.
  8. 在某处注明扩展名列表中的扩展名已将其内容替换为您的用户脚本.


Dem*_*gos 13

编辑:我验证了这个解决方案,因为它特别有助于我解决这个问题.更丰富的答案是user2428118提交的变通方法列表.即使他们没有解决我的具体问题,也应该考虑他们.

我终于可以通过yoz发布的链接找到我的问题的答案,事实是你仍然可以启用与PlayStore无关的脚本,没有任何第三方插件,但正如你将看到的那样:它可能最好使用TamperMonkey(即使它可能意味着很少适应,它更容易200%).

解决方案是在开发人员模式下导入解压缩的用户脚本.

逐步说明

  1. myscript.user.js通常创建用户脚本

  2. 将其包含在目录中并创建一个名为的文件manifest.json.你会得到这个结构(可以压缩分发):

    的MyScript /

    • 的manifest.json
    • myscript.user.js
  3. manifest.json是在开发人员中将脚本导入为Chrome扩展程序所需的文件.它描述了您的用户脚本.这是相关文档,但我们目的的最小代码是:

     {
         "manifest_version":2,
         "version":"1.0",
         "name": "MyScript",
         "content_scripts": [
             {
                 "js": ["myscript.user.js"],
                 "matches": ["http://domain.com/"]
             }
         ]
     }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 现在您的目录中包含用户脚本和manifest.json,您可以将其作为解压缩的扩展名导入(Chrome重启后将禁用打包的扩展名).要实现此目的,只需选中"开发人员模式"并选择"加载解压扩展...".导航到在步骤2中创建的目录并选择它:即"全部".

加载解压扩展

优点

  • 原生解决方案
  • 如果你在Chrome上开发你的脚本,那对你来说很自然(显然这不是我的情况:P)
  • 您的脚本现在被视为"真正的"扩展.

缺点

  • 哦,上帝...我错过了一键安装:即使用户只需要完成第4步,它仍然是一个痛苦.
  • 看起来不那么"专业",因为用户必须启用开发者模式
  • 不再是"跨浏览器"分发,因为Google Chrome的脚本必须以特殊方式打包
  • 在不破坏脚本的情况下无法(重新)移动原始目录
  • 每次Chrome打开时都会触发警告,询问您是否确定要使用开发者模式

结论

我喜欢用户脚本在Chrome上具有本机支持的方式:每个第三方插件都有一些小的变化(即:数据或xhr处理).但缺点是很多,也很重要(特别是最后两个)... 即使以本机方式启用非PlayStore脚本也是如此,我建议将脚本改为适用于插件等作为TamperMonkey.毕竟,Chrome是一个例外,因为每个其他浏览器都需要一个插件,现在这些插件是唯一的方法.

我仍然感到有点失望,所以如果有人碰巧找到了更好的解决方案(仍然希望有一些白名单),我会很乐意提供一些赏金.

编辑:请注意user2428118提供了其他有趣的解决方法列表.即使他们没有解决我的特定问题,也应该考虑他们.

编辑:清单固定


use*_*153 5

从@ user2428118回答解决方案1的继续.

为确保您始终使用--enable-easy-off-store-extension-install标记启动Chrome ,可以使用(除了编辑菜单启动等所有快捷方式之外)此注册表文件:

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\""
Run Code Online (Sandbox Code Playgroud)

替换C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe为系统中的实际路径chrome.exe.