Как добавить расширение в браузер с помощью arsenic?
Этот код работает отлично:
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 шт):
Автор решения: Max
→ Ссылка
Итак, ниже предствалена функция, которая кодирует расширение нужным образом. При создании экземпляра браузера, ключу 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)

