web-dev-qa-db-ja.com

chromedriverが使用するポートを保護するにはどうすればよいですか?

通常、chromedriverを実行すると、常にこの出力が表示されます。これは、chromedriverを実行しているときに誰もが確実に取得するものです。これは出力全体ではなく、特定の文に関するものです。

Only local connections are allowed. 
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.

タイトルが言うように、出力は常に得られます。 ChromeDriverが保護されたポートのみを使用していることを確認するにはどうすればよいですか?

2
Lewiad

このINFOメッセージ...

Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.

...ChromeDriver v2.46で引き起こされたバグの結果でした


分析

説明に従って 詳細ログが有効になっている場合、2.46は予期しないdebug.logファイルを生成しますInitLogging()logging.cc の一部のログ(関数の最後の行で)logging::InitLoggingが呼び出される前でも、メッセージの書き込みが早すぎます。これは[〜#〜] ok [〜#〜]LinuxおよびMacOS。デフォルトのログの宛先は、期待される場所です。ただし、Windowsでは、デフォルトのログ宛先はdebug.logという名前のファイルです。

したがって、ChromeDriverチームは、logging::InitLoggingを呼び出した後、メソッドの最後への2つのVLOG呼び出しを削除する必要がありました。

この問題は commit によって解決され、ChromeDriver 73.x内で修正が利用可能になりました

Chromedriverが使用するポートを保護する

@barancev mentionsChromeDriverが空いている Ephemeral port を見つけようとするため、ポートの使用について私たちにできることはほとんどありません。システムに依存する一時的なポート範囲検出器。 ephemeral port は、プログラムが使用可能なユーザーポートを要求したときにオペレーティングシステムによって作成される、存続期間の短いエンドポイントです。オペレーティングシステムは、事前定義された範囲(通常は1024〜65535)からポート番号を選択し、関連するTCP接続が終了した後にポートを解放します。

デフォルトでは、システムは、Windows Server 2003で同時に実行される最大約4,000の一時ポートを作成でき、Windows Server 2008で約16,000を同時に実行できます。


解決

ChromeDriver 73.xにアップグレードすると、この問題が解決します。


アウトロ

これらのログメッセージは、 ChromeDriver-セキュリティに関する考慮事項 を反映しています。

ChromeDriverは強力なツールであり、悪意のあるユーザーに害を及ぼす可能性があります。 ChromeDriverを使用している間は、ChromeDriverを安全に保つために次の推奨事項に従ってください。

  • デフォルトでは、ChromeDriverはローカル接続のみを許可します。リモートホストから接続する必要がある場合は、コマンドラインで--whitelisted-ipsスイッチを使用して、ChromeDriverへの接続を許可するIPアドレスのリストを指定します。
  • 可能であれば、機密のローカルデータやネットワークデータにアクセスできないテストアカウントでChromeDriverを実行します。 ChromeDriverを特権アカウントで実行しないでください。
  • 可能であれば、Dockerや仮想マシンなどの保護された環境でChromeDriverを実行してください。
  • ファイアウォールを使用して、ChromeDriverへの不正なリモート接続を防止します。
  • Selenium Serverなどのサードパーティツールを介してChromeDriverを使用している場合は、それらのツールのネットワークポートも保護してください。
  • ChromeDriverとChromeの最新バージョンを使用してください。

Chrome here )で制限されているポートのリストを確認できます。

5
DebanjanB

私にも同じ問題があり、リンクにhttpsを追加するだけでした。例:driver.get( " https://www.yahoo.com ");

これで問題が解決し、スクリプトが実行されています。

1
user13015278