Sebastien
Sebastien

Reputation: 6542

How to download older versions of Chrome from a google official site

Chrome websites offers only download for the latest version. However it is sometimes necessary to debug a web app against an older version of Chrome.

There are several third-party sites (as mentioned in https://stackoverflow.com/questions/33705280/how-to-download-an-old-version-of-chrome) that allows to download Chrome binaries but I don't want to download from those third-party for security reasons.

So the question is is there some way to download older versions of Chrome from a google managed server?

Upvotes: 45

Views: 182564

Answers (11)

Jespertheend
Jespertheend

Reputation: 2270

None of these answers seemed to work for me, so I decided to tackle this issue once and for all.

You can visit https://old-chrome.deno.dev/ to download your desired version. Note that these are 'Chromium' builds, meaning that some proprietary functionality from Google is missing.

enter image description here

This is how it works behind the scenes:

  1. Visit https://versionhistory.googleapis.com/v1/chrome/platforms/<platform>/channels/stable/versions/all/releases for a list of all versions, where you replace <platform> with one of the platforms listed on https://versionhistory.googleapis.com/v1/chrome/platforms/
  2. Once you've found the version you wish to download, enter it in https://chromiumdash.appspot.com/fetch_version?version=<your version> and note the chromium_main_branch_position.
  3. If you're lucky, this commit id has a build for your platform. But since that's unlikely, you'll have to keep incrementing the id until you find one that works. To make things easier, you can find the next working id on https://commondatastorage.googleapis.com/chromium-browser-snapshots/?delimiter=/&prefix=<platformDir>/&marker=<platformDir>/<branch_position>/.
  4. Once you've got your commit id, you can enter it in https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=<platformDir>/<commit id>/
    • ` is once again a directory name from step 3
    • <commit id> is the working commit id.

This works all the way to version 90, versions before that don't seem to have their commit ids listed on chromiumdash.appspot.com. Hopefully this solution keeps working for foreseeable future. But things seems to have been changed a lot in the past, so who knows.

Upvotes: 2

Jorge Lazo
Jorge Lazo

Reputation: 388

For any one stumbling on this looking for older RPM/DEBs stable Chrome packages, you can use the following official link format, I don't know what is the retention policy but it seems Chrome keeps roughly the last year or so worth of versions.

RPM: https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome-stable-[CHROME_VERSION]-1.x86_64.rpm

DEB: http://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_[CHROME_VERSION]-1_amd64.deb

Replace [CHROME_VERSION] with the version you want, you can look for release versions in https://chromiumdash.appspot.com/releases

Make sure you set the top dropdown to Linux, the stable versions will be on the left. For example if you want an RPM package for version 127.0.6533.119 then you would use:

https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome-stable-127.0.6533.119-1.x86_64.rpm

Chrome stable versions

Upvotes: 0

Hashim Aziz
Hashim Aziz

Reputation: 6092

The simplest method for versions of Chromium

  1. Use Ctrl+F to search this page for the latest version you're looking for that's in the operating system you need (eg. version 114 for Linux).

  2. Once you've found the version and commit you want, scroll to the 5th column for its download position (not the position, which is the 4th column). Both position and download position are similar 7-digit numbers.

The download position should be all you need to programmatically grab the Chrome version you need. For example, the following step in a GitHub Actions workflow file will grab version 114 of Chromium for integrated testing:

- name: Get Chromium v114
  uses: browser-actions/setup-chrome@latest
  with:
    chrome-version: 1135561 # Download position for a commit of Chrome v114

Upvotes: 1

philiptdotcom
philiptdotcom

Reputation: 31

Looks like you can now just go to:

https://chromiumdash.appspot.com/branches

...to find the links easily (via a redirect from https://omahaproxy.appspot.com/ which was the URL suggested in a previous post).

Upvotes: 2

burroughs06
burroughs06

Reputation: 353

I found this gist https://gist.github.com/pudquick/8cd029d0967ee6f5ee353ed5a967f33c, I forked it and added the targetversionprefix param to the XML. And made it python3 compat. Download it. modify the mac OS version to your system's version and update the target_version_prefix.

https://gist.github.com/ryfloyd/afc8d87947a520e6094fec4878051ea8

Running it python google_chrome_update_checker.py and it will output the download link:

http://edgedl.me.gvt1.com/edgedl/release2/chrome/adz7khcqxkffkhisiosxcdsiedgq_114.0.5735.198/GoogleChrome-114.0.5735.198.dmg

Upvotes: 1

Andrzej Jakuszyk
Andrzej Jakuszyk

Reputation: 559

You can use Update API used by Chrome to discover links to the latest 14 releases. The PowerShell code bellow prints the links for the version 115.0.

$ChromeVersion = '115'

$requestId = ([String][Guid]::NewGuid()).ToUpper()
$sessionId = ([String][Guid]::NewGuid()).ToUpper()

$xml = @"
<?xml version="1.0" encoding="UTF-8"?>
<request protocol="3.0" updater="Omaha" sessionid="{$sessionId}"
    installsource="update3web-ondemand" requestid="{$requestId}">
    <os platform="win" version="10.0" arch="x64" />
    <app appid="{8A69D345-D564-463C-AFF1-A69D9E530F96}" version="5.0.375"
        ap="x64-stable-statsdef_0" lang="" brand="GCEB">
        <updatecheck targetversionprefix="$ChromeVersion"/>
    </app>
</request>
"@

$webRequest = @{
    Method    = 'Post'
    Uri       = 'https://tools.google.com/service/update2'
    Headers   = @{
        'Content-Type' = 'application/x-www-form-urlencoded'
        'X-Goog-Update-Interactivity' = 'fg'
    }
    Body      = $Xml
}

$result = Invoke-WebRequest @webRequest -UseBasicParsing
$contentXml = [xml]$result.Content
$status = $contentXml.response.app.updatecheck.status
if ($status -eq 'ok') {
    $package = $contentXml.response.app.updatecheck.manifest.packages.package
    $urls = $contentXml.response.app.updatecheck.urls.url | ForEach-Object { $_.codebase + $package.name }
    Write-Output "--- Chrome Windows 64-bit found. Hash=$($package.hash) Hash_sha256=$($package.hash_sha256)). ---"
    Write-Output $urls
}
else {
    Write-Output "Chrome not found (status: $status)"
}

For Windows 64-bit the links are the following:

You can find the detailed explanation of how it works here

Upvotes: 30

Daniel Nalbach
Daniel Nalbach

Reputation: 1233

My answer will be Linux specific. This is for actual chrome, not chromium.

I was able to get a past version by modifying the current stable version link with the version I wanted. For example, the current link is:

https://dl.google.com/linux/deb/pool/main/g/google-chrome-stable/google-chrome-stable_117.0.5938.132-1_amd64.deb

I want version 114.0.5735.198 so I changed the link above to this and it worked: https://dl.google.com/linux/deb/pool/main/g/google-chrome-stable/google-chrome-stable_114.0.5735.198-1_amd64.deb

I have no idea how many versions they keep in that folder, so this may not take you very far back and they could clear the old versions at any time.

I did use the reference @sebastien gave to the Chrome Release Blog to get my desired version number.

Upvotes: 5

DaMaxContent
DaMaxContent

Reputation: 254

If you are looking to do this programmatically for Chrome, @Andrzej Jakuszyk's answer is correct.

If you are looking to do this programmatically for Chromium (which the other answers show you how to do manually/unofficially) you can make use of several different official tools:

A. Get the tags with (this is actually very fast - only takes a couple of seconds to pull all of the tags):

  • git ls-remote --tags <repo>
    • where repo is either:
      • https://chromium.googlesource.com/chromium
      • https://github.com/chromium/chromium.git

B. Then, get the base position

  • Google uses commit positions as well as commit hashes
    • they are serialized commit positions on a branch (makes it easier to navigate through commit histories). They can be found at the tail end of Google git commit messages. It will be in the format <reference-head>@{<position>}
    • a base position is the position on the main branch where the feature branch broke off from (it is the common ancestor)
  1. with omahaproxy's dep.json (which is a very clean and official method, but is losing support next year as it is being replaced by ChromiumDash)
    • https://omahaproxy.appspot.com/deps.json?version=<tag from git ls-remote>
  2. or by parsing the git commit history with:
    1. git fetch + git log (significantly slower method - can take 30+ minutes to parse) directly on the chromium source code
    2. or the GitHub REST API (significantly faster and still official, but not as official as using git fetch) for the GitHub mirror - https://github.com/chromium/chromium
    • Both using the GitHub repo and the git fetch commands directly are both officially supported methods
      • However, as git is just a part of Google's versioning control system, and GitHub is a mirror of that git repo, the mirror isn't as tightly supported as the original repo itself.

        Google uses Piper for source code management, so the GH mirror is just a "nicety" provided by Google.

C. Once you've gotten the base position, you can use step 3 from @mmel/@Sebastion's answer to get the download link

Upvotes: 1

vikyd
vikyd

Reputation: 2033

@Sebastien is right.

But if you want to download Chromium without known any version number, this page provides verison list to download:

https://vikyd.github.io/download-chromium-history-version/

Unofficial page, but official downlaod links inside. still safe.

Upvotes: 30

Lazer Porter
Lazer Porter

Reputation: 334

I was having some trouble with the accepted answer, but I found this list of official download links by version number:

https://chromium.cypress.io

Upvotes: 10

Sebastien
Sebastien

Reputation: 6542

Older version of Chrome are not publicly available but you can find and download the matching Chromium binaries from the Chromium build server.

To do so follow the procedure below (derived from Chromium wiki):

1/ Find the Full Version Number

You can lookup the full version number matching a release by searching in the Chrome Releases Blog

Example:

2/ Find the Branch Base Position

Use the "Version Information" tool to find a Branch Base Position for the Full Version number. To do that enter the Full Version Number and press lookup. If the version returns an empty Branch Base Position try increment the last component of the version until you get a Branch Base Version.

Example:

Looking up 69.0.3497.81 image.png retrieves no Branch Base Position

But looking up 69.0.3497.82 enter image description here retrieves Branch Base Position: 576753

3/ Download the content for Branch Base Position and platform

Then download the content from the url where you replaced your platform and Branch Base Position value. https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=[platform]/[Branch Base Position]/

Where [platform] is either "Win_x64", "Linux_x64" or "Mac"

Example:

for Chrome 69 on Linux https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/576753/

Upvotes: 72

Related Questions