PhantomJS无法打开HTTPS网站

我正在使用下面的代码基于loadspeed.js示例来打开https://网站,该网站也需要http服务器身份validation。

var page = require('webpage').create(), system = require('system'), t, address; page.settings.userName = 'myusername'; page.settings.password = 'mypassword'; if (system.args.length === 1) { console.log('Usage: scrape.js <some URL>'); phantom.exit(); } else { t = Date.now(); address = system.args[1]; page.open(address, function (status) { if (status !== 'success') { console.log('FAIL to load the address'); } else { t = Date.now() - t; console.log('Page title is ' + page.evaluate(function () { return document.title; })); console.log('Loading time ' + t + ' msec'); } phantom.exit(); }); } 

它无法一直加载页面。 这里有什么可能是错的? 安全网站的处理方式有什么不同? 该网站可以从浏览器成功访问。

我现在刚刚开始使用幻影,并且发现停止播放这个游戏太好了,尽pipe我并没有提出这个问题。

我尝试了Fred和Cameron Tinker的答案,但只有–ssl-protocol =任何选项似乎都能帮助我:

 phantomjs --ssl-protocol=any test.js 

另外,我认为使用--ssl-protocol=any应该更安全,因为您仍然使用encryption,但--ignore-ssl-errors将忽略(duh)所有ssl错误,包括恶意错误。

问题很可能是由于SSL证书错误。 如果使用–ignore-ssl-errors = yes选项启动phantomjs,则应继续加载页面,因为如果没有SSL错误,

 phantomjs --ignore-ssl-errors=yes [phantomOptions] script.js [scriptOptions] 

我看到一些网站在正确实施SSL证书或已经过期等方面存在问题。phantomjs命令行选项的完整列表可以在这里find: http ://phantomjs.org/api/command-line 。 HTML 。 我希望这有帮助。

请注意,截至2014年10月16日,PhantomJS默认使用SSLv3打开HTTPS连接。 随着最近宣布的POODLE漏洞 ,许多服务器正在禁用SSLv3支持。

为了解决这个问题,你应该可以运行PhantomJS:

 phantomjs --ssl-protocol=tlsv1 

希望PhantomJS很快就会更新,使TLSv1成为默认的SSLv3。

遇到同样的问题…
–ignore-ssl-errors = yes不足以解决这个问题,不得不做另外两件事:
1)更改用户代理
2)尝试所有的ssl协议,唯一工作的是tlsv1的页面问题
希望这可以帮助…

我遇到了同样的问题(casperjs 1.1.0-beta3 / phantomjs 1.9.7)。 使用–ignore-ssl-errors = yes和–ssl-protocol = tlsv1解决了它。 只使用其中的一个选项并不能解决这个问题。

如果有人正在使用Phantomjs和Sahi,那么--ignore-ssl-errors选项需要放入您的browser_types.xml文件中。 它为我工作。

 <browserType> <name>phantomjs</name> <displayName>PhantomJS</displayName> <icon>safari.png</icon> <path>/usr/local/Cellar/phantomjs/1.9.2/bin/phantomjs</path> <options>--ignore-ssl-errors=yes --debug=yes --proxy=localhost:9999 /usr/local/Cellar/phantomjs/phantom-sahi.js</options> <processName>"PhantomJS"</processName> <capacity>100</capacity> <force>true</force> </browserType> 

我从phantomJS(在CentOS 6.6上运行)收到“创buildSSL上下文出错”

从源头上build立固定它给我。 不要忘记使用你build造的幻影。 (而不是/ usr / local / bin / phantomjs,如果你有的话)

 sudo yum -y install gcc gcc-c++ make flex bison gperf ruby openssl-devel freetype-devel fontconfig-devel libicu-devel sqlite-devel libpng-devel libjpeg-devel git clone git://github.com/ariya/phantomjs.git cd phantomjs git checkout 2.0 ./build.sh cd bin/ ./phantomjs <your JS file> 

怎么样?

如果您使用shebang来执行phantomjs脚本,请使用以下shebang行

 #!/usr/bin/phantomjs --ignore-ssl-errors=yes var system = require('system'); var webpage = require('webpage'); // ... rest of your script 

使用任何上述的答案。 我个人喜欢--ignore-ssl-errors=yes因为validation我的环回Web服务器的自签名证书是无关紧要的。