CasperJS/PhantomJS 不加载 https 页面

IT技术 javascript ssl web-scraping phantomjs casperjs
2021-02-08 20:24:02

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

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

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

1个回答

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

casperjs --ssl-protocol=tlsv1 yourScript.js

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

casperjs --ssl-protocol=any yourScript.js

替代方法:更新到 PhantomJS 1.9.8 或更高版本。请注意,更新到 PhantomJS 1.9.8 会导致一个新的 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 的问题,则错误将类似于:

错误代码:6。说明:SSL 握手失败


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

@FullDecent 我从未使用过 CasperJS 1.0.4,但我认为它不适用于 PhantomJS 2。由于 CasperJS 1.1-beta3 特别支持 PhantomJS < 1.x。问一个新问题。
2021-03-19 20:24:02
我正在使用 casper 1.0.4 和 phantom 2.0.0,我能够在 phantom 上加载页面,但不能在 casper 上加载页面,并且 casper 没有从该资源加载页面中打印出错误,选项不起作用
2021-03-22 20:24:02
这很奇怪,因为为我生成了正确的屏幕截图如果您使用的是比 1.9.7 更旧的 PhantomJS 版本,您可能应该更新。
2021-04-04 20:24:02
不幸的是,即使使用 TLSv1,我也会遇到同样的错误。CasperJS 是否接受其他常见的 SSL 协议?
2021-04-07 20:24:02
这给了我希望!我使用检查了我安装的版本phantomjs --version,它给了我 1.8.2,但是当我这样做时brew info phantomjs它说 1.9.7。我不确定如何找到 1.8.2 版本的安装位置。我将调查是否可以从命令行更新 PhantomJS。我的 Casper 是 1.0.4。作为旁注,您知道如何格式化 PhantomJS/CasperJS 使用的 cookies.json 文件吗?
2021-04-10 20:24:02