web-dev-qa-db-ja.com

Selenium:悪意のあるコードによるアクセスを防ぐために、ChromeDriverおよび関連するテストフレームワークが使用するポートを保護してください

ローカルマシンを介してVPNに接続し、chromeブラウザでSeleniumスクリプトを実行しようとすると、次のエラーが発生します。

Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
[1553947986.711][WARNING]: Timed out connecting to Chrome, retrying...
[1553947990.713][WARNING]: Timed out connecting to Chrome, retrying...
[1553947998.713][WARNING]: Timed out connecting to Chrome, retrying...
[1553948014.713][WARNING]: Timed out connecting to Chrome, giving up.
[1553948016.724][WARNING]: Timed out connecting to Chrome, retrying...
[1553948020.724][WARNING]: Timed out connecting to Chrome, retrying...
[1553948028.727][WARNING]: Timed out connecting to Chrome, retrying...
[1553948044.730][WARNING]: Timed out connecting to Chrome, giving up.

これは、VPNなしでスクリプトを実行したい場合にのみ発生します。VPNなしでスクリプトは正常に機能しています。Firefoxブラウザーで上記の問題が発生しない場合

4
Pritam Maske

私も先週からこの問題に直面していました。私はたくさん検索し、この問題を解決するためにさまざまなアプローチを試しました以下のコード(疑似コード)が問題の解決に役立ちました。私のアプローチ:

  1. Chromedriver.exeサーバーを実行し、ポート番号を確認します(コードでProcessクラスを使用しました)以下の手順に従って、最初に手動で確認します。
    • コマンドプロンプトを開く
    • chromedriverのあるパスに移動します
    • chromedriverを実行します(> chromedriverと入力するだけです)。
    • chromedriverサーバーはポート番号をメモして実行を開始します(私の場合は9515)
  2. URL( http:// localhost:portNumber )でドライバーを初期化します
  3. 通常のもの(最大化、タイムアウト、URLに移動)
  4. テストスクリプトを書く
  5. ドライバーインスタンスを閉じる(driver.close())
  6. プロセスインスタンスを閉じます(process.destroy())

    try { process = new ProcessBuilder("path of the chromedriver.exe").start(); } catch (IOException e1) { e1.printStackTrace(); } System.setProperty("webdriver.chrome.driver", "path of the chromedriver.exe"); ChromeOptions options = new ChromeOptions(); try { driver = new RemoteWebDriver(new URL("http://127.0.0.1:9515"), options); } catch (MalformedURLException e) { e.printStackTrace(); } // maximize browser // delete All Cookies // page Load Timeout // implicitly Wait // navigating to the url // run the test scripts // close the driver // close the process

それがあなたの問題も解決することを願っています。問題が発生した場合はお知らせください。

1
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--whitelist-ip *");
chromeOptions.addArguments("--proxy-server='direct://'");
chromeOptions.addArguments("--proxy-bypass-list=*");
WebDriver driver = new ChromeDriver(chromeOptions);

ここでIPアドレスを指定することもできます。

0

IPv6を無効にすると、この問題は解決しました。 macOSの場合:networksetup -setv6off Wi-Fi

私はまた、hostsファイルから::1 localhostを削除する必要がありました。

0
jw1988