Skip to content

Latest commit

 

History

39 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chrome Extension Update Watcher

This is a Python script which provides update notifications for Chrome extensions. It is also able to automatically deobfuscate the extension's source and generate diffs between two versions. The script then exports these results to a Discord webhook.

Usage:

  1. Clone this repository.
  2. Install Node.js dependencies (webcrack) by running npm i.
  3. Create a Python virtual environment by running python3 -m venv .venv then activate it with source .venv/bin/activate.
  4. Install Python dependencies by running pip3 install -r requirements.txt.
  5. Run python3 main.py to generate the config file.
  6. Edit config/config.json. The configuration options are detailed in the next section.
  7. Run python3 main.py to download the extensions you configured. Running this file in the future will also check for updates and report them to the configured webhook.
  8. (optional) Put main.py on a cron job to automatically notify you of updates.

Configuration:

  • watched_extensions - A dict of extensions that the script will check for updates, with the extension ID as the key and any options as the value.
  • discord_webhooks - A list of strings containing Discord webhook URLs to report to.
  • collapse_diffs - If this is set to true, the generated diffs will be in one file, instead of being split up for each modified file.
  • debug - If this is set to true, the logging level will be set to logging.DEBUG instead of logging.INFO.
  • chrome_version - A string containing the reported Chrome browser version when checking for updates. This will default to the latest known Chrome version.
  • unbundle - If this is set to true, Webcrack will attempt to unbundle JS files.
  • save_crx - If this is set to true, downloaded CRX files will be saved to the crx/ directory.

Extension Options:

Extension options should be specified as a dict. All settings in this list are optional.

  • update_url - The custom update server for the extension. This defaults to Google's official servers.
  • name_override - Overrides the extension's name.
  • discord_webhooks - Additional Discord webhooks to use only for this extension.
  • footer_text - Text that will be appended to the webhook message body for notifications related to this extension. You can use this to ping specific roles or people for certain extensions.

Example Config File:

{
  "watched_extensions": {
    "haldlgldplgnggkjaafhelgiaglafanh": {
      "update_url": "https://ext.goguardian.com/stable.xml"
    },
    "joflmkccibkooplaeoinecjbmdebglab": {
      "update_url": "https://extensions.securly.com/extensions.xml"
    },
    "pgmjaihnmedpcdkjcgigocogcbffgkbn": {},
    "iheobagjkfklnlikgihanlhcddjoihkg": {
      "name_override": "Securly for Chromebooks (old)"
    },
    "ddfbkhpmcdbciejenfcolaaiebnjcbfc": {}
  },
  "discord_webhooks": [
    "https://discord.com/api/webhooks/xxxxxxxxxxxxxx/xxxxxxxxxxxxxx"
  ],
  "collapse_diffs": true,
  "debug": false,
  "chrome_version": "140.0.7559.221",
  "unbundle": false,
  "save_crx": true
}

Copyright Notice:

This project uses webcrack for the deobfuscation of JS files.

ading2210/ext-watcher: A Python program for Chrome extension update notifications.
Copyright (C) 2026 ading2210

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

About

A Python script which provides update notifications for Chrome extensions, as well as automatic deobfuscation and diff generation.

Resources

Stars

11 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages