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(因有缺陷或无法使用而丢弃)。
我正在尝试使用 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(因有缺陷或无法使用而丢弃)。