11

我正在尝试通过节点 https.request() 获取网页。这样做会导致我的代码记录错误。使用节点请求模块具有相同的结果:

请求问题:140398870042432:错误:140773F2:SSL 例程:SSL23_GET_SERVER_HELLO:sslv3 警报意外消息:s23_clnt.c:658:

以下表示正在使用错误的 SSL 版本,但我找不到更改版本的方法:curl error: "sslv3 alert unexpected message"。从我的终端使用 curl 会返回一个响应,就像在我的浏览器中点击 URL(它是一个登录页面)一样。我的代码如下。

var request = require('request')
request.get("https://icmserver.wit.ie/balance", function(err, res, body) {
    if (err) {
        return console.log(err)
    }
    return body;
});

有谁知道这里可能发生什么?

4

3 回答 3

13

尝试options = { secureProtocol: 'SSLv3_method' }在您提出的请求中使用。

于 2012-07-10T07:22:40.687 回答
12

我们遇到了同样的问题。默认情况下,请求使用 https.globalAgent。所以我们在脚本顶部附近添加了代码。

var https = require('https');
https.globalAgent.options.secureProtocol = 'SSLv3_method';

突然间,一切都奏效了。

于 2012-10-02T01:22:39.303 回答
0

如果网站使用ECDH曲线,对我来说,问题只能通过添加此选项来解决:

request({ url, agentOptions: {
            ecdhCurve: 'P-521:P-384:P-256',
},(err,res,body) => {

JFYI,可能这会对某人有所帮助。

于 2019-02-27T18:05:31.197 回答