我想使用chrome puppeteer访问网址的证书详细信息。是否可以使用当前的puppeteer API来完成它?
答案 0 :(得分:0)
您可以使用Chrome DevTools协议Network.getCertificate
方法访问DER编码的证书:
const certificate = await page._client.send('Network.getCertificate', {
origin: 'https://example.com/',
});
for (let i = 0; i < certificate.tableNames.length; i++) {
console.log(certificate.tableNames[i]);
}
答案 1 :(得分:0)
就像Grant Miller所说的那样,您可以使用Chrome DevTools协议Network.getCertificate
方法访问完整的DER编码证书,而不仅仅是伪造者响应建议的securityDetails。
page.on('response', async (res) => {
if (res.securityDetails() != null) {
console.info(await page._client.send('Network.getCertificate', {origin: res.url()}));
/*
{ tableNames: [ 'MIIDwTCCAqmgAwIBAgIJALzkRqUOhsraM...' ] }
Network.getCertificate - Returns the DER-encoded certificate
*/
}
}
然后,您可以使用任何节点包来解析编码证书链中的每个证书。
答案 2 :(得分:0)
如果需要以下方法,可以直接在page.goto
上使用response.securityDetails()
:
例如validTo()
:
const response = await page.goto(url)
const securityDetails = response.securityDetails()
const expiryDate = securityDetails.validTo() * 1000
console.log(new Date(expiryDate))
输出:
Sunday, December 20, 2020