PhantomJS 加载 HTTPS 页面错误
PhantomJS/CasperJS 在打开某些网页时遇到困难,包括 https://maizepages.umich.edu。当 CasperJS 尝试加载此页面时,它返回错误“PhantomJS 无法打开页面 status=fail。”
确定原因
要确定根本原因,检查错误日志很有帮助。一个常见问题是缺乏对 TLSv1 的支持。 PhantomJS 1.9.8 之前的版本默认使用 SSLv3,由于 POODLE 漏洞,许多网站已禁用 SSLv3。
解决方案:TLSv1 支持
解决此问题问题,使用以下命令指定 TLSv1 作为 SSL 协议:
<code class="sh">casperjs --ssl-protocol=tlsv1 yourScript.js</code>
或者,可以使用“any”协议,它将支持未来 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中文网其他相关文章!