忙しい人へ
git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' https://chromium.googlesource.com/chromium/src
これでタグとコミットハッシュの両方が出るので、適切にこねくり回せばバージョン一覧が出る。
背景
youtube-dlには、UA偽装のためにChromeのバージョン一覧を持っています。ですが、見て頂いても分かる通り、バージョンが68〜76?と非常に古いのです。1
Windows版のChromeであれば自動更新機能があり、この機能によって古いバージョンのChromeは比較的早く置き換えられていきます。それを考えれば、今更60番台のChromeのUAが来たら即ブロックされかねません。こういったこともあり、バージョン一覧を新しいものに交換しようと考えました。
やったこと
最初、Chromiumのリポジトリをcloneしようとしたのですが、リポジトリ全部cloneすると23 GBにもなります。大きすぎます。2
cloneすればgit tag -l
で全部列挙できますが、大きすぎるので諦めました。
結論
少し調べていると、cloneしないでtag一覧を取得する方法がありました。
こんなコマンドになります。
git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' https://chromium.googlesource.com/chromium/src
というかこれってgit ls-remote
で出来たんですね...
出力の一例は次のようになります。
$ git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' https://chromium.googlesource.com/chromium/src
05197078e4761dde56f8dc8884050bf862344425 refs/tags/3.0.195.25
75894f416826f37475ca17e92f5853b0f84ac3ee refs/tags/3.0.195.27
各行がtag一個を指しており、コミットハッシュ\tタグ参照名
の形式で表示されます。3
これを適切に解析すれば、23 GBを消費すること無くtag一覧を取得できます。
-
確かにバージョンは古いですが、これらのChromeが必要という訳ではありません。よって、これを原因として何らかの脆弱性に直結するようなことはありません。 ↩
-
GitHub Actionsで自動化したい場合、GitHub-hosted runnerでは入り切りません。 ↩
-
このため、出力をそのままTSVとして使うことも可能です。知らんけど。 ↩