首页  >  文章  >  web前端  >  为什么 PhantomJS 无法打开 HTTPS 页面以及如何修复?

为什么 PhantomJS 无法打开 HTTPS 页面以及如何修复?

Linda Hamilton
Linda Hamilton原创
2024-10-26 15:05:31509浏览

Why does PhantomJS fail to open HTTPS pages and how can I fix it?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn