自谷歌浏览器版本35以来,在Google PlayStore之外安装的任何扩展程序的执行都被阻止,并且无法通过扩展程序菜单启用。
两年前删除了非商店脚本的自动安装,但下载了脚本并执行了拖放操作。在扩展菜单上放置仍然允许安装,因此仍然可以为Google的Chrome创建和共享脚本。但现在一切都被锁定了。
我知道此限制不适用于dev
和canary
发布渠道,但脚本的目的是让有足够知识的用户知道他们做了什么,而不强迫他们更改他们的浏览器。本机支持支持在Chrome上相当有用(即使现在完全锁定),所以没有第三方插件的解决方案(即:Tampermonkey)更好。
谢谢
答案 0 :(得分:13)
除了安装像Tampermonkey这样的扩展程序或获取其他浏览器之外,似乎还剩下唯一的方法就是启动带有--enable-easy-off-store-extension-install
标记的Chrome浏览器。
修改:不幸的是,Google removed this flag from Chromium in April。
但是,如果用户(或任何程序)在没有此标志的情况下启动Chrome,则会自动禁用脚本。即使使用正确的标志,也无法重新启用它们;您唯一的选择是卸载它们,然后在简易的店外扩展安装模式下重新安装。
所以,你的选择是:
Start Chrome with the --enable-easy-off-store-extension-install
flag every time。如果您已将Chrome固定到Windows 7中的任务栏,则更改此快捷方式的命令行参数的方法为described here。
如果您已将Chrome设置为HTTP和HTTPS的默认协议处理程序协议(如果您将Chrome设置为默认浏览器就是这种情况),您可以modify the registry所以每次程序尝试使用默认程序打开HTTP或HTTPS URL时都会设置此标志。
确定你set this argument for file extensions Chrome is configured to open,例如.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\""
确保安装Chrome时,Chrome的路径正确无误。
我意识到这可能不是你想听到的,但是由于谷歌继续限制诚实的开发者,因为有一些不好的玩家没有更好的选择。
编辑:还有一种我发现有效的方法,即使用正确的权限劫持已安装的扩展程序:
%localappdata%\Google\Chrome\User Data\Default\Extensions
。manifest.json
中,找到已注入脚本的名称和位置。使用您的用户脚本覆盖此文件的内容。 (在选择扩展名的情况下,这是asset/stickies.js
。manifest.json
中未引用的扩展程序的所有内容。将任何未使用的引用脚本和HTML页面替换为emtpy文件。asset/stickies.css
和{{1用空文件替换后两个。答案 1 :(得分:13)
编辑:我验证了这个解决方案,因为它是帮助我的,尤其是在这个问题上。 更丰富的答案是the list of workarounds submited by user2428118 。即使他们没有解决我的具体问题,也应该考虑他们。
感谢the link posted by yoz,我终于找到了问题的答案,事实是你仍然可以启用与PlayStore无关的脚本,而不需要任何第三方插件,但正如你所看到的那样:使用TamperMonkey可能会更好(即使它可能意味着很少的改编,它会更容易200%)。
解决方案是以开发者模式导入解压缩的用户脚本。
通常
myscript.user.js
将其包含在目录中并创建名为manifest.json
的文件。您将获得此结构(可以压缩以便分发):
的MyScript /
- 的manifest.json
- myscript.user.js
manifest.json
是将您的脚本作为Chrome扩展程序导入开发人员所需的文件。它描述了您的用户脚本。这是相关的documentation,但我们目的的最小代码是:
{ "manifest_version":2, "version":"1.0", "name": "MyScript", "content_scripts": [ { "js": ["myscript.user.js"], "matches": ["http://domain.com/"] } ] }
现在您的目录中包含您的用户脚本和manifest.json,您可以将其作为解压缩的扩展程序导入(在Chrome重启后,将打开一个打包的扩展程序 )。要实现这一点,只需检查"开发者模式"并选择"加载未包装的扩展..."。导航到在步骤2中创建的目录并选择它:" s" all"。
我喜欢用户脚本在Chrome上具有原生支持的方式:每个第三方插件都有一些小的变化(即:数据或xhr处理)。但缺点是重要的(尤其是最后两个)... 即使以原生方式启用非PlayStore脚本也是如此,我建议调整脚本以使其变得如此痛苦一个插件,如TamperMonkey 。毕竟,Chrome是一个例外,因为每个其他浏览器都需要一个插件,现在这些插件是唯一的方法。
我仍然感到有些失望,所以如果有人碰巧找到了更好的解决方案(仍然希望有一些白名单),我会很乐意提供一些赏金。
编辑:请注意user2428118 provided a list其他有趣的解决方法。即使他们没有解决我的特定问题,也应该考虑它们。
编辑:显示已修复
答案 2 :(得分:5)
solution number 1 from @user2428118 answer的延续。
为了确保您始终启动Chrome,--enable-easy-off-store-extension-install
为您的标记,可以使用(除了编辑菜单启动中的所有快捷方式等)registry file:
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
的实际路径。
答案 3 :(得分:3)
不幸的是,除了像Tampermonkey这样的扩展外,似乎没有好的解决方法,因为你的脚本的生成方式对每个用户都不同。
这是我发现的最佳解释:
http://www.chromium.org/developers/extensions-deployment-faq