from DrissionPage import Chromium, ChromiumOptions from loguru import logger from .ua import random_ua from ..config.config import AppCtx class DPEngine: """DrissionPage 引擎""" def __init__(self, is_wap: bool = False, no_img: bool = True): chrome_opts = ChromiumOptions() chrome_opts.mute(True) # 静音 logger.debug(f"{AppCtx.g_app_config.headless_chrome=}") chrome_opts.headless(AppCtx.g_app_config.headless_chrome) # 无头模式 chrome_opts.no_imgs(no_img) # 不加载图片 chrome_opts.set_argument("--disable-gpu") # 禁用GPU chrome_opts.set_argument('--ignore-certificate-errors') # 忽略证书错误 chrome_opts.set_argument('--start-maximized') # 最大化启动 chrome_opts.set_argument(f'--user-agent={random_ua(is_wap)}') # 设置 UA # chrome_opts.incognito(True) chrome_opts.auto_port(True) # 设置代理 if AppCtx.g_app_config.chrome.proxy: chrome_opts.set_argument('--proxy-server', AppCtx.g_app_config.chrome.proxy) # 创建浏览器对象 self.browser = Chromium(addr_or_opts=chrome_opts) def close(self): self.browser.quit()