PhantomJS/CasperJS 难以加载 HTTPS 页面
尝试使用 PhantomJS/CasperJS 加载安全 HTTPS 页面时,用户可能会遇到以下错误“PhantomJS 无法打开页面状态=失败。”解决此问题需要采取特定策略来解决 SSLv3 漏洞。
错误分析
最近发现的 POODLE SSLv3 漏洞已促使网站所有者在其网站上禁用 SSLv3 支持。然而,由于 PhantomJS 1.9.8 之前的版本默认使用 SSLv3,访问此类网站可能会导致加载失败。
解决方案
要解决此问题,请指定调用 PhantomJS 时使用 TLSv1 协议:
casperjs --ssl-protocol=tlsv1 yourScript.js
要获得更全面的解决方案,可以适应具有不同 SSL 协议的未来 PhantomJS 版本,请使用以下内容:
casperjs --ssl-protocol=any yourScript.js
替代方案方法
或者,更新到 PhantomJS 1.9.8 或更高版本以避免 SSLv3 漏洞问题。但是,这可能会引入影响 CasperJS 的不同错误。
验证
要验证 SSLv3 是否是根本问题,请在 CasperJS 中实现 resources.error 事件处理程序script:
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); });
如果显示的错误消息包含“错误代码:6. 描述:SSL 握手失败”,则可能是与 SSLv3 相关的问题。
其他提示
对于与证书相关的错误,请考虑使用 --ignore-ssl-errors=true 命令行选项。
以上是如何使用 PhantomJS/CasperJS 克服 HTTPS 页面加载问题?的详细内容。更多信息请关注PHP中文网其他相关文章!