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
このオプションを使うと、毎回手動でシークレットモードを開かずとも、最初からその状態で起動できます。
Q2. blink-settingsとは?
--blink-settings
は、Google Chrome(および Chromium ベースのブラウザ)において Blink レンダリングエンジンの設定をカスタマイズするためのコマンドラインオプション です。
Blinkとは?
Blink は Chrome、Edge、Opera などが使っている HTML・CSS・JavaScript をレンダリングするエンジン です。Webページの表示・動作の核となる部分を担っています。
--blink-settings の使い方
構文:
1\--blink-settings=設定名=値\[,設定名=値,...]
例1:すべてのアニメーションを無効にする
1\--blink-settings=displayAnimations=false
これでページの CSS アニメーションやトランジションが無効になります(開発・テストに便利)。
例2:Webフォントを無効にする
1\--blink-settings=enableWebFonts=false
これにより、Webフォントの読み込みが無効になり、標準フォントで表示されます。
よく使われる設定キー(例)
設定名 | 意味 |
---|---|
displayAnimations | CSS アニメーションの表示 |
enableWebFonts | Web フォントの有効/無効 |
acceleratedCompositingEnabled | GPU レンダリング有効化 |
imageAnimationPolicy | GIF などのアニメーション設定("noAnimation" など) |
注意点
- 一般的なユーザー向けではなく、開発者・テスト環境向けのオプションです。
- Chromium のバージョンによって対応している設定キーが変わる場合があります。
- 文法ミスや無効な値を入れてもエラーが出ないことがありますが、設定は反映されません。
Q3. blink-settings=imagesEnabled=falseってなにしているの?
--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 を自動操作する際に、AddArgument
と SetCapability
はいずれも 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-gpu | GPU を無効化(ヘッドレス時に推奨) |
--no-sandbox | セキュリティサンドボックスを無効化(CIなど限定環境で使用) |
注意点
- ポートは他と競合しない番号を指定する必要があります(例: 9222, 9223 など)。
- セキュリティリスクがあるため、本番環境では不用意に公開しないこと(外部からブラウザを完全に制御できるため)。
Q6. --remote-debugging-port指定で起動したchromeをchromedriverで操作するために、起動時引数をどのように設定すればいいの?
--remote-debugging-port
を指定して既に起動している Chrome インスタンスに対して、ChromeDriver を接続・操作したい場合、実は通常の Selenium + ChromeDriver の操作方法とは異なり、次のように「既存の Chrome にアタッチ(接続)」する設定が必要です。
手順概要
- Chrome を
--remote-debugging-port=9222
などで起動する user-data-dir
を使って Chrome のプロファイルを共有する(重要)- 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-port | Chrome を DevTools 接続可能な状態で起動 |
--user-data-dir | セッション情報(Cookie、タブ)を共有するため必須 |
options.debugger_address | ChromeDriver が既存の Chrome に接続できる設定 |
driver.quit() | 呼ぶと既存Chromeが閉じるので基本的に避ける |
どちらの言語でも、「Chrome を先に手動または別プロセスで起動 → Selenium がアタッチ」という流れになります。