56 lines
2.1 KiB
Python
56 lines
2.1 KiB
Python
import random
|
||
from driver.chrome_proxy import ChromeProxy
|
||
from urllib.parse import urlparse
|
||
import undetected_chromedriver as uc
|
||
import logging
|
||
|
||
|
||
# В patcher.py библиотеки undetected_chromedriver
|
||
# import secrets
|
||
# prefix = 'undetected' ----> prefix = secrets.token_hex(8)
|
||
# Использование случайного токена в качестве префикса гарантирует,
|
||
# что каждый процесс будет иметь свою уникальную директорию,
|
||
# даже если несколько процессов работают одновременн
|
||
|
||
class DriverCreator:
|
||
def __init__(self, proxy_list):
|
||
self.proxy_list = proxy_list
|
||
|
||
def _switch_proxy(self):
|
||
proxy = random.choice(self.proxy_list)
|
||
parsed_proxy = urlparse(proxy)
|
||
return ChromeProxy(
|
||
parsed_proxy.hostname,
|
||
parsed_proxy.port,
|
||
parsed_proxy.username,
|
||
parsed_proxy.password
|
||
).create_extension()
|
||
|
||
def get_driver(self):
|
||
# extension_path = self._switch_proxy()
|
||
|
||
options = uc.ChromeOptions()
|
||
# options.add_argument(f"--load-extension={extension_path}") # временно
|
||
# options.add_argument("--headless=new")
|
||
options.add_argument("--disable-gpu")
|
||
options.add_argument("--disable-dev-shm-usage")
|
||
options.add_argument("--no-sandbox")
|
||
# options.add_argument("--disable-webgl")
|
||
# options.add_argument("--disable-software-rasterizer")
|
||
# options.add_argument("--disable-extensions")
|
||
|
||
# prefs = {"profile.managed_default_content_settings.javascript": 2}
|
||
# options.experimental_options["prefs"] = prefs
|
||
|
||
driver = uc.Chrome(
|
||
options=options,
|
||
version_main=135,
|
||
# user_multi_procs=True
|
||
)
|
||
|
||
# driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
|
||
# "source": "Object.defineProperty(navigator, 'javaEnabled', {get: () => false});"
|
||
# })
|
||
# driver.execute_cdp_cmd("Emulation.setScriptExecutionDisabled", {"value": True})
|
||
|
||
return driver |