「オプションが多すぎて、どれを選べば良いのか分からない」
そんな迷子状態に終止符を打ちましょう。本記事では headless Chrome を“速く・強く・安定”させるための厳選フラグを、最新バージョンで検証した結果とともに解説します。
- 起動時間を最大40 %短縮
- Bot 検知で止まらないステルス化手法
- クリックひとつでネットワーク負荷を半減
さらに、DevTools 連携によるHAR 取得や業務別プリセットまで網羅した“逆引きレシピ”形式。
今日からコピー&ペーストで即戦力になるオプションをお届けします。
目次
はじめに — なぜ Options が重要か
Seleniumスクリプトが重い・遅い・ブロックされる——
多くの悩みは、ブラウザ起動時に渡す Options クラス を最適化するだけで解決できます。
この記事はPython 3.12 + Selenium 4.21 を前提に、Chrome/Edge/Firefox で検証した“実際に効いた”設定を整理しました。
Options 基礎 —— 仕組みと書き方
\ まず理論を固めたい方へ /
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("--headless=new") # 高速ヘッドレス(Chrome 109+)
options.add_experimental_option("prefs", {
"profile.managed_default_content_settings.images": 2,
"profile.managed_default_content_settings.stylesheet": 2, # CSS 無効
"credentials_enable_service": False,
})
driver = webdriver.Chrome(options=options)add_argument—--headlessなどCLIフラグをそのまま渡す。add_experimental_option— 公開されていない内部設定をJSONで注入。
起動高速化フラグ ベスト 10(安全版)
| フラグ | 効果 / 注意点 |
|---|---|
--headless=new | GUI を完全に省き 20〜40 % 短縮。Chrome 109 以降で安定。 |
--disable-dev-shm-usage | Docker/LXC で /dev/shm が小さい環境のクラッシュ防止。ローカルでは不要。 |
--no-sandbox | ルート実行の CI 専用。ローカルでは付けない。 |
--blink-settings=imagesEnabled=false | 画像ロードを無効化し帯域節約。UI テストでは注意。 |
--font-render-hinting=none | フォント描画を簡略化しメモリ削減。 |
--remote-debugging-port=0 | ランダムポートを割当てデバッグ機能を有効化。複数コンテナでのポート公開に留意。 |
--disable-gpu | 旧式ヘッドレス向け。新ヘッドレスでは効果小。古い CI との互換用に掲載。 |
--disk-cache-dir=/dev/null | ディスク I/O を減らすが Service Worker が壊れやすい。E2E 専用。 |
--log-level=3 | INFO 以下のログを抑制し若干高速化。 |
~~--single-process~~ | 非推奨:Chromium 118+ では高頻度でクラッシュ。除外推奨。 |
上位 4 つのみ先に試し、効果と安定性を確認してから残りを追加してください。
\ 自宅に “爆速 CI” を! /
¥66,550 (2025/07/11 16:26時点 | Amazon調べ)
ネットワーク制御 — 余分な通信を断つ
Preferences で広告・画像・CSS をブロック
prefs = {
"profile.managed_default_content_settings": {
"images": 2, # 0: 許可 / 2: ブロック
"stylesheet": 2, # CSS
"cookies": 2,
},
"profile.default_content_setting_values.notifications": 2,
}
options.add_experimental_option("prefs", prefs)DevTools Protocol でドメイン指定ブロック
from selenium.webdriver.common.devtools.v120 import network
driver.execute_cdp_cmd("Network.enable", {})
driver.execute_cdp_cmd("Network.setBlockedURLs", {
"urls": [
"*://ads.example.com/*",
"*doubleclick.net/*",
]
})- SaaS ダッシュボードの広告を遮断すると描画速度が向上。
- HAR 取得前にブロックすればログもクリーン。
ステルス化 — Bot 検知を回避する設定
| 対策 | 実装例 / 補足 |
|---|---|
navigator.webdriver 隠蔽 | --disable-blink-features=AutomationControlled Cloudflare Turnstile 等の最新 CAPTCHA には通用しない場合あり。 |
| ユーザーエージェント偽装 | options.add_argument("--user-agent='Mozilla/5.0 …'") |
| ウィンドウサイズ乱数化 | driver.set_window_size(randint(1280,1440), randint(720,900)) |
| 人間風操作 | ActionChains で入力間隔にランダムディレイ (0.1–0.3 秒) |
注意: 利用規約で自動操作を禁じているサイトには適用しないでください。
プロキシ & セキュリティ
from selenium.webdriver.common.proxy import Proxy, ProxyType
proxy = Proxy()
proxy.proxy_type = ProxyType.MANUAL
proxy.http_proxy = "proxy.example.jp:8080"
proxy.ssl_proxy = "proxy.example.jp:8080"
proxy.add_to_capabilities(options.to_capabilities())- 認証付きプロキシは
user:pass@host:port形式より、IP 制限 + 無認証 に切替えると安定。 - 自己署名証明書は
--ignore-certificate-errorsで一時的に回避し、本番では削除。
DevTools 連携 — HAR 取得とパフォーマンス計測
# Web Vitals を取得
from selenium.common import WebDriverException
driver.execute_cdp_cmd("Performance.enable", {})
metrics = driver.execute_cdp_cmd("Performance.getMetrics", {})
# バージョン差異を吸収
values = {m["name"]: m["value"] for m in metrics["metrics"]}
LCP = values.get("LargestContentfulPaint") or values.get("LargestContentfulPaintCandidate")
print("LCP:", LCP)- Chrome バージョンでメトリクス名が変わるため、キー存在チェック を推奨。
- HAR を出力し Datadog Synthetic や Elastic Stack で可視化可能。
\ 省電力テストノードに最適 /
¥19,260 (2025/09/02 14:23時点 | Amazon調べ)
ブラウザ別逆引きリスト
| 用途 | Chrome / Edge (Chromium) | Firefox | Safari |
|---|---|---|---|
| ヘッドレス | --headless=new | -headless | 正式版 17 では非対応Tech Preview のみ実験的 API |
| 画像ブロック | Prefs images:2 | permissions.default.image=2 | 非対応 |
| サンドボックス解除 | --no-sandbox (CI 専用) | — | — |
| アドブロック | CDP Network.setBlockedURLs | about:config | — |
| DevTools ログ | --remote-debugging-port=0 | moz:firefoxOptions→log | Web Inspector |
Safari は macOS 専用。クロスブラウザ検証には BrowserStack などを活用。
業務別プリセット早見表
| シーン | 推奨フラグ(一部) |
|---|---|
| CI / CD (Docker) | --headless=new, --disable-dev-shm-usage, --no-sandbox, --window-size=1366,768 |
| CI / CD (ローカル) | --headless=new, --window-size=1366,768 |
| 経理 RPA | Prefs 画像・CSS ブロック, --disable-blink-features=AutomationControlled, プロキシ設定 |
| 社内セキュアツール | --proxy-server, --ignore-certificate-errors=false, --disable-extensions |
| 広告計測 / APM | CDP Network.enable, Performance.enable, HAR 生成, UA 固定 |
まとめ — オプションを制する者は自動化を制す
- Options = パフォーマンスと信頼性の心臓部。まず高速化フラグを計測し、次にネットワーク制御・ステルス化を追加する順が安全。
- 旧式・環境依存フラグ(
--disable-gpu/--single-processなど)は慎重に。最新 Chrome では逆効果も。 - DevTools 連携まで押さえれば E2E テストと性能監視を一本化 でき保守コストが下がります。
- 共通モジュール
options_factory.pyにまとめ、プロジェクト横断で使い回すと管理が楽になります。
“効く” 一行を加えて、速く静かに動くブラウザを体験してください。

