How to resolve `Error: unable to verify the first certificate` while scrapping web page using cheerio?

How to resolve `Error: unable to verify the first certificate` while scrapping web page using cheerio?

我正在尝试使用 cheerio 学习网页抓取。但是当我试图废弃内容时。在其中一个站点中,我收到以下错误:

Error: unable to verify the first certificate
    at TLSSocket.onConnectSecure (_tls_wrap.js:1515:34)
    at TLSSocket.emit (events.js:400:28)
    at TLSSocket._finishInit (_tls_wrap.js:937:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:709:12) {
  code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE',

我无法理解我试图删除的其他网站,我没有收到错误。

这是我的代码:

const express = require('express');
const axios = require('axios');
const cheerio = require('cheerio');

const app = express();
const url = "--------------Link Of the site--------------";


axios.get(url)
    .then(response => {
        const html = response.data;
        const $ = cheerio.load(html);
        const articles = [];
        
        $('.text-left a',html).each(function(){
            const title= $(this).text();
            const url= $(this).attr('href');

            articles.push({
                title,
                url    
            })
        })        

        console.log(articles);

    })
    .catch(err => {
        console.log(err);
    })



app.listen(8080, () => console.log('Server running'));


请指导我如何解决此错误。

您收到错误的网站提供的证书无效(证书本身创建错误或损坏,或者与声明的颁发者不匹配);其他站点提供的是有效证书,因此它们不会出现此错误,而是可以正常工作。

如果该站点可公开访问(在 443 上),请尝试使用 https://www.ssllabs.com/ssltest 轻松获得相当彻底的分析。 (它实际上会检查并显示很多关于站点安全的东西,不仅仅是证书,其他部分你可以忽略。)

否则,或者如果这还不够,假设您拥有或(可以)获得 OpenSSL,请执行

openssl s_client -connect host:port -servername host -showcerts
# on OpenSSL 1.1.1 up you can omit the -servername host

然后将握手中的证书(从 -----BEGIN CERTIFICATE----------END CERTIFICATE----- 的块)拆分成单独的文件,并且至少前两个

openssl x509 -in fileN -text

并确定它们是否正确链接(first.issuer = second.subject 和 first.AKI = second.SKI 如果存在)并测试

openssl verify -CAfile file2 -partial_chain file1 
# assuming OpenSSL 1.0.2 up; if older post details, this will be much harder

PS:您的意思是 scrape/scraping(在上下文中,从中获取信息)而不是 scrap/scrapping(因有缺陷或无法使用而丢弃)。