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服务器的自签名证书是无关紧要的。