本記事では、Seleniumを用いた自動操作の際に遭遇しやすい ERR_HTTP2_PROTOCOL_ERROR
の原因と、その対策として有効だった driver.AddArgument
のオプションを紹介します。
なお、本記事は技術的検証および学習目的での情報共有を目的としており、特定のサービスやサイトの規約違反を助長する意図は一切ありません。
自動操作を行う際は、必ず対象サービスの利用規約を確認し、許可された範囲内での利用を心がけてください。
ERR_HTTP2_PROTOCOL_ERRORとは?
ERR_HTTP2_PROTOCOL_ERROR
は、ChromeがHTTP/2通信を行おうとした際に、サーバー側との通信が正常に確立できなかった場合に表示されるエラーです。 このエラーは、通常のブラウザ操作ではほとんど発生しませんが、Seleniumなどの自動化ツールを使った場合に頻発することがあります。
SeleniumでERR_HTTP2_PROTOCOL_ERRORが発生する主な原因
原因カテゴリ | 詳細 |
---|---|
自動化検知(Bot判定) | Chromeが自動化されていることをサーバーが検知し、通信を遮断する。特に navigator.webdriver = true が検出されると高確率で遮断される。 |
NetworkServiceの不具合 | Chromeの内部ネットワーク処理がSeleniumと相性が悪く、HTTP/2通信が不安定になる。 |
ChromeDriverとChromeのバージョン不一致 | バージョンのズレにより、通信層でエラーが出ることがある。 |
セキュリティソフトの干渉 | ウイルス対策ソフトがChromeDriverの通信をブロックすることで、HTTP/2通信が失敗するケースもある。 |
ヘッドレスモードの使用 | --headless モードでは描画や通信が制限されることがあり、HTTP/2通信が通らないこともある。 |
ERR_HTTP2_PROTOCOL_ERRORの対策方法(driver.AddArgument
の活用)
driver.AddArgument
とは?
SeleniumでChromeを起動する際、コマンドラインオプションを追加することでChromeの挙動を制御できるのが driver.AddArgument
です。
構文
driver.AddArgument "--オプション名"
このメソッドを使うことで、Chromeの起動時にコマンドラインオプションを渡すことができます。
複数のオプションを追加する場合は、AddArgument
を複数回呼び出します。
ERR_HTTP2_PROTOCOL_ERROR対策に有効なおすすめオプション11選
以下のオプションは、一般的なBot検知回避やブラウザ挙動の調整に役立つものです。セキュリティ回避を目的とした使用は推奨されませんので、あくまで技術的理解を深める参考としてご覧ください。実在するサービスへの適用は、必ず規約を確認の上、自己責任で行ってください。
オプション | 解説 |
---|---|
--disable-blink-features=AutomationControlled | 自動化検知(Bot判定)を回避し、通信拒否を防ぐ。 |
--disable-http2 | HTTP/2通信そのものを無効化。最終手段として通信エラーを回避。 |
--disable-features=NetworkService,NetworkServiceInProcess | Chromeの内部ネットワーク処理を無効化。HTTP/2通信の安定化。 |
--no-sandbox | Chromeのセキュリティ機能を一部無効化。自動化環境で安定性向上。 |
--disable-gpu | GPUレンダリングを無効化。描画系のエラー回避に有効。 |
--start-maximized | ウィンドウを最大化して起動。描画タイミングの安定化に有効。 |
--incognito | シークレットモードで起動。Cookieやキャッシュの影響を避ける。 |
--disable-extensions | 拡張機能を無効化。干渉を防ぐ。 |
--disable-dev-shm-usage | Linux環境でのメモリ使用制限を回避。 |
--remote-debugging-port=9222 | 外部からChromeに接続するためのポート指定。 |
--user-data-dir="C:\Temp\ChromeProfile" | Chromeのプロファイルを指定して起動。セッション維持に有効。 |
まとめと注意点
ERR_HTTP2_PROTOCOL_ERROR
は、環境依存・ブラウザ設定・Bot検知など複数の要因が絡む複雑なエラーです。driver.AddArgument
の適切な設定により、安定した動作が得られる場合があります。- 本記事の内容は、技術的検証と知識共有を目的としたものであり、特定のサービスの規約違反を助長するものではありません。
この記事を参考に、より安定した自動化環境の構築に役立てていただければ幸いです。
今後もSeleniumや自動化に関する技術情報を発信していきますので、ぜひブックマーク&シェアをお願いします!
免責事項
本記事は、仮想環境における技術検証をもとに執筆しています。実在するサービスへの適用は、必ず利用規約をご確認の上、自己責任で行ってください。
また、商用利用や大量アクセスなど、サービス提供者に負荷をかける行為は避けてください。