extension_id=jifpbeccnghkjeaalbbjmodiffmgedin # change this ID
curl -L -o "$extension_id.zip" "https://clients2.google.com/service/update2/crx?response=redirect&os=mac&arch=x86-64&nacl_arch=x86-64&prod=chromecrx&prodchannel=stable&prodversion=44.0.2403.130&x=id%3D$extension_id%26uc"
unzip -d "$extension_id-source" "$extension_id.zip"
Thx to crxviewer for the magic download URL.
The Chrome extension source viewer is open source (github repo) and makes this super easy.
- Find your Chrome local profile directory. Open
chrome://version/
and find the "Profile Path:` field. Open that folder up. - Open the
Extensions/
subfolder - All your extensions are here, with typically readable source.
- On
about:extensions
, turn on Developer Mode and you'll see IDs under each entry - Inside the
Extensions/
folders, the manifest.json has a readablename
field
When using the above parameters for the request URL the API returns an empty response body along with an HTTP 204 status code.
Adding
acceptformat=crx3
to the request URL returns the extension.The SHA-256 checksum of the downloaded file matches the value returned by the API.
Only
response
,prodversion
,x
andacceptformat
seem to be mandatory parameters, at least a request with only those results in an identical file.It seems further that
prodversion
can be any value >= 32.