Как добавить расширение в браузер с помощью arsenic?

Рейтинг: 0Ответов: 1Опубликовано: 24.04.2023

Этот код работает отлично:

import asyncio

from arsenic import services, browsers, start_session, stop_session

service = services.Chromedriver(binary='./chromedriver')
browser = browsers.Chrome(**{"goog:chromeOptions": {
    'args': ['--headless', '--disable-gpu'],
}})


async def start():

    session = await start_session(service, browser)
    await session.get('https://google.com')
    await stop_session(session)


asyncio.run(start())

Добавляю расширение:

browser = browsers.Chrome(**{"goog:chromeOptions": {
    'args': ['--headless', '--disable-gpu'],
    "extensions": ["ifibfemgeogfhoebkmokieepdoobkbpo.crx"]
}})

Возникает ошибка:

1 введите сюда описание изображения

Подскажите как правильно добавить расширение?

Ответы

▲ 1

Итак, ниже предствалена функция, которая кодирует расширение нужным образом. При создании экземпляра браузера, ключу extensions нужно передать список из закодированных путей для всех расширений.

import base64
from typing import BinaryIO


def encode_extension_path(path:str) -> str:

    def _encode(file_data: BinaryIO) -> str:
        return base64.b64encode(file_data.read()).decode("utf-8")

    with open(path, "rb") as f:
        return _encode(f)