質問: 環境は CentOS7.0(CentOS Linux release 7.2.1511 (Core)) Selenium 2.45.0 PhantomJsDriver (jar) 1.1.0 PhantomJsDriver (本体) 1.9.7 java 1.8.0 Spring 4.2.0 ランダムに設定したURLを、Seleniumから表示し、取得結果をログ出力すると、 対象ページのHTMLが取得できているのですが、 をPhantomJSから表示すると、 ``` ``` となってしまいます。また、当該ページのURLをWebDriverから取得すると、 ``` about:blank ``` となっていました。 プラグラムが動作しているサーバーからwgetすると、HTMLは取得できました。 また、外部のAWSからプログラムを動かしても、同じ現象が発生しています。 PhantomJsのUserAgentは ``` Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:45.0) Gecko/20100101 Firefox/45.0 ``` としており、同サーバーと同じLAN内にある、Windows10のPCから、 Cygwin経由でプログラムを動かしたところ、正常に動作しています(HTMLが取得されています)。 ただし、Windows10のPC上で動作確認する際は、PhantomJSではなく、FirefoxDriverを使用しました。CentOS7サーバーからFirefoxDriverでの動作も確認しましたが、同様の空のレスポンスがかえってきました。 IPアドレスでのアクセス制御がされているわけでもないみたいですが、 何かご存じの方はいらっしゃいますでしょうか? 追記 別モジュールを利用しているため、確実ではありませんが、 CentOS release 6.6 (Final) java 1.6 では正常に動作しました。 OS・ミドルウェア依存の問題であるという可能性はあるのでしょうか? ちなみに質問当初のJavaバージョンは1.8で、Windows上での動作を確認していたため、javaの問題ではなさそうです。 それ以外、phantomJsDriverやSeleniumのバージョンは若干の相違があります。
回答: > > PhantomJsDriver (本体) 1.9.7 > > > これが原因です。 1.9.7まではhttps接続の既定の暗号化プロトコルがSSL v3で、 これがサーバー側からセキュリティ上の理由で拒否されているとみられます。 例えば、 ではなく にアクセスすると、PhantomJS 1.9.7でも接続可能です。 または、PhantomJS 1.9.8以降に更新することでも接続可能になります。 PhantomJS 1.9.8の更新履歴には次の記述があり、 既定の暗号化プロトコルがTLS v1に変わったことがわかります。 > > Change default SSL protocol to TLSv1 to address POODLE (issue 12655) > > To use the old default protocol of SSLv3 which is vulnerable to POODLE > > add the --ssl-protocol=SSLv3 flag. Reference: > > >