Dilloブラウザ 3.3.0 リリース
(dillo-browser.org)- リモート制御と自動化が大幅に強化され、新しい
dillocプログラムとデフォルトで有効な UNIX ソケットにより、ブラウザをコマンドラインやスクリプトから直接操作できるようになった - ページの右クリックメニューの
page_actionオプションで任意のコマンドを実行でき、dillocと組み合わせて現在のページを再読み込みしたり置き換えたりする操作も可能になった - OAuth ログイン処理では、ユーザーが開始したリクエストに続くメインページへのリダイレクトで、例外的に Cookie を許可するよう変更され、サードパーティ Cookie の遮断を維持しつつ認証フローが動作するようになった
- 初めて追加された FLTK 1.4 の実験的サポートは
--enable-experimental-fltkでビルドできるが、高 DPI や Wayland ではレンダリング問題が残っており、すべてのユーザー向けのデフォルトとして有効にすべきではない - 任意の brotli サポート、
about:keys・about:cache・about:dicache、IPv6 のデフォルト有効化、タブ・マウス・クリップボード動作の改善、複数のセキュリティ・ビルド関連バグ修正まで含まれ、全体的な使い勝手と安定性が高まっている
主な変更点
- 3.3.0 には新機能、設定オプション、バグ修正が含まれ、初めて FLTK 1.4 の実験的サポートも追加された
- UNIX ソケット制御とページメニューベースのユーザーアクションが導入され、ブラウザをスクリプトやコマンドラインから直接扱えるようになった
- OAuth ログイン修正によりリダイレクト過程での Cookie 処理が調整され、トラッキング防御を維持しながら認証フローが動作するようになった
リモート制御と自動化
- dilloc プログラムが新たに追加され、コマンドラインやスクリプトから Dillo を制御できる
DILLO_PID環境変数の PID で対象を探し、値がなければ一意の Dillo プロセスを探すping,pid,reload,ready,open URL,url,title,status,dump,hdump,load,rawload,quit,waitなどの制御コマンドを提供する
- リモート制御ソケットはデフォルトで有効になり、必要なら
--disable-control-socketで無効にできる - アクション実行時には
DILLO_PID変数が設定され、dilloc が現在の Dillo インスタンスをすぐに制御できるようになった
ページアクション
- ページの右クリックメニューから 任意のコマンド実行を可能にする
page_actionオプションが追加された page_actionと dilloc を組み合わせると、現在のページ内容を再取得したり置き換えたりする形の操作ができる- 例として
page_action="Mimic Chrome:curl_chrome136 $url | dilloc load"を設定すると、curl impersonate で Chrome のようにページを再取得し、そのまま現在のタブの HTML として流し込める - この方法は一部の JS walls を回避するのに使える
- 例として
- URL、HTTP ヘッダー、その他の条件に応じて現在のページごとの修正スクリプトを実行する Fix page の例も含まれる
- 関連スクリプト
fixpage.shは actions リポジトリ から入手できる
- 関連スクリプト
FLTK 1.4 サポートの状況
--enable-experimental-fltkフラグにより、FLTK 1.4.0 以上でビルド可能な実験的サポートが追加された- テストと技術的フィードバックのために導入された機能で、経験豊富なユーザーとテスターを対象としている
- FLTK 1.4.5 release の使用が推奨される
- このバージョンには ぼやけたフォント問題 を解決する修正が含まれている
- X11 プラットフォームの 96 DPI 画面では、FLTK 1.4.5 と FLTK 1.3 は似たレンダリング品質を示す
- Xft と Pango の両バックエンドが該当する
- 高 DPI 環境、特に 96 の倍数ではない DPI や Wayland では、依然としてレンダリング問題が残っている
- 進捗状況は 関連する FLTK issue で確認できる
- Dillo のパッケージメンテナーは すべてのユーザー向けデフォルトとして FLTK 1.4 を有効にすべきではない
- 視覚的なグリッチやその他の問題が表面化する可能性がある
OAuth と Cookie 処理
- OAuth 認証のため、リダイレクト応答で設定される Cookie を許可するよう動作が調整された
- Dillo は基本的に、ユーザーが直接開始したリクエストでない場合の サードパーティ Cookie をすべて遮断している
- これは画像ピクセルを用いたトラッキングを防ぐための動作である
- 今回の修正により、ユーザーが開始したリクエストに続く メインページへのリダイレクトでは、例外的に Cookie を許可する
- トラッキング防御を維持しながら OAuth ログインも可能にする
- 例として Smolfedi を通じた Fediverse ログインが含まれる
細かな機能追加と動作改善
- brotli
brコンテンツエンコーディングの任意サポートが追加された about:keysが追加され、現在の キーボードショートカットを確認できるabout:cacheとabout:dicacheページが追加され、内部キャッシュ情報を確認できる- プラットフォームが対応していれば IPv6 をデフォルトで有効にする
Alt+ショートカットで N 番目のタブにフォーカスを移せるControl + left clickでリンクを新しいタブで開ける- 戻ると進むを マウスボタンで実行できる
- 戻るまたは進むボタンを 中クリックすると、そのページを新しいタブで開ける
Ctrl+Cが選択したテキストをクリップボードにコピーするよう変更され、Ctrl+Vの動作期待と一致するようになったmark_unloaded_imagesオプションが追加され、読み込まれていない画像に枠線を表示できる- 位置表示バーの余白が広がり、マウスで選択しやすくなった
search_urlでは検索プレフィックスを 部分一致ではなく完全一致で扱う- Mojeek 検索エンジンが
mjショートカットとともに追加された - CSS
display:noneが適用されたボタンや入力欄などの フォーム要素を非表示にするよう変更された - フォーム送信時には キャッシュされた応答を避けるよう調整された
Content-Dispositionヘッダーをサポートし、ファイル名を設定できるtrace_httpオプションが追加され、HTTP トラフィックのデバッグが可能になった
修正されたバグと配布情報
- musl 環境で
vsource dpiの 無限ループを引き起こしていた、エスケープされていない%printf フォーマット問題が修正された - LibreSSL で CurveBall TLS テスト中に発生していた segfault が修正された
- Cookie の
Max-Age解析は、ローカルタイムゾーンではなく epoch を使うよう修正された - NetBSD のビルド問題が修正され、
ctype(3)の誤った sign extension も回避するよう変更された - HTTP サーバーと OpenSSL 接続ダイアログの use-after-free 問題が修正された
- Web サイト URL は https://dillo-browser.org/ に、git リポジトリは https://git.dillo-browser.org/dillo に更新された
ダウンロードとリポジトリ移行
- 3.3.0 の配布ファイルは dillo-3.3.0.tar.gz (1.4M) と signature で提供される
- GitHub から独自サーバーへ移行しており、関連内容は migration-from-github で確認できる
- git リポジトリは独自ホスティングの cgit で提供され、Codeberg と SourceHut にもミラーされている
1件のコメント
Hacker Newsの意見
Dilloをよく使っている。おめでとう
年齢確認法案が次々に出てきていて、Firefoxがどう対応するか次第では、DilloがLinuxとBSDの事実上のデフォルトブラウザになる可能性もありそう
こうした法律が実際に施行されて、Firefoxに年齢確認ロジックまで入るようなら、自分は100% Dilloに移るつもり
いま多くの国があまりにも急速にこれに屈しているのはかなり不気味だ
今は信じない人もいるだろうが、数年もすれば匿名Webブラウジングは過去のものになるかもしれないと思う
VPNを狙った攻撃も合わせて見る必要がある。これは偶然の個別事象ではなく、一方向に噛み合って動いている流れのように見える
金の流れをもっと明らかにすべきで、ロビイストに支配される状況にはうんざりしている
残念ながらGoogleまでJSを要求し始めており、これは小型ブラウザとオープンウェブにとって大きな打撃だ
検索エンジン関連の詳しい一覧は、Seirdyの記事がよくまとまっている: https://seirdy.one/posts/2021/03/10/search-engines-with-own-...
厳密には完全にその通りではないが、Webの重要な領域のあちこちにGoogleが関わっていて、Chromeはその中で最も目立つ例にすぎない
初期のJavaScriptはずっと単純で、JITも必須ではなかった。個人的には今でもJITなしのほうが良いと思う
開発者たちに心から感謝したい。こういうレトロプロジェクトが好きだ
Dilloを毎日使っていて、自分の場合は主に内部用途だ
プラグインアーキテクチャのおかげでgeminiやgopherのようなプロトコルもレンダリングできるので、geminiサイトを見るときにも使っている
本当にとても軽い
Mastodonクライアントもあまりうまく動かないが、少なくとも代替手段はある: https://codeberg.org/adele/smolfedi
自分の場合、ここHNでDilloを使うとずっと429が返ってくるが、これは普通のフルサイズブラウザでは起きない
JSのせいなのかは分からない
この現象が再現可能かどうか気になるし、可能ならHTTPヘッダーを添えてもらえるとありがたい
いずれにせよ、うちのcgitインスタンス以外にもミラーはCodebergとSourceHutにある
https://git.dillo-browser.org/dillo/
https://codeberg.org/dillo/dillo
https://git.sr.ht/~dillo/dillo
別のDilloの記事でもすでに何度も書いたが、Dilloのおかげで古い486 PCで初めてWebを見ることができた
Damn Small Linuxを入れたマシンだったが、あのときDilloがなければWebへのアクセス自体が難しかったはずだ
dillocは3.3.0リリースより前の古いgitコミット群ですでに始まっていて、本当に印象的だった
plumberやxdg-openのようなスクリプトを呼び出すリダイレクト用メニュー項目も簡単に作れる
Firefox/ChromiumのLibredirectのように、JS URLをnon-JS URLに差し替える方式だ
Dilloの最新のWindowsポートで、事前コンパイル済みバイナリを入手できる場所があるのか気になる
DilloがC++なのは残念だ
cproc/qbeやtinyccのような小さくて単純なCコンパイラでビルドしてみたかったからだ
それでも、コーディングAIがC++を単純なCへ大量に移植する補助をかなりうまくこなせる兆しはあると感じる
まだそこまでには達していないと思う