@@ -37,6 +37,8 @@ import { isAbortError } from './progress';
3737import { getMatchingTLSOptionsForOrigin , rewriteOpenSSLErrorIfNeeded } from './socksClientCertificatesInterceptor' ;
3838import { Tracing } from './trace/recorder/tracing' ;
3939
40+ import type net from 'net' ;
41+
4042import type { Playwright } from './playwright' ;
4143import type { Progress } from './progress' ;
4244import type * as types from './types' ;
@@ -552,9 +554,26 @@ export abstract class APIRequestContext extends SdkObject {
552554 ) ;
553555 request . on ( 'close' , ( ) => eventsHelper . removeEventListeners ( listeners ) ) ;
554556
557+ const captureSecurityDetails = ( socket : net . Socket ) => {
558+ if ( ! ( socket instanceof TLSSocket ) )
559+ return ;
560+ const peerCertificate = socket . getPeerCertificate ( ) ;
561+ securityDetails = {
562+ protocol : socket . getProtocol ( ) ?? undefined ,
563+ subjectName : peerCertificate . subject . CN ,
564+ validFrom : new Date ( peerCertificate . valid_from ) . getTime ( ) / 1000 ,
565+ validTo : new Date ( peerCertificate . valid_to ) . getTime ( ) / 1000 ,
566+ issuer : peerCertificate . issuer . CN
567+ } ;
568+ } ;
569+
555570 request . on ( 'socket' , socket => {
571+ serverIPAddress = socket . remoteAddress ;
572+ serverPort = socket . remotePort ;
573+
556574 if ( request . reusedSocket ) {
557575 reusedSocketAt = monotonicTime ( ) ;
576+ captureSecurityDetails ( socket ) ;
558577 return ;
559578 }
560579
@@ -569,22 +588,9 @@ export abstract class APIRequestContext extends SdkObject {
569588 eventsHelper . addEventListener ( socket , 'connect' , ( ) => { tcpConnectionAt = monotonicTime ( ) ; } ) ,
570589 eventsHelper . addEventListener ( socket , 'secureConnect' , ( ) => {
571590 tlsHandshakeAt = monotonicTime ( ) ;
572-
573- if ( socket instanceof TLSSocket ) {
574- const peerCertificate = socket . getPeerCertificate ( ) ;
575- securityDetails = {
576- protocol : socket . getProtocol ( ) ?? undefined ,
577- subjectName : peerCertificate . subject . CN ,
578- validFrom : new Date ( peerCertificate . valid_from ) . getTime ( ) / 1000 ,
579- validTo : new Date ( peerCertificate . valid_to ) . getTime ( ) / 1000 ,
580- issuer : peerCertificate . issuer . CN
581- } ;
582- }
591+ captureSecurityDetails ( socket ) ;
583592 } ) ,
584593 ) ;
585-
586- serverIPAddress = socket . remoteAddress ;
587- serverPort = socket . remotePort ;
588594 } ) ;
589595 request . on ( 'finish' , ( ) => { requestFinishAt = monotonicTime ( ) ; } ) ;
590596
0 commit comments