下载官方旧版本 Chrome

2024-07-30 • 更新于 2025-02-06

已经忍 Chrome 很久了,但是如果换其他浏览器,想想那一堆扩展脚本密码书签就头疼。整天提醒更新,不知道更新了个什么玩意,反而把原来的功能改成依托答辩。

万万没想到,在三哥的英明领导下,狗鸽又拉了几坨大的:

  • 想要复制下载链接只能到下载记录里。
  • 升级到 127.0.6533.73,下载记录没有链接了,光标移动到上面都不行,只能看到域名。
  • 升级到 128.0.6613.138,这下连域名都看不到了,只有在下载完成后光标移到文件名上有链接。
  • 129 以后,Catalina 也不支持了。

地铁老人手机.jpg

就有没有一种可能,我只想获取文件的真实链接呢?这就是地球上最流行的浏览器吗?张小龙都觉得抽象。

于是去找历史版本,结果狗鸽居然不提供,只给过时系统提供最后一个版本。

去第三方网站 uptodown.com 下载最新版,和狗鸽官网的 sha256 都对不上,这尼玛谁敢用?

也翻了很多号称官方下载的帖子,这些工具号称是 Chrome,其实都是 Chromium,我也是服了。

最后终于找到了一个获取 Chrome 官方链接的 Python 脚本1,不过只能获取 macOS 版 Chrome,用 Shell 重写了一下。

还找到一个 Windows 适用的2,但是没试过。

Shell 脚本

get-chrome.sh
#!/usr/bin/env sh

set -e

UUID=$(uuidgen | tr '[:upper:]' '[:lower:]')
PLATFORM=mac
OS_VERSION=
TARGET_VERSION_PREFIX=

error() { printf "%s\n" "$@" >&2; }

if [ "$(uname)" = Darwin ]; then
  OS_VERSION=$(sw_vers -productVersion | grep -o '[[:digit:]]\+\.[[:digit:]]\+')
fi

PRINT_ALL_LINKS=false
PRINT_SHA256=false
SHA_256=

SCRIPT=$(basename "$0")

USAGE=$(
  cat <<-END
Usage: $SCRIPT [<options>]
Get official download link of Chrome for macOS.

  -o <os_version>             set OS version, e.g. '10.15'
  -t <target_version_prefix>  set target version prefix of Chrome, e.g. '126'
  -a                          print all available links (by default, print first HTTPS link only)
  -s                          print sha256 checksum
  -h                          display this help and exit

Home page: <https://binac.org/posts/download-an-old-version-of-chrome/>
END
)

_exit() {
  error "$USAGE"
  exit 2
}

while getopts "asho:t:" c; do
  case $c in
  o) OS_VERSION=$OPTARG ;;
  t) TARGET_VERSION_PREFIX=$OPTARG ;;
  a) PRINT_ALL_LINKS=true ;;
  s) PRINT_SHA256=true ;;
  h) error "$USAGE" && exit ;;
  *) _exit ;;
  esac
done

[ -z "$OS_VERSION" ] && error "OS version not set" && exit 2

URL="https://tools.google.com/service/update2"

DATA="<request protocol=\"3.0\" requestid=\"$UUID\">
    <os platform=\"$PLATFORM\" version=\"$OS_VERSION\" />
    <app appid=\"com.google.Chrome\" lang=\"en-us\">
        <updatecheck targetversionprefix=\"$TARGET_VERSION_PREFIX\"/>
    </app>
</request>"

CONTENT=$(curl -fsSL -X POST "$URL" -d "$DATA")

LINKS=$(echo "$CONTENT" | grep -o 'https\?://[^"]*')
NAME=$(echo "$CONTENT" | grep -o ' name="[^"]*' | cut -c 8-)

if [ "$PRINT_ALL_LINKS" = false ]; then
  LINKS=$(echo "$LINKS" | grep -o 'https://[^"]*' | head -1)
fi
for link in $LINKS; do
  echo "$link$NAME"
done

SHA_256=$(echo "$CONTENT" | grep -o 'hash_sha256="[^"]*' | cut -c 14-)
if [ "$PRINT_SHA256" = true ]; then
  error "sha256 $SHA_256"
fi

默认输出第一个 HTTPS 链接,用 -o 指定系统版本(需要注意,见后文),-t 指定大版本,-a 打印所有链接,-s 打印 sha256,例如:

$ get-chrome.sh -o 11 -t 126 -s
https://redirector.gvt1.com/edgedl/release2/chrome/c27alpqp6yqlnckxwaxrg35r2y_126.0.6478.183/GoogleChrome-126.0.6478.183.dmg
sha256 7bb3660120eb9e857f371b390f470a530ef2e956e6426a14b4193751684393f6

脚本是从 tools.google.com 获取,得到链接域名是 gvt1.com,这应该也是狗鸽的域名。

狗鸽最贱的一点是,对废弃的系统,它只会返回最后支持的版本。

比如对 Mojave(10.14),它就只返回 116.0.5845.187。对 Catalina(10.15),它就只返回 128.0.6613.138,即使 128 以前的版本也可用。

只有用 -o 11 指定系统为 Big Sur(11)时,它才会老实,但也只能得到支持 Big Sur 以后的版本(>=122),目前版本如下(均可用于 Catalina):

$ for v in $(seq 100 128); do get-chrome.sh -o 11 -t "$v" -s; done
https://redirector.gvt1.com/edgedl/release2/chrome/mem3daavyalw3ej62rqnfxrt4e_122.0.6261.129/GoogleChrome-122.0.6261.129.dmg
sha256 655542b6a1cf41d4982a2c1353310855dfa03834d18253f54910cca0289fa6a1
https://redirector.gvt1.com/edgedl/release2/chrome/ad5yyrouti3mrydk3xx37nwvpiga_123.0.6312.124/GoogleChrome-123.0.6312.124.dmg
sha256 8393cf83853624488e1ac31633c2787686b0c5b8ddec5d86ce96611ad29f3237
https://redirector.gvt1.com/edgedl/release2/chrome/pyibrq4fvbzbiecijliwb7oyxa_124.0.6367.208/GoogleChrome-124.0.6367.208.dmg
sha256 698b37c47639941443616cb629b2a1f13f45b0a856848d97905ebb5440d06c09
https://redirector.gvt1.com/edgedl/release2/chrome/i5incd454szmu3rscl5w6r5qga_125.0.6422.142/GoogleChrome-125.0.6422.142.dmg
sha256 0a2f19d0a00c256dc6ed005abdcda43c7c1a91fc5dadfb781e33972be8be91dc
https://redirector.gvt1.com/edgedl/release2/chrome/c27alpqp6yqlnckxwaxrg35r2y_126.0.6478.183/GoogleChrome-126.0.6478.183.dmg
sha256 7bb3660120eb9e857f371b390f470a530ef2e956e6426a14b4193751684393f6
https://redirector.gvt1.com/edgedl/release2/chrome/adqui4t7hzlljw2m2mmu2dvb6tmq_127.0.6533.120/GoogleChrome-127.0.6533.120.dmg
sha256 91f5024eef012067194cc69bcb48b294e085c48fa92d772af5f2a8da8c3a1eb3
https://redirector.gvt1.com/edgedl/release2/chrome/gtm24cqmnwgcp7dtscvlmsbrwa_128.0.6613.138/GoogleChrome-128.0.6613.138.dmg
sha256 c1dea7dc078ac4a773fb95fd5f14e2d501f3981cb329180859c7378811e1b59b

我对这些版本都做了备份,虽然大概率没什么用。需要的可以联系我。

对 10.* 所有版本运行结果如下(这些下载链接在官网的“其他平台”可以找到):

$ for o in $(seq 0 15); do get-chrome.sh -o "10.$o" -s && echo "^^^ 10.$o ^^^"; done
https://dl.google.com/release2/b7c5syhum0krv8iwaxqj75m937t1mxerm4vt7t39qyqq7foxhnpagw0908czwsgdwz9v1phqybtkyzal6afib1gu2x59e3r0px1/GoogleChrome-49.0.2623.112-Beta.dmg
sha256 b8fb5e4795ff5d4e7501f88b432da558fd54cd3afe078e1cfcd37a917ae5b711
^^^ 10.6 ^^^
https://dl.google.com/release2/b7c5syhum0krv8iwaxqj75m937t1mxerm4vt7t39qyqq7foxhnpagw0908czwsgdwz9v1phqybtkyzal6afib1gu2x59e3r0px1/GoogleChrome-49.0.2623.112-Beta.dmg
sha256 b8fb5e4795ff5d4e7501f88b432da558fd54cd3afe078e1cfcd37a917ae5b711
^^^ 10.7 ^^^
https://redirector.gvt1.com/edgedl/release2/chrome/fOFsZ-5dHaI_65.0.3325.181/GoogleChrome-65.0.3325.181.dmg
sha256 c66f934750643c18e09f09f3103e235d3b6d48dda44dac9993ca53cf95db0d2d
^^^ 10.9 ^^^
https://redirector.gvt1.com/edgedl/release2/chrome/fnc67wptv5dybsdbrounkk36mu_103.0.5060.134/GoogleChrome-103.0.5060.134.dmg
sha256 cec46f072974f5eb82f660328d395cde5c3e6b2056e5ccba628a7af1c722123a
^^^ 10.11 ^^^
https://redirector.gvt1.com/edgedl/release2/chrome/fnc67wptv5dybsdbrounkk36mu_103.0.5060.134/GoogleChrome-103.0.5060.134.dmg
sha256 cec46f072974f5eb82f660328d395cde5c3e6b2056e5ccba628a7af1c722123a
^^^ 10.12 ^^^
https://redirector.gvt1.com/edgedl/release2/chrome/acmm55cy3sg73rcub4rfcdfjjmza_116.0.5845.187/GoogleChrome-116.0.5845.187.dmg
sha256 9c338299144c8eabe355e2cfb740dfd1f3d8fe42732f2e015e9901c0b9c499aa
^^^ 10.13 ^^^
https://redirector.gvt1.com/edgedl/release2/chrome/acmm55cy3sg73rcub4rfcdfjjmza_116.0.5845.187/GoogleChrome-116.0.5845.187.dmg
sha256 9c338299144c8eabe355e2cfb740dfd1f3d8fe42732f2e015e9901c0b9c499aa
^^^ 10.14 ^^^
https://redirector.gvt1.com/edgedl/release2/chrome/gtm24cqmnwgcp7dtscvlmsbrwa_128.0.6613.138/GoogleChrome-128.0.6613.138.dmg
sha256 c1dea7dc078ac4a773fb95fd5f14e2d501f3981cb329180859c7378811e1b59b
^^^ 10.15 ^^^

Python 脚本

os_version = '14.2'
target_version_prefix = '114'

改一下就能用了。

ChromePythonmacOSShell

本作品根据 署名-非商业性使用-相同方式共享 4.0 国际许可 进行授权。

为邮件客户端添加 OAuth 2.0 代理

不要使用 grep -v 来检查文件是否不包含特定字符串