💡
Google ChromeやPuppeteerでのホスト名解決をカスタマイズする方法
Webブラウザのホスト名解決をカスタマイズしたい場合、hostsファイルの定義を修正したり、HTTPヘッダ書き換え系の拡張機能を使ったりという選択肢が良く取られると思います。
一方、あまり知られていない(気がする)のですがChromiumにはホスト名解決の定義を設定できる起動オプションフラグが実は用意されており、以下のように使うことができます。
<Chromiumのexecutable> --host-resolver-rules="MAP <ドメイン1> <IPアドレス>,MAP <ドメイン2> <IPアドレス>,..."
実際の例としてMacOSで以下を実行すると、www.google.com
やzenn.dev
のホスト名解決はローカルホストに向くようになります。
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --host-resolver-rules="MAP www.google.com 127.0.0.1,MAP zenn.dev 127.0.0.1"
Chromiumで使えるということはGoogle ChromeやPuppeteerでも使うことが出来ます!Puppeteerでホスト名解決をテストケースごとにカスタマイズしたいケースでは非常に助かるオプションなのでは無いかと思います。(実際、このオプションがあったのでE2Eテスト構築の際にとても助かりました)
Chromiumには他にもたくさんのオプションフラグがあるので、こちらも参考にされてみてください。
-
List of Chromium Command Line Switches
Chromiumのページからリンクされていました。
Discussion