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
This commit is contained in:
UltrafunkAmsterdam 2023-02-08 17:31:44 +01:00
parent 0e27329b91
commit 6e471aaac2
2 changed files with 8 additions and 13 deletions

View File

@ -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]

View File

@ -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