@@ -88,7 +88,7 @@ async def _get_context_creation_lock(self) -> Lock:
88
88
self ._context_creation_lock = Lock ()
89
89
return self ._context_creation_lock
90
90
91
- async def ensure_browser_context (self ,
91
+ async def _ensure_browser_context (self ,
92
92
browser_new_context_options : Mapping [str , Any ] | None = None ,
93
93
proxy_info : ProxyInfo | None = None ,
94
94
) -> None :
@@ -99,8 +99,6 @@ async def ensure_browser_context(self,
99
99
proxy_info = proxy_info ,
100
100
)
101
101
102
-
103
-
104
102
@property
105
103
@override
106
104
def pages (self ) -> list [Page ]:
@@ -161,12 +159,6 @@ async def new_page(
161
159
Raises:
162
160
ValueError: If the browser has reached the maximum number of open pages.
163
161
"""
164
- if not self ._browser_context :
165
- self ._browser_context = await self ._create_browser_context (
166
- browser_new_context_options = browser_new_context_options ,
167
- proxy_info = proxy_info ,
168
- )
169
-
170
162
if not self .has_free_capacity :
171
163
raise ValueError ('Cannot open more pages in this browser.' )
172
164
@@ -178,11 +170,7 @@ async def new_page(
178
170
)
179
171
page = await new_context .new_page ()
180
172
else :
181
- if not self ._browser_context :
182
- self ._browser_context = await self ._create_browser_context (
183
- browser_new_context_options = browser_new_context_options ,
184
- proxy_info = proxy_info ,
185
- )
173
+ await self ._ensure_browser_context ()
186
174
page = await self ._browser_context .new_page ()
187
175
188
176
# Handle page close event
@@ -229,8 +217,8 @@ async def _create_browser_context(
229
217
Create context without headers and without fingerprints if neither `self._header_generator` nor
230
218
`self._fingerprint_generator` is available.
231
219
"""
220
+ start = datetime .now (timezone .utc )
232
221
browser_new_context_options = dict (browser_new_context_options ) if browser_new_context_options else {}
233
-
234
222
if proxy_info :
235
223
if browser_new_context_options .get ('proxy' ):
236
224
logger .warning ("browser_new_context_options['proxy'] overriden by explicit `proxy_info` argument." )
@@ -242,11 +230,14 @@ async def _create_browser_context(
242
230
)
243
231
244
232
if self ._fingerprint_generator :
245
- return await AsyncNewContext (
233
+
234
+ c = await AsyncNewContext (
246
235
browser = self ._browser ,
247
236
fingerprint = self ._fingerprint_generator .generate (),
248
237
** browser_new_context_options ,
249
238
)
239
+ logger .warning (f"Fingerprint generation time [s]: { (datetime .now (timezone .utc ) - start ).total_seconds ()} " )
240
+ return c
250
241
251
242
if self ._header_generator :
252
243
extra_http_headers = dict (
@@ -268,5 +259,5 @@ async def _create_browser_context(
268
259
browser_new_context_options ['extra_http_headers' ] = browser_new_context_options .get (
269
260
'extra_http_headers' , extra_http_headers
270
261
)
271
-
262
+ logger . warning ( f"Fingerprint generation time [s]: { ( datetime . now ( timezone . utc ) - start ). total_seconds () } " )
272
263
return await self ._browser .new_context (** browser_new_context_options )
0 commit comments