32 lines
1.2 KiB
Python
32 lines
1.2 KiB
Python
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()
|