Skip to content
Artwork for 八百万のOSS
八百万のOSS · June 9 · 1 hr 4 min

#6 ブラウザに巨大JSONが眠ってる?巨大データで見るブラウザの裏側

毎日使っているのに、ブラウザが中で何をしているか実はよく知らない——そんな話から始まる今回。 catatsuyが取り上げるのは、ChromiumやFirefoxが裏側で扱っている「巨大なデータ」です。 ブラウザはHTMLを描画するだけでなく、HTTPSへ強制するドメイン一覧、危険URLのリスト、証明書の失効情報、よく使われるリソースURLパターンなど、さまざまな補助データを持っています。しかし、それらを単純な巨大リストとしてそのまま持つのは難しく、毎回サーバーへ問い合わせるのもレイテンシやプライバシーの問題があります。 今回はHSTS Preload、Google Safe Browsing、CRLite、Pervasive resource URL patternsなどを題材に、巨大なデータをブラウザがどう持ち、どう配り、どう高速に判定しているのかを話しました。 HSTS Preloadのドメイン一覧とsuffix判定、Safe Browsingのhash prefix、CRLiteのBloom Filter cascade、そしてURL patternによるリソースURLの扱いなど、暗号やTLSだけではない、ブラウザを支えるデータ構造と配布設計を覗いていきます。 trie treeやBloom Filterといったデータ構造の話も出てきますが、完全な仕様解説ではなく、ブラウザの裏側にある設計の面白さを見ていく回です。 ブラウザの中身に興味が湧いてくる、盛りだくさんなお話です。 * Chromium: https://www.chromium.org/ * Firefox: https://www.mozilla.org/firefox/ * HSTS Preload: https://hstspreload.org/ * Google Safe Browsing: https://safebrowsing.google.com/ * CRLite(Firefox): https://github.com/mozilla/crlite * Certificate Transparency: https://certificate.transparency.dev/ * Trie: https://en.wikipedia.org/wiki/Trie * Bloom Filter: https://en.wikipedia.org/wiki/Bloom_filter * Pervasive resource URL patterns: https://chromium.googlesource.com/chromium/src/+/HEAD/services/network/pervasive_resources * Brotli: https://github.com/google/brotli * Zstandard (zstd): https://github.com/facebook/zstd * Hono: https://hono.dev/ * jQuery: https://jquery.com/ * Rust: https://www.rust-lang.org/ ───────────── YouTube: https://youtu.be/NH1yseBycOw Web: https://yaoyorozu-oss.henteko07.com/ X: https://x.com/yaoyorozu_oss

0:00-1:04:31

transcript

No transcript — this publisher did not publish one.

show notes

毎日使っているのに、ブラウザが中で何をしているか実はよく知らない——そんな話から始まる今回。


catatsuyが取り上げるのは、ChromiumやFirefoxが裏側で扱っている「巨大なデータ」です。


ブラウザはHTMLを描画するだけでなく、HTTPSへ強制するドメイン一覧、危険URLのリスト、証明書の失効情報、よく使われるリソースURLパターンなど、さまざまな補助データを持っています。しかし、それらを単純な巨大リストとしてそのまま持つのは難しく、毎回サーバーへ問い合わせるのもレイテンシやプライバシーの問題があります。


今回はHSTS Preload、Google Safe Browsing、CRLite、Pervasive resource URL patternsなどを題材に、巨大なデータをブラウザがどう持ち、どう配り、どう高速に判定しているのかを話しました。


HSTS Preloadのドメイン一覧とsuffix判定、Safe Browsingのhash prefix、CRLiteのBloom Filter cascade、そしてURL patternによるリソースURLの扱いなど、暗号やTLSだけではない、ブラウザを支えるデータ構造と配布設計を覗いていきます。


trie treeやBloom Filterといったデータ構造の話も出てきますが、完全な仕様解説ではなく、ブラウザの裏側にある設計の面白さを見ていく回です。


ブラウザの中身に興味が湧いてくる、盛りだくさんなお話です。


* Chromium: https://www.chromium.org/

* Firefox: https://www.mozilla.org/firefox/

* HSTS Preload: https://hstspreload.org/

* Google Safe Browsing: https://safebrowsing.google.com/

* CRLite(Firefox): https://github.com/mozilla/crlite

* Certificate Transparency: https://certificate.transparency.dev/

* Trie: https://en.wikipedia.org/wiki/Trie

* Bloom Filter: https://en.wikipedia.org/wiki/Bloom_filter

* Pervasive resource URL patterns: https://chromium.googlesource.com/chromium/src/+/HEAD/services/network/pervasive_resources

* Brotli: https://github.com/google/brotli

* Zstandard (zstd): https://github.com/facebook/zstd

* Hono: https://hono.dev/

* jQuery: https://jquery.com/

* Rust: https://www.rust-lang.org/


─────────────

YouTube: https://youtu.be/NH1yseBycOw

Web: https://yaoyorozu-oss.henteko07.com/

X: https://x.com/yaoyorozu_oss