@@ -101,8 +101,8 @@ def __init__(
101
101
log_level: (default: adapts to python global log level)
102
102
103
103
headless: (default: False)
104
- Use headless mode. (Can also be specified with ChromeOptions.)
105
- Warning: this lowers undetectability and is not fully supported.
104
+ Use headless mode.
105
+ (Already handled by seleniumbase/core/browser_launcher.py)
106
106
107
107
patch_driver: (default: True)
108
108
Patches uc_driver to be undetectable if not already patched.
@@ -227,11 +227,6 @@ def __init__(
227
227
"--password-store=basic" ,
228
228
]
229
229
)
230
- if headless or options .headless :
231
- options .headless = True
232
- options .add_argument ("--no-sandbox" )
233
- # Fixes "could not connect to chrome" error when running
234
- # on Linux when using a privileged user such as root.
235
230
options .add_argument (
236
231
"--log-level=%d" % log_level
237
232
or divmod (logging .getLogger ().getEffectiveLevel (), 10 )[0 ]
@@ -304,8 +299,6 @@ def __init__(
304
299
reactor = Reactor (self )
305
300
reactor .start ()
306
301
self .reactor = reactor
307
- if options .headless :
308
- self ._configure_headless ()
309
302
self ._web_element_cls = WebElement
310
303
311
304
def __getattribute__ (self , item ):
@@ -325,56 +318,6 @@ def newfunc(*args, **kwargs):
325
318
return newfunc
326
319
return original
327
320
328
- def _configure_headless (self ):
329
- orig_get = self .get
330
- logger .info ("setting properties for headless" )
331
-
332
- def get_wrapped (* args , ** kwargs ):
333
- if self .execute_script ("return navigator.webdriver" ):
334
- logger .info ("patch navigator.webdriver" )
335
- self .execute_cdp_cmd (
336
- "Page.addScriptToEvaluateOnNewDocument" ,
337
- {
338
- "source" : """
339
- Object.defineProperty(window, 'navigator', {
340
- value: new Proxy(navigator, {
341
- has: (target, key) => (
342
- key === 'webdriver' ? false : key in target
343
- ),
344
- get: (target, key) =>
345
- key === 'webdriver' ?
346
- false :
347
- typeof target[key] === 'function' ?
348
- target[key].bind(target) :
349
- target[key]
350
- })
351
- });
352
- """
353
- },
354
- )
355
- logger .info ("Patch user-agent string" )
356
- self .execute_cdp_cmd (
357
- "Network.setUserAgentOverride" ,
358
- {
359
- "userAgent" : self .execute_script (
360
- "return navigator.userAgent"
361
- ).replace ("Headless" , "" )
362
- },
363
- )
364
- self .execute_cdp_cmd (
365
- "Page.addScriptToEvaluateOnNewDocument" ,
366
- {
367
- "source" : """
368
- Object.defineProperty(
369
- navigator, 'maxTouchPoints', {
370
- get: () => 1
371
- })"""
372
- },
373
- )
374
- return orig_get (* args , ** kwargs )
375
-
376
- self .get = get_wrapped
377
-
378
321
def __dir__ (self ):
379
322
return object .__dir__ (self )
380
323
0 commit comments