javascript - CasperJS/PhantomJS 无法加载 https 页面

标签 javascript ssl web-scraping phantomjs casperjs

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

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

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

最佳答案

该问题可能与最近发现的 SSLv3 漏洞 (POODLE) 有关。网站所有者被迫从其网站中删除 SSLv3 支持。由于 PhantomJS < v1.9.8 使用 SSLv3 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/27861253/

相关文章:

ssl - 为什么我必须从私钥创建证书请求 (CSR)?

python - 无法从 Morningstar 抓取 dataid - 如何从 Python 访问网络检查工具?

python - 使用 Python 从数据框的列中删除停用词

javascript - NodeJS 使用 module.exports 导出异步变量

javascript - 如何使用 jQuery 重命名 <ul> 内的 <li>?

javascript - InspIRCd 安全 WebSocket 连接失败

java - 解释代码 - SSL

javascript - 如何将图标和标签放在同一行?

javascript - 如何停止for循环执行直到for循环内的DWR方法执行完成

jquery - 如何编写 HTML 结构的 Cheerio 查询?