PhantomJS/CasperJSで開くことができない特定のWebページがあることは知っていますが、このページが https://maizepages.umich.ed の1つかどうか疑問に思っていました。 CasperJSがエラーを表示します:PhantomJSはページstatus = failを開くことができませんでした。
Ssl-errorsを無視してユーザーエージェントを変更しようとしましたが、どのエージェントを使用するかを判断する方法がわかりません。
私が今しているのは、casper.start(url, function () { ... })
を使用した基本的なキャスパーのセットアップだけです。ここで、url=https://maizepages.umich.edu
;
この問題は、SSLv3脆弱性(POODLE)の最近の発見に関連している可能性があります。 Webサイトの所有者は、WebサイトからSSLv3サポートを削除することを余儀なくされました。 PhantomJS <v1.9.8は デフォルト でSSLv3を使用するため、TLSv1を使用する必要があります。
casperjs --ssl-protocol=tlsv1 yourScript.js
キャッチオールソリューションは、新しいPhantomJSバージョンが他のSSLプロトコルに付属している場合にany
を使用することです。ただし、これにより、SSLv3をまだ無効にしていないサイトでPOODLEの脆弱性が悪用される可能性があります。
casperjs --ssl-protocol=any yourScript.js
別の方法:PhantomJS 1.9.8以降に更新します。 PhantomJS 1.9.8に更新すると 新しいバグ になり、CasperJSにとって特に迷惑なことに注意してください。
確認方法:スクリプトの先頭に resource.error
イベントハンドラーを追加します。
casper.on("resource.error", function(resourceError){
console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')');
console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString);
});
それが実際にSSLv3の問題である場合、エラーは次のようなものになります。
エラーコード:6.説明:SSLハンドシェイクに失敗しました
余談ですが、証明書に問題がある場合は、--ignore-ssl-errors=true
コマンドラインオプションを使用して実行することもできます。