我正在尝试通过节点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;
});
有谁知道这里会发生什么?
答案 0 :(得分:13)
尝试在您提出的请求中使用options = { secureProtocol: 'SSLv3_method' }
。
答案 1 :(得分:12)
我们遇到了同样的问题。默认情况下,request使用https.globalAgent。所以我们在脚本顶部附近添加了代码。
var https = require('https');
https.globalAgent.options.secureProtocol = 'SSLv3_method';
突然间一切正常。
答案 2 :(得分:0)
如果网站使用ECDH
曲线,对我来说,仅通过添加以下选项即可解决该问题:
request({ url, agentOptions: {
ecdhCurve: 'P-521:P-384:P-256',
},(err,res,body) => {
JFYI,也许这会帮助某人。