From 6e471aaac2636d653b8ff4a92c6b452e6877fd3d Mon Sep 17 00:00:00 2001 From: UltrafunkAmsterdam Date: Wed, 8 Feb 2023 17:31:44 +0100 Subject: [PATCH] PATCH WEDNESDAY 3.4.5 damn versioning **patch to fix headless mode** -https://stackoverflow.com/a/73840130/7058266 -https://support.google.com/chrome/a/answer/7679408#hdlssMod110 thanks @mdmintz for this info --- undetected_chromedriver/__init__.py | 13 ++++--------- undetected_chromedriver/patcher.py | 8 ++++---- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/undetected_chromedriver/__init__.py b/undetected_chromedriver/__init__.py index 0c15ea3..569460a 100644 --- a/undetected_chromedriver/__init__.py +++ b/undetected_chromedriver/__init__.py @@ -123,7 +123,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver): use_subprocess=True, debug=False, no_sandbox=True, - **kw, ): """ @@ -287,9 +286,6 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver): # see if a custom user profile is specified in options for arg in options.arguments: - if any([_ in arg for _ in ('--headless', 'headless')]): - options.arguments.remove(arg) - options.headless = True if "lang" in arg: m = re.search("(?:--)?lang(?:[ =])?(.*)", arg) try: @@ -358,7 +354,9 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver): options.binary_location = ( browser_executable_path or find_chrome_executable() ) + self._delay = 3 + self.user_data_dir = user_data_dir self.keep_user_data_dir = keep_user_data_dir @@ -367,16 +365,13 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver): if no_sandbox: options.arguments.extend(["--no-sandbox", "--test-type"]) if headless or options.headless: - if self.patcher.version_main < 108: - options.add_argument('--headless=chrome') - elif self.patcher.version_main >= 108: - options.add_argument( '--headless=new' ) - + options.headless = True options.add_argument("--window-size=1920,1080") options.add_argument("--start-maximized") options.add_argument("--no-sandbox") # fixes "could not connect to chrome" error when running # on linux using privileged user like root (which i don't recommend) + options.add_argument( "--log-level=%d" % log_level or divmod(logging.getLogger().getEffectiveLevel(), 10)[0] diff --git a/undetected_chromedriver/patcher.py b/undetected_chromedriver/patcher.py index 6303905..af87e5e 100644 --- a/undetected_chromedriver/patcher.py +++ b/undetected_chromedriver/patcher.py @@ -48,8 +48,6 @@ class Patcher(object): d = "~/.undetected_chromedriver" data_path = os.path.abspath(os.path.expanduser(d)) - - def __init__(self, executable_path=None, force=False, version_main: int = 0): """ @@ -63,13 +61,13 @@ class Patcher(object): """ self.force = force - self._custom_exe_path = False + prefix = "undetected" if not os.path.exists(self.data_path): os.makedirs(self.data_path, exist_ok=True) - + self.executable_path = executable_path if not executable_path: self.executable_path = os.path.join( self.data_path, "_".join([prefix, self.exe_name]) @@ -87,6 +85,8 @@ class Patcher(object): os.path.join(".", self.executable_path) ) + self._custom_exe_path = False + if executable_path: self._custom_exe_path = True self.executable_path = executable_path