javascript - CasperJS/PhantomJS 不加载 https 页面

标签 javascript ssl web-scraping phantomjs casperjs

我知道有些网页 PhantomJS/CasperJS 无法打开,我想知道这是否是其中之一:https://maizepages.umich.edu . CasperJS 报错:PhantomJS 无法打开页面 status=fail。

我尝试忽略 ssl 错误并更改我的用户代理,但我不确定如何确定要使用哪些。

我现在所做的就是使用 casper.start(url, function () { ... }) 进行基本的 casper 设置,其中 url=https://maizepages。 umich.edu;

最佳答案

该问题可能与最近发现的 SSLv3 漏洞 (POODLE) 有关。网站所有者被迫从他们的网站中删除 SSLv3 支持。由于 PhantomJS < v1.9.8 使用 SSLv3 by default , 你应该使用 TLSv1:

casperjs --ssl-protocol=tlsv1 yourScript.js

当较新的 PhantomJS 版本与其他 SSL 协议(protocol)一起出现时,万能的解决方案是使用 any。但这将使 POODLE 漏洞可在尚未禁用 SSLv3 的站点上被利用。

casperjs --ssl-protocol=any yourScript.js

替代方法:更新到 PhantomJS 1.9.8 或更高版本。请注意,更新到 PhantomJS 1.9.8 会导致 new bug ,这对 CasperJS 来说尤其烦人。

如何验证: 添加 resource.error脚本开头的事件处理程序如下:

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);
});

如果确实是 SSLv3 的问题,错误将类似于:

Error code: 6. Description: SSL handshake failed


顺便说一句,当证书出现问题时,您可能还想使用 --ignore-ssl-errors=true 命令行选项运行。

关于javascript - CasperJS/PhantomJS 不加载 https 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26415188/

相关文章:

security - 什么是 keystore 和信任库以及它们之间的区别

python - 如何使用 Python 从 csv 文件中抓取 YouTube URL 列表并输出到新的 csv 文件

javascript - 按顺序需要选项

javascript - 反转最后索引

ruby-on-rails - Michael Hartl 的教程 - ssl 配置 - 使用 elastic beanstalk - 如何恢复到 http?

javascript - Puppeteer 按 Enter 按钮或单击 Dialog OK 按钮

c# - 使用 HTML Agility Pack 获取图像旁边的文本?

javascript - 为什么谷歌浏览器总是在选定文本后添加空格?

javascript - 如何在 javascript 中捕获 jquery 自定义事件

wcf - 带有 ssl 和 webHttpBinding 的自托管 wcf