tempora/driver/driver_creator.py

60 lines
2.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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):
'''
Отключает JS
Каждый запрос получает `сырой` html
'''
# 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=132,
# 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