Chromeをカスタマイズ起動!--incognito や --remote-debugging-port の使い方

以下は、chatGPTとのやりとり備忘録。

Q1. chrome起動時のオプションの--incognitoとは?

--incognito は、Google Chrome を起動するときに「シークレットモード(Incognito mode)」で自動的に開くようにするコマンドラインオプションです。

シークレットモードとは?

シークレットモードでは、以下のような特徴があります:

  • 閲覧履歴が保存されない
  • Cookie やサイトデータはブラウザを閉じると削除される
  • フォーム入力履歴も保存されない
  • ただし、アクセス先のサイトやネットワーク管理者(会社・学校など)はアクセスを記録できる

使用例(Windows)

ショートカットの「リンク先」に以下のように入力:

1"C:\Program Files\Google\Chrome\Application\chrome.exe" --incognito

※Chromeのパスは環境により異なる可能性があります。

使用例(Mac ターミナル)

1/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --incognito

このオプションを使うと、毎回手動でシークレットモードを開かずとも、最初からその状態で起動できます。


--blink-settings は、Google Chrome(および Chromium ベースのブラウザ)において Blink レンダリングエンジンの設定をカスタマイズするためのコマンドラインオプション です。

Blinkとは?

Blink は Chrome、Edge、Opera などが使っている HTML・CSS・JavaScript をレンダリングするエンジン です。Webページの表示・動作の核となる部分を担っています。

構文:

1\--blink-settings=設定名=値\[,設定名=値,...]
例1:すべてのアニメーションを無効にする
1\--blink-settings=displayAnimations=false

これでページの CSS アニメーションやトランジションが無効になります(開発・テストに便利)。

例2:Webフォントを無効にする
1\--blink-settings=enableWebFonts=false

これにより、Webフォントの読み込みが無効になり、標準フォントで表示されます。

よく使われる設定キー(例)

設定名意味
displayAnimationsCSS アニメーションの表示
enableWebFontsWeb フォントの有効/無効
acceleratedCompositingEnabledGPU レンダリング有効化
imageAnimationPolicyGIF などのアニメーション設定("noAnimation" など)

注意点

  • 一般的なユーザー向けではなく、開発者・テスト環境向けのオプションです。
  • Chromium のバージョンによって対応している設定キーが変わる場合があります。
  • 文法ミスや無効な値を入れてもエラーが出ないことがありますが、設定は反映されません。

--blink-settings=imagesEnabled=false は、Google Chrome を起動したときに、Web ページ上の画像の表示を無効にするためのコマンドラインオプションです。

意味と効果

  • imagesEnabled=false:画像の読み込みを無効化
  • Chrome がページを描画する際に、<img> タグや CSS 背景画像などを 読み込まず、表示もしません

使用例(Windows のショートカット)

1chrome.exe --blink-settings=imagesEnabled=false

または Mac なら:

1/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --blink-settings=imagesEnabled=false

主な用途

用途説明
データ節約画像を読み込まないことで通信量を削減
高速表示テキスト中心のページ閲覧を高速化
テスト「画像なしの環境」での表示確認・動作検証に使える
検証画像非表示状態でのユーザー体験の確認

注意点

  • すべての画像が完全に消えるため、ナビゲーションやコンテンツが画像依存のページでは不便になります。
  • JavaScript で画像を動的に表示する場合も影響を受けます。

Q4. Seleniumのchromedriverの起動時引数について、AddArgumentで指定する場合と、SetCapabilityで指定する場合の利用目的の違いを教えて!

Selenium で Chrome を自動操作する際に、AddArgumentSetCapability はいずれも Chrome の起動設定を変更する手段ですが、それぞれの用途・対象・使いどころが異なります。

違いの概要

項目AddArgument()SetCapability()
対象Chrome のコマンドラインオプションSelenium の WebDriver 機能や Chrome 固有の機能
用途Chrome 起動時の動作変更(例: シークレットモード)セッション設定や拡張機能、Chrome固有の挙動制御
指定方法ChromeOptions.AddArgument("--xxxx")ChromeOptions.SetCapability("xxxx", value)
代表例"--incognito", "--disable-images""goog:loggingPrefs", "pageLoadStrategy", "prefs"
AddArgument() の例と用途

主に指定するのは Chrome のコマンドラインオプション

1var options = new ChromeOptions();
2options.AddArgument("--incognito");
3options.AddArgument("--disable-popup-blocking");
用途例
  • "--headless":ヘッドレス(画面非表示)モード
  • "--window-size=1280,1024":起動時のウィンドウサイズ
  • "--disable-gpu":GPU 無効化(特に headless 時に推奨)
SetCapability() の例と用途

Selenium や ChromeDriver に関する機能的な設定

1options.SetCapability("pageLoadStrategy", "eager");
2options.SetCapability("goog:loggingPrefs", loggingPrefs);
用途例
  • "goog:loggingPrefs":ブラウザログの取得設定
  • "pageLoadStrategy":ページ読み込みの待機戦略("normal", "eager", "none")
  • "goog:chromeOptions"(内部的に使われる)

まとめ:使い分けの基準

シーン使うべきメソッド
Chrome 自体に「--〇〇」で渡せる設定(ヘッドレス、プロキシ、ウィンドウサイズなど)AddArgument()
ChromeDriver や Selenium のセッション挙動・ログ・ストラテジーなどの設定SetCapability()

Q5. 起動時引数の-remote-debugging-portってなに?

--remote-debugging-port=<ポート番号> は、Google Chrome を リモートデバッグモードで起動するためのコマンドラインオプションです。

意味と用途

このオプションを使うと、Chrome が DevTools プロトコル(Chrome DevTools Protocol)を通じて外部から接続可能な状態になります。

主な用途

用途説明
リモートデバッグ他のツール(例:Selenium、Puppeteer、Chrome DevTools、VNCなど)から Chrome に接続して操作・デバッグが可能
自動テストテスト中の DOM・ネットワーク・JS ログを外部ツールで観察できる
Puppeteer や Playwright との連携Chrome を Puppeteer などの Node.js ツールから接続・制御するために使う
ヘッドレス Chrome のログ監視headless モードで動作する Chrome の中身を覗ける

例:ポート9222で起動

1chrome.exe --remote-debugging-port=9222

または Selenium で使用する場合:

1var options = new ChromeOptions();
2options.AddArgument("--remote-debugging-port=9222");

これにより、http://localhost:9222/json にアクセスすると、開いているタブやウィンドウの情報が JSON で取得できます。

よく使う関連オプション

オプション説明
--headlessヘッドレスモードで起動(GUIなし)
--disable-gpuGPU を無効化(ヘッドレス時に推奨)
--no-sandboxセキュリティサンドボックスを無効化(CIなど限定環境で使用)

注意点

  • ポートは他と競合しない番号を指定する必要があります(例: 9222, 9223 など)。
  • セキュリティリスクがあるため、本番環境では不用意に公開しないこと(外部からブラウザを完全に制御できるため)。

Q6. --remote-debugging-port指定で起動したchromeをchromedriverで操作するために、起動時引数をどのように設定すればいいの?

--remote-debugging-port を指定して既に起動している Chrome インスタンスに対して、ChromeDriver を接続・操作したい場合、実は通常の Selenium + ChromeDriver の操作方法とは異なり、次のように「既存の Chrome にアタッチ(接続)」する設定が必要です。

手順概要

  1. Chrome を --remote-debugging-port=9222 などで起動する
  2. user-data-dir を使って Chrome のプロファイルを共有する(重要)
  3. ChromeDriver で「そのプロファイル」に接続するように起動

1. 既存の Chrome を起動する(例)

1chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\temp\chrome_profile"

user-data-dir が重要:Selenium から同じセッションに接続するための「共通プロファイル」として使う。

2. Selenium(ChromeDriver)から接続する設定(C#例)

1var options = new ChromeOptions();
2options.AddArgument(@"--user-data-dir=C:\temp\chrome_profile");
3options.DebuggerAddress = "localhost:9222";
4var driver = new ChromeDriver(options);

解説:DebuggerAddress プロパティ

  • DebuggerAddress を設定すると、新しく Chrome を起動せず、指定された DevTools プロトコルのエンドポイントに接続します。
  • この方法は、Selenium 4 以降の ChromeDriver でサポートされています。
  • ポート番号と user-data-dir が一致していないと、エラーまたは接続失敗します。

注意点

  • DebuggerAddress を使うと、既に起動している Chrome を制御できるが、他のタブや状態もそのままなので注意。
  • セキュリティや整合性のため、本番用途ではあまり推奨されません(デバッグや特殊用途向き)。

Q7. ExcelVBAやpythonの例も提示してください。

以下に、Excel VBA と Python で --remote-debugging-port で起動した Chrome に Selenium から接続する例をそれぞれ紹介します。これにより、起動済みの Chrome に接続して操作を引き継ぐ方法がわかります。

前提(共通)

Chrome は次のように手動またはコードで起動済み:

1chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\temp\chrome_profile"
  • ポート:9222
  • プロファイル:C:\temp\chrome_profile
Python版(Selenium 4以降)
 1from selenium import webdriver
 2from selenium.webdriver.chrome.options import Options
 3
 4options = Options()
 5options.add_argument("--user-data-dir=C:\\temp\\chrome_profile")
 6options.debugger_address = "127.0.0.1:9222"  # Remote Debugging ポートを指定
 7
 8driver = webdriver.Chrome(options=options)
 9
10print(driver.current_url)
Excel VBA版(SeleniumBasicを使用)
 1Sub AttachToExistingChrome()
 2    Dim driver As New ChromeDriver
 3    Dim options As New ChromeOptions
 4
 5    options.AddArgument "--user-data-dir=C:\temp\chrome_profile"
 6    options.DebuggerAddress = "127.0.0.1:9222"
 7
 8    driver.Start "chrome", options
 9
10    MsgBox driver.Url
11End Sub

注意点まとめ

項目内容
--remote-debugging-portChrome を DevTools 接続可能な状態で起動
--user-data-dirセッション情報(Cookie、タブ)を共有するため必須
options.debugger_addressChromeDriver が既存の Chrome に接続できる設定
driver.quit()呼ぶと既存Chromeが閉じるので基本的に避ける

どちらの言語でも、「Chrome を先に手動または別プロセスで起動 → Selenium がアタッチ」という流れになります。

関連ページ