Python

Как запустить расширение в браузере через Python: Selenium, Chrome profile и ограничения

Python сам по себе не устанавливает расширения в уже открытый Chrome. Обычно задача решается так: Python запускает новый экземпляр браузера через Selenium, а Selenium передает Chrome расширение или готовый профиль пользователя

Самая понятная схема выглядит так

Python script -> Selenium WebDriver -> Chrome -> расширение

Если вам нужно просто скачать HTML страницы, расширение не нужно. Достаточно requests или requests-html. Расширения нужны тогда, когда вы хотите работать именно с браузером: вкладками, авторизацией, UI, cookies, devtools-поведением или расширением вроде adblock, proxy manager, crypto wallet, помощника для тестирования

Вариант 1: запустить Chrome с файлом расширения CRX

Если у вас есть файл расширения .crx, его можно передать в Chrome options

Сначала установите Selenium

python -m pip install selenium

Пример кода

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_extension("my_extension.crx")

driver = webdriver.Chrome(options=options)
driver.get("https://example.com")

input("Нажмите Enter, чтобы закрыть браузер")
driver.quit()

Файл my_extension.crx должен лежать рядом с вашим скриптом или путь к нему нужно указать полностью

options.add_extension("/Users/name/extensions/my_extension.crx")

На Windows путь может выглядеть так

options.add_extension(r"C:\Users\Name\extensions\my_extension.crx")

Буква r перед строкой нужна, чтобы обратные слэши не воспринимались как спецсимволы

Вариант 2: запустить Chrome с готовым профилем

Если расширение уже установлено в вашем Chrome-профиле, можно попробовать запустить Selenium с пользовательским профилем

Пример для отдельного тестового профиля

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--user-data-dir=/Users/name/selenium-chrome-profile")

driver = webdriver.Chrome(options=options)
driver.get("https://example.com")

input("Проверьте расширение и нажмите Enter")
driver.quit()

Важно: лучше использовать отдельный профиль для автоматизации, а не основной профиль, где вы постоянно работаете. Так безопаснее и меньше шансов получить конфликт «profile is already in use»

Если Chrome уже открыт с этим профилем, Selenium может не запуститься. Закройте Chrome или используйте другой user-data-dir

Вариант 3: распакованное расширение

В разработке расширения часто лежат не в .crx, а в папке с manifest.json

Для такого случая в Chrome можно передать аргумент --load-extension

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

extension_path = "/Users/name/projects/my-extension"

options = Options()
options.add_argument(f"--load-extension={extension_path}")

driver = webdriver.Chrome(options=options)
driver.get("chrome://extensions/")

input("Нажмите Enter, чтобы закрыть браузер")
driver.quit()

Если расширение не появилось, проверьте, что в папке действительно есть manifest.json

Почему headless-режим может мешать

Многие расширения плохо работают или вообще не работают в headless-режиме, потому что им нужен полноценный интерфейс браузера

Для проверки сначала запускайте обычное окно Chrome без --headless

Так вы увидите, загрузилось ли расширение, открылось ли окно и нет ли ошибки в интерфейсе Chrome

Как понять, что расширение запустилось

Проверьте по шагам

  1. Открылось новое окно Chrome
  2. На странице chrome://extensions/ видно расширение
  3. В консоли нет ошибки о неправильном пути
  4. Профиль Chrome не заблокирован другим процессом
  5. Версия Chrome и Selenium совместимы

Для учебной проверки можно открыть страницу расширений

driver.get("chrome://extensions/")

Но взаимодействовать со служебными страницами Chrome через Selenium может быть ограничено. Это нормально: задача здесь не управлять страницей расширений, а проверить, что браузер стартует с нужной конфигурацией

Частые ошибки

selenium.common.exceptions.SessionNotCreatedException

Часто означает проблему с версией Chrome, драйвером или профилем

Обновите Selenium

python -m pip install --upgrade selenium

Проверьте, что Chrome установлен и запускается вручную

Файл расширения не найден

Путь указан неправильно

Проверьте путь через Python

from pathlib import Path

path = Path("my_extension.crx")
print(path.resolve())
print(path.exists())

Если False, Python смотрит не туда. Укажите полный путь или положите файл рядом со скриптом

Chrome пишет, что профиль уже используется

Вы пытаетесь открыть один и тот же профиль двумя процессами

Закройте Chrome или задайте отдельную папку профиля

options.add_argument("--user-data-dir=/tmp/selenium-profile-test")

Расширение есть в обычном Chrome, но Selenium его не видит

Selenium запускает отдельный браузерный профиль. Ваши обычные расширения туда автоматически не переносятся

Используйте .crx, --load-extension или отдельный user-data-dir

Чего Python не сможет сделать напрямую

Python не может «вклеить» расширение в уже открытую вкладку обычного Chrome так, как будто пользователь нажал кнопку в браузере

Python может

  • запустить новый управляемый браузер
  • открыть страницу
  • кликать по элементам
  • передать Chrome настройки запуска
  • использовать профиль или расширение при старте

Python не должен

  • обходить ограничения сайтов
  • перехватывать чужие учетные данные
  • автоматизировать действия, которые нарушают правила сервиса

Это не моральная вставка ради галочки, а практическая вещь: такие сценарии быстро ломаются, блокируются и создают проблемы с аккаунтами

Мини-практика

Для первого теста не берите сложное расширение. Создайте отдельный профиль и просто запустите Chrome через Selenium

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--user-data-dir=selenium-profile")

driver = webdriver.Chrome(options=options)
driver.get("https://www.python.org/")

input("Браузер открыт. Нажмите Enter для закрытия")
driver.quit()

Если это работает, переходите к расширению. Так проще понять, где проблема: в Selenium, профиле или самом расширении

Что почитать дальше по Python

Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x