下载官方旧版本 Chrome

2024-07-30 • 更新于 2024-08-07

已经忍 Chrome 很久了,但是太依赖扩展和脚本,想换其他浏览器也没什么动力。整天提醒更新,不知道更新了个什么东西,反而把原来的功能改成依托答辩。

万万没想到,在三哥的英明领导下,谷歌又拉了坨大的:升级到 127.0.6533.73,下载记录没有链接了,光标移动到上面都不行,只能看到域名。

地铁老人手机.jpg

这就是地球上最流行的浏览器吗?张小龙都觉得抽象。

于是去找历史版本,结果谷歌居然不提供。

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

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

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

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

Python 脚本

os_version = '14.2'
target_version_prefix = '114'

改一下就能用了。脚本是从 tools.google.com 获取,得到链接域名是 gvt1.com,这应该也是谷歌的域名。

Shell 脚本

原理和上面一样,默认输出第一个 HTTPS 链接,用 -t 指定大版本,-a 打印所有链接,-s 打印 sha256,例如:

$ get-chrome.sh -t 126 -s
https://redirector.gvt1.com/edgedl/release2/chrome/c27alpqp6yqlnckxwaxrg35r2y_126.0.6478.183/GoogleChrome-126.0.6478.183.dmg
sha256 7bb3660120eb9e857f371b390f470a530ef2e956e6426a14b4193751684393f6
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
ChromePythonmacOSShell

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

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

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