ホームページ >ウェブフロントエンド >jsチュートリアル >PhantomJS が HTTPS ページを開けないのはなぜですか?それを修正するにはどうすればよいですか?
PhantomJS の HTTPS ページ読み込みエラー
PhantomJS/CasperJS では、https://maizepages.umich.edu などの特定の Web ページを開くときに問題が発生します。 CasperJS がこのページをロードしようとすると、「PhantomJS がページ status=fail を開けませんでした」というエラーが返されます。
原因の特定
根本的な原因を特定するには、エラー ログを調べると役に立ちます。よくある問題の 1 つは、TLSv1 がサポートされていないことです。 PhantomJS バージョン 1.9.8 より前のバージョンでは、デフォルトで SSLv3 が使用されますが、POODLE の脆弱性のため、多くの Web サイトで無効になっています。
解決策: TLSv1 サポート
これに対処するにはこの問題が発生した場合は、次のコマンドを使用して SSL プロトコルとして TLSv1 を指定します。
<code class="sh">casperjs --ssl-protocol=tlsv1 yourScript.js</code>
または、「任意の」プロトコルを使用することもできます。これにより、将来の PhantomJS バージョンで利用可能な新しい SSL プロトコルがサポートされます。ただし、これにより、SSLv3 をまだ無効にしていないサイトの脆弱性が露呈する可能性があります。
<code class="sh">casperjs --ssl-protocol=any yourScript.js</code>
修正の確認
エラーが SSLv3 に関連しているかどうかを確認するには、次の手順を実行します。次のリソース エラー ハンドラをスクリプトに追加します:
<code class="sh">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); });</code>
エラーが実際に SSLv3 関連である場合、エラー メッセージは次のようになります:
Error code: 6. Description: SSL handshake failed
追加オプション
証明書関連のエラーの場合は、--ignore-ssl-errors=true コマンドライン オプションを使用することをお勧めします。これにより、SSL 証明書検証エラーが無視されます。
以上がPhantomJS が HTTPS ページを開けないのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。