【问题标题】:How do I enable/disable google chrome extensions via console如何通过控制台启用/禁用谷歌浏览器扩展
【发布时间】:2011-06-09 01:04:32
【问题描述】:

今天,在打开谷歌浏览器时,我意识到如果不去以下位置之一,就没有简单的方法来启用或禁用扩展程序:

  1. chrome://extensions
  2. 点击工具>扩展>启用/禁用

之所以如此重要,是因为它占用的资源。

例如:我将要启动我的计算机,并且我想立即快速打开 Google Chrome。例如,假设我在打开 Chrome 之前运行了 100 个进程。但是,一旦我打开 Chrome,这个数字就会跳到 160,因为它启动时会加载所有扩展。

这是我希望实现的目标和当前的限制:

期望的结果: 使用控制台轻松启用/禁用/卸载扩展

限制: 无法将许多扩展程序分组,以便轻松启用/禁用它们

如果这部分问题不允许/偏离主题,请告诉我

【问题讨论】:

    标签: google-chrome-extension google-chrome-devtools


    【解决方案1】:

    Chrome 将扩展设置存储在您的配置文件目录中名为 Preferences 的 JSON 文件中(此处为 ~/.config/google-chrome/Default/Preferences)。启用/禁用标志是每个分机的“状态”键,1 表示启用,0 表示禁用。您可以在启动 Chrome 之前编写一个修改此文件的脚本。如果您想自动启动 Chrome,您可以将此脚本设置为在登录时运行,甚至在最后启动 Chrome。存储要明确禁用预启动的扩展程序列表,以仅选择其中一些。

    我会确保您不会在 Chrome 运行时更新偏好设置。

    这对我有用,并且可能适用于任何类似 *nix 的系统。移植到 Windows 应该相当简单:chrome_dir 和检查 Chrome 是否正在运行可能是唯一需要的更改。

    #!/usr/bin/env python2.6
    
    import datetime
    import json
    import os
    import sys
    from os import path
    
    chrome_dir = path.expanduser("~/.config/google-chrome")
    if path.lexists(chrome_dir + "/SingletonLock"):
      # there may be a better and portable way to determine if chrome is running
      sys.exit("chrome already running")
    
    prefs_file = chrome_dir + "/Default/Preferences"
    now = datetime.datetime.now()
    prefs_backup_file = prefs_file + now.strftime("-%Y%m%d-%H%M%S")
    
    enable_keys = [
      # list hash keys, you can find from URL given on chrome://extensions
      "aeoigbhkilbllfomkmmilbfochhlgdmh",
      ]
    disable_keys = [
      "hash-like key here",
      ]
    
    default_state = 0
    # 1 to enable, 0 to disable, None to leave alone
    
    with open(prefs_file) as f:
      prefs = json.load(f)
    os.rename(prefs_file, prefs_backup_file)
    
    for key, ext in prefs["extensions"]["settings"].iteritems():
      if not ext.has_key("state"):
        # may be blacklisted
        continue
    
      if key in enable_keys:
        ext["state"] = 1
      elif key in disable_keys:
        ext["state"] = 0
      elif default_state is not None:
        ext["state"] = default_state
    
    with open(prefs_file, "w") as f:
      json.dump(prefs, f)
    

    【讨论】:

    • 嘿@Fred Nurk,感谢您花时间在 Linux 中编写脚本,但是如何将其转换为 Windows,例如 VBScript 或 Powershell?
    • @Jon:我不知道 VB 和 Powershell。这是一个 Python 脚本,Python 在 Windows 上运行。我列出了我认为 Windows 所需的唯一更改,但我没有在这里检查。
    • @Jon: 将 default_state 设置为 None 并仅在 disable_keys 中列出有问题(资源匮乏)的扩展可能是您最好的选择,如果您不喜欢禁用所有扩展。 FWIW 我喜欢 Chrome 已经有一段时间了,但我又回到了 Opera,因为你遇到的正是这个问题:对于我想要的功能,Opera 运行得更好。 YMMV,一如既往。
    • @Jon:我没有尝试过 IronPython,但是这个或类似的东西(可能是一个小的语法更改)应该可以正常工作。您还可以从 python.org 获取适用于 Windows 的 CPython – 将文件命名为 *.pyw for CPython/Windows 以在不显示终端的情况下运行它(脚本只有在出现问题时才会有输出)。
    • @Jon: os.getenv("localappdata") 会得到那个变量,但你确定它都是小写的吗?它可能是 os.getenv("LocalAppData") 或 os.getenv("LOCALAPPDATA")。所以:chrome_dir = path.join(os.getenv("LOCALAPPDATA"), "Google/Chrome/User Data")。您仍然需要弄清楚如何确定 Chrome 当前是否正在运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 2015-04-17
    • 2014-07-24
    相关资源
    最近更新 更多