我正在编写一个基于Node.js的小型应用程序进行网络抓取。我正在使用axios
库来处理HTTP请求。由于某些原因,我无法获取一个网站:
const express = require('express');
const axios = require('axios');
const app = express();
const port = process.env.PORT || 3000;
app.get('/', async (req, res) => {
const url = 'http://www.ztm.waw.pl/';
const fetchRes = await axios.get(url);
console.log(fetchRes);
});
app.listen(port, () => console.log(`Example app listening on port ${port}!`));
运行服务器并访问http://localhost:3000时出现错误:
UnhandledPromiseRejectionWarning: Error: write EPROTO 4554425792:error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol:../deps/openssl/openssl/ssl/statem/statem_lib.c:1922:
代码大致上是正确的。例如,当我将url
更改为http://stackoverflow.com
时,我得到了响应。
这是什么问题?我想这与请求配置有关。我尝试过一点,但没有成功。
答案 0 :(得分:1)
这是因为自Node.js 12起,默认的TLS设置已得到加强。该站点不处理TLS v1.2,但默认情况下在Node.js 12中是必需的。
您可以在启动节点时通过命令行标志(--tls-min-v1.0
)对此进行更改,我对其进行了测试,并且它可以工作。 node --tls-min-v1.0 app.js