Emacs-w3m は外部の w3m 実行ファイルを起動します。Linux では、このブラウザだけに SOCKS 経路を適用するのに都合のよい場所になります。

既存の Proxychains-NG と動的リンクされた w3m の構成では、実行可能なラッパーは次のように書けます:

#!/bin/sh
exec proxychains4 -f "$HOME/.config/proxychains/w3m.conf" /usr/bin/w3m "$@"

実際の w3m のパスを使い、名前付きの Proxychains 設定を指定します。プロキシ 1 つの例はこの形です:

strict_chain
proxy_dns
[ProxyList]
socks5 127.0.0.1 1080

この例は、そのローカルポートで SOCKS5 リスナーがすでに動いていることを前提としています。ラッパーを実行可能にして、emacs-w3m を読み込む前に選択します:

(setq w3m-command
      (expand-file-name "~/.local/bin/w3m-via-proxy"))

マニュアルの初期化モデルに従う場合は、コマンドを変更したあとに Emacs を再起動します。引用符で囲んだ "$@" は emacs-w3m が渡す引数の境界を保ち、exec は起動したプロセスをラップされたブラウザのままにします。

この経路が関わるのは、外部プロセスの横取り可能な TCP 接続です。EWW、URL ライブラリ、無関係な Emacs パッケージのダウンロードは変わりません。Proxychains ライブラリを読み込めない w3m バイナリには、別の対応済み経路方式が必要です。

関連記事