古いバージョンの Chromium/Chrome バイナリを取得する方法, ついでに昔の Chrome の UI スクショ


初めに

ブラウザ互換性確認等で古いバージョンの Chromium/Chrome バイナリを使用したいことありますよね!
都度都度ビルドするの時間掛かって大変ですよね!
というわけで、古いバージョンの Chromium/Chrome バイナリを取得する方法です!

ここでは用途上 Chromium と Chrome は同じものとして扱って良い場合で話を進めます(とある JS 機能の実装有無確認等)。
簡単に Chromium と Chrome の差を wikipedia の Chromium のページ から抜粋しておきます。

このプロジェクトで開発されるChromiumのスナップショットは、Googleによるいくつかの追加機能を除いて、Google Chromeの最新ビルドと本質的に似ている[11]。Google ChromeにありChromiumにない代表的な機能要素は、Googleブランド、自動アップデート機能、クリックラップ契約(英語版)(利用許諾に「同意する」を押下することで承諾するもの)、RLZトラッキング機能、Adobe Flash Playerの同梱などがある。

手順まとめ

  1. Chrome Release から欲しいバージョンのバージョン番号をフルで知る
  2. omahaproxy から Position(コミット ID のようなもの)を知る
  3. continuous builds archive を開く
  4. 環境を選択(Linux / Mac / Win)し、フィルタに Position の数字を入力
  5. ダウンロードして実行!

例1 : M87 バイナリ

執筆時点最新の M88(88.0.4324.150)の一つ前のバージョン M87 のバイナリを手に入れてみましょう。

  1. Chrome Release から欲しいバージョンのバージョン番号をフルで知る

Chrome Release を遡り M87 のリリースを探します。

87.0.4280.141 と分かりました。

2 . omahaproxy から Position(コミット ID のようなもの)を知る

omahaproxy ページ下部の Tools の Version Information にバージョンを入力すると
Branch Base Position: 812852
と分かりました。

3 . continuous builds archive を開く

4 . 環境を選択(Linux / Mac / Win)し、フィルタに Position の数字を入力

環境を選びます。僕の場合は Linux_x64 です。

Branch Base Position の数字を「Filter」に入力します。
HIT しない場合は、数字を減らし、近い数字を探します。

5 . ダウンロードして実行!

chrome-linux.zip をダウンロードします。
https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/812859/

zip を解凍して chrome が実行ファイルです。

$ ls
ClearKeyCdm             extensions             nacl_irt_x86_64.nexe
MEIPreload              icudtl.dat             product_logo_48.png
chrome                  libEGL.so              resources
chrome-wrapper          libGLESv2.so           resources.pak
chrome_100_percent.pak  locales                swiftshader
chrome_200_percent.pak  nacl_helper            v8_context_snapshot.bin
chrome_sandbox          nacl_helper_bootstrap  xdg-mime
crashpad_handler        nacl_helper_nonsfi     xdg-settings

$ ./chrome

起動しました!

例2 : 一番古いバージョン

一番古いバージョンの UI 見てみましょうか。
僕の手元の Ubuntu 16.04 で起動出来るもの、の前提で。
適当にメジャーバージョン10ずつ調べていきます。

Chrome Release の探し方その2

Chrome Release から古いバージョン探す時、ページ遡るの大変なので、右側の検索ボックスから探すのが楽です。

もしくはいきなり google で
site:chromereleases.googleblog.com chrome 50.0
等と検索しても OK です。

M50

M50 の頃は起動引数に --no-sandbox 付けないと起動出来ないですね。
付けて起動出来てもログにエラー出まくりますが、、まぁここでは主旨と違うので追いません。

$ ./chrome
[26607:26607:0222/171939:FATAL:browser_main_loop.cc(216)] Running without the SUID sandbox! See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox_development.md for more information on developing with the sandbox on.
#0 0x55ba3bd64b8e base::debug::StackTrace::StackTrace()
#1 0x55ba3bd77abb logging::LogMessage::~LogMessage()
#2 0x55ba3938e6ff content::BrowserMainLoop::EarlyInitialization()
#3 0x55ba39394fd4 content::BrowserMainRunnerImpl::Initialize()
#4 0x55ba3938dd76 content::BrowserMain()
#5 0x55ba3bd408e2 content::ContentMainRunnerImpl::Run()
#6 0x55ba3bd3f680 content::ContentMain()
#7 0x55ba37fd304a ChromeMain
#8 0x7fe0de08d840 __libc_start_main
#9 0x55ba37fd2f21 <unknown>

中止 (コアダンプ)

$ ./chrome --no-sandbox
[26665:26665:0222/172015:ERROR:browser_main_loop.cc(219)] Running without the SUID sandbox! See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox_development.md for more information on developing with the sandbox on.
[26665:26680:0222/172015:ERROR:web_database_backend.cc(56)] Cannot initialize the web database: 2
[26665:26698:0222/172015:ERROR:connection.cc(1919)]  sqlite error 1, errno -2: table urls has 8 columns but 7 values were supplied, sql: INSERT INTO urls SELECT * FROM history.urls WHERE typed_count > 0
[26665:26698:0222/172015:ERROR:connection.cc(1919)]  sqlite error 1, errno -2: no such column: u.favicon_id, sql: INSERT OR IGNORE INTO urls SELECT u.id, u.url, u.title, u.visit_count, u.typed_count, u.last_visit_time, u.hidden, u.favicon_id FROM history.urls u JOIN history.keyword_search_terms kst WHERE u.typed_count = 0 AND u.id = kst.url_id

そういえば昔はタブの形が台形でしたね。

M40

M42 以下は Position の数字が小さくなり(3桁になり)、 continuous builds archive では探せません。
この方法で探せるのは M43 まで、とわかりました。

M40 : Position 445

M42 : Position 457

M43 : Position 323860

M43 の見た目は M50 と同じなので略。

その他

この手順、単に
https://www.chromium.org/getting-involved/download-chromium
のページの日本語訳ですw