This commit is contained in:
unknown 2021-02-04 12:15:22 +01:00
parent de55331c53
commit 2e2047dc91
2 changed files with 23 additions and 24 deletions

View File

@ -86,7 +86,9 @@ class Chrome:
) )
instance.execute_cdp_cmd( instance.execute_cdp_cmd(
"Network.setUserAgentOverride", "Network.setUserAgentOverride",
{"userAgent": original_user_agent_string.replace("Headless", ""),}, {
"userAgent": original_user_agent_string.replace("Headless", ""),
},
) )
if emulate_touch: if emulate_touch:
instance.execute_cdp_cmd( instance.execute_cdp_cmd(
@ -103,7 +105,6 @@ class Chrome:
class ChromeOptions: class ChromeOptions:
def __new__(cls, *args, **kwargs): def __new__(cls, *args, **kwargs):
if not ChromeDriverManager.installed: if not ChromeDriverManager.installed:
ChromeDriverManager(*args, **kwargs).install() ChromeDriverManager(*args, **kwargs).install()
@ -232,10 +233,10 @@ class ChromeDriverManager(object):
@staticmethod @staticmethod
def random_cdc(): def random_cdc():
cdc = random.choices(string.ascii_lowercase, k=26) cdc = random.choices(string.ascii_lowercase, k=26)
cdc[-6: -4] = map(str.upper, cdc[-6: -4]) cdc[-6:-4] = map(str.upper, cdc[-6:-4])
cdc[2] = cdc[0] cdc[2] = cdc[0]
cdc[3] = '_' cdc[3] = "_"
return ''.join(cdc).encode() return "".join(cdc).encode()
def patch_binary(self): def patch_binary(self):
""" """

View File

@ -76,8 +76,10 @@ def find_chrome_executable():
for item in os.environ.get("PATH").split(os.pathsep): for item in os.environ.get("PATH").split(os.pathsep):
for subitem in ("google-chrome", "chromium", "chromium-browser"): for subitem in ("google-chrome", "chromium", "chromium-browser"):
candidates.add(os.sep.join((item, subitem))) candidates.add(os.sep.join((item, subitem)))
if 'darwin' in sys.platform: if "darwin" in sys.platform:
candidates.update(["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"]) candidates.update(
["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"]
)
else: else:
for item in map( for item in map(
os.environ.get, ("PROGRAMFILES", "PROGRAMFILES(X86)", "LOCALAPPDATA") os.environ.get, ("PROGRAMFILES", "PROGRAMFILES(X86)", "LOCALAPPDATA")
@ -95,7 +97,8 @@ def find_chrome_executable():
class Chrome(selenium.webdriver.chrome.webdriver.WebDriver): class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
__doc__ = """\ __doc__ = (
"""\
-------------------------------------------------------------------------- --------------------------------------------------------------------------
NOTE: NOTE:
Chrome has everything included to work out of the box. Chrome has everything included to work out of the box.
@ -103,7 +106,9 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
any customizations MAY lead to trigger bot migitation systems. any customizations MAY lead to trigger bot migitation systems.
-------------------------------------------------------------------------- --------------------------------------------------------------------------
""" + selenium.webdriver.remote.webdriver.WebDriver.__doc__ """
+ selenium.webdriver.remote.webdriver.WebDriver.__doc__
)
_instances = set() _instances = set()
@ -315,7 +320,7 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
def __exit__(self, exc_type, exc_val, exc_tb): def __exit__(self, exc_type, exc_val, exc_tb):
self.service.stop() self.service.stop()
#threading.Timer(self.factor, self.service.start).start() # threading.Timer(self.factor, self.service.start).start()
time.sleep(self.delay) time.sleep(self.delay)
self.service.start() self.service.start()
@ -327,7 +332,7 @@ class Patcher(object):
url_repo = "https://chromedriver.storage.googleapis.com" url_repo = "https://chromedriver.storage.googleapis.com"
def __init__( def __init__(
self, target_path="./chromedriver", force=False, version_main: int = 0 self, target_path="./chromedriver", force=False, version_main: int = 0
): ):
if not IS_POSIX: if not IS_POSIX:
if not target_path[-4:] == ".exe": if not target_path[-4:] == ".exe":
@ -374,14 +379,10 @@ class Patcher(object):
:return: version string :return: version string
:rtype: LooseVersion :rtype: LooseVersion
""" """
path = ( path = "/latest_release"
"/" if self.version_main:
+ ( path += f"_{self.version_main}"
"latest_release" path = path.upper()
if not self.version_main
else f"latest_release_{self.version_main}"
).upper()
)
logger.debug("getting release number from %s" % path) logger.debug("getting release number from %s" % path)
return LooseVersion(urlopen(self.url_repo + path).read().decode()) return LooseVersion(urlopen(self.url_repo + path).read().decode())
@ -414,7 +415,7 @@ class Patcher(object):
os.makedirs(os.path.dirname(self.target_path), mode=0o755) os.makedirs(os.path.dirname(self.target_path), mode=0o755)
except OSError: except OSError:
pass pass
with zipfile.ZipFile(self.zipname, mode='r') as zf: with zipfile.ZipFile(self.zipname, mode="r") as zf:
zf.extract(self.exename) zf.extract(self.exename)
os.rename(self.exename, self.target_path) os.rename(self.exename, self.target_path)
os.remove(self.zipname) os.remove(self.zipname)
@ -498,8 +499,5 @@ class Patcher(object):
return linect return linect
class ChromeOptions(selenium.webdriver.chrome.webdriver.Options): class ChromeOptions(selenium.webdriver.chrome.webdriver.Options):
pass pass