PhantomJSは、デフォルトで多くのHTTPS URLの読み込みに失敗しますが、--ignore-ssl-errors=true
やなどのコマンドラインフラグを追加することで、それらの多くを機能させることができます--ssl-protocol=any
。ただし、これらのフラグが有効になっている場合でも失敗するサイトをいくつか見つけています。たとえば、次のコードスニペットを試してください。
var page = require('webpage').create();
page.onResourceError = function(e){
console.log("Page resource failed to load. Reason: "+e.errorString);
}
page.open("https://www.bluehaven.com/pool-remodeling/", function(status){
console.log("Load status: "+status);
});
これらの2つのフラグを有効にしてこのスクリプトを実行すると、次の出力が得られます。
$ phantomjs --ignore-ssl-errors=true --ssl-protocol=any lib/test_phantom.js
Page resource failed to load. Reason: SSL handshake failed
Load status: fail
私はかなりグーグルで検索しましたが、PhantomJSとSSLの失敗に関する議論はすべて、上記の2つのコマンドフラグを使用することを推奨しています。または、これはPhantomJSのバグが原因であり、すぐには修正されない可能性があります。
ここSOの誰かが、PhantomJSに上記のURL(および同じHTTPSエラーが発生する他のサイト)をロードさせる方法について異なるアイデアを持っていますか?私の計画Bは、このSSLエラーを共有しないことを理解しているので、SlimerJSを試すことですが、これにはリスクが伴い、どうしても必要な場合を除いて、SlimerJSを試してはいけません。
プログラムは、phantomjs1.9.0を使用するUbuntu14.04で正常に動作します。サーバーはECDHE暗号のみをサポートしているため、システムでこれらの暗号をサポートしていない古いバージョンのOpenSSLを使用していると思います。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加