Файл chromedriver невозможно открыть: как обойти проверку Apple на macOS

Ошибка «файл chromedriver невозможно открыть, так как Apple не может проверить его на наличие вредоносного ПО» появляется при первом запуске драйвера ChromeDriver, скачанного с официального сайта и распакованного вручную на macOS. Система безопасности Gatekeeper блокирует исполняемый файл, потому что он загружен из интернета и помечен карантинным атрибутом, а его подпись не проходит полную проверку нотаризации Apple в вашей конфигурации системы.

Проблема типична для разработчиков и тестировщиков, которые настраивают автоматизацию браузера через Selenium: скрипт падает с ошибкой ещё до старта браузера, хотя сам файл скачан с официального источника. Разберём, почему macOS блокирует драйвер и как безопасно снять ограничение — от простого графического способа до команды в терминале.

Почему macOS блокирует chromedriver

Операционная система macOS помечает каждый файл, загруженный из сети, специальным расширенным атрибутом com.apple.quarantine. При первой попытке запуска такого файла Gatekeeper проверяет цифровую подпись разработчика и факт нотаризации в Apple. Если проверка не проходит — пользователь видит диалог с предупреждением и кнопкой отмены, без варианта «Открыть».

Драйвер ChromeDriver распространяется как архив с «голым» бинарным файлом, а не как установочный пакет. При ручной распаковке и запуске из терминала или через Selenium-библиотеку система трактует его как потенциально опасный объект. Важно понимать: само появление предупреждения не означает, что файл заражён — оно лишь говорит, что механизм проверки не смог подтвердить его безопасность.

Как проверить, что файл безопасен

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

  • 🔍 Скачивайте ChromeDriver только с официальных страниц проекта Chrome for Testing или через пакетные менеджеры вроде Homebrew.
  • 🔢 Сверьте контрольную сумму файла с опубликованной на странице загрузки, если она там указана.
  • 🧭 Проверьте, что версия драйвера соответствует установленной версии браузера Google Chrome.
  • 🚫 Не используйте драйверы со сторонних сайтов-агрегаторов и файлообменников.

Если файл получен из официального источника, можно переходить к снятию блокировки. Если происхождение вызывает сомнения — удалите файл и загрузите его заново.

📊 Как вы скачивали chromedriver?
С официального сайта Chrome for Testing
Через Homebrew
Вместе с библиотекой (webdriver-manager)
Со стороннего сайта

Способ 1: разрешить запуск через «Системные настройки»

Самый простой метод не требует терминала. После появления диалога с ошибкой нажмите «Отмена», затем откройте Системные настройки → Конфиденциальность и безопасность. В нижней части раздела появится строка о заблокированном приложении chromedriver с кнопкой «Подтвердить вход» или «Всё равно открыть» — точная формулировка зависит от версии macOS.

Нажмите эту кнопку и повторите запуск драйвера. Система ещё раз покажет предупреждение, но уже с возможностью подтвердить открытие. После однократного подтверждения файл будет запускаться без диалогов.

⚠️ Внимание: пункт о разблокировке приложения в разделе «Конфиденциальность и безопасность» отображается ограниченное время после попытки запуска. Если строки нет — запустите chromedriver ещё раз, чтобы диалог появился снова, и сразу проверьте настройки.

Способ 2: снять карантин через терминал

Когда драйвер запускается автоматически из скрипта или через Selenium, графический диалог может не появиться вовсе — процесс просто завершается с ошибкой. В этом случае надёжнее удалить карантинный атрибут вручную. Откройте «Терминал» и выполните команду, указав реальный путь к файлу:

xattr -d com.apple.quarantine /путь/к/chromedriver

Например, если файл лежит в папке «Загрузки», команда будет выглядеть так:

xattr -d com.apple.quarantine ~/Downloads/chromedriver

Если атрибут уже отсутствует, команда вернёт сообщение об ошибке — это нормально и означает, что проблема лежит в другом месте. Проверить наличие атрибута до и после можно командой xattr -l /путь/к/chromedriver.

☑️ Порядок снятия блокировки с chromedriver

Выполнено: 0 / 5

Способ 3: установка через Homebrew

Альтернативный путь — установить драйвер через пакетный менеджер Homebrew. Пакеты, установленные этим способом, как правило, не получают карантинную пометку, и конфликт с Gatekeeper не возникает. Команда установки:

brew install chromedriver

После установки убедитесь, что система находит драйвер: выполните chromedriver --version. Если команда возвращает номер версии — настройка завершена. Если же и здесь появляется предупреждение, примените к установленному файлу способ с xattr из предыдущего раздела.

Сравнение способов решения

СпособСложностьКогда подходит
Через «Конфиденциальность и безопасность»НизкаяРучной запуск, диалог отображается
Команда xattrСредняяЗапуск из скриптов и Selenium
Установка через HomebrewНизкаяЧистая настройка с нуля
Явный путь в кодеСредняяДрайвер разблокирован, но не найден

Выбор зависит от сценария использования. Для разовой настройки достаточно графического способа, для автоматизированных тестов стабильнее всего связка Homebrew плюс явное указание пути к драйверу в коде.

Чего делать не стоит

В сети встречаются советы полностью отключить Gatekeeper командой sudo spctl --master-disable. Такое решение снимает защиту для всех приложений системы, а не только для одного драйвера, и заметно снижает безопасность macOS. Точечное снятие карантина с конкретного файла решает задачу без глобальных последствий.

⚠️ Внимание: не отключайте Gatekeeper целиком и не добавляйте широкие исключения в антивирус ради одного файла. Обход защиты должен быть точечным — только для проверенного chromedriver.
  • ⛔ Не отключайте Gatekeeper глобально через spctl.
  • ⛔ Не запускайте драйвер с правами sudo без необходимости.
  • ⛔ Не скачивайте «пропатченные» версии драйвера со сторонних ресурсов.
Почему ошибка возвращается после обновления Chrome

Драйвер и браузер обновляются независимо. После обновления Chrome старая версия chromedriver может перестать подходить, а вновь скачанный файл снова получит карантинный атрибут — процедуру разблокировки придётся повторить для нового файла.

Часто задаваемые вопросы

Означает ли предупреждение, что chromedriver содержит вирус?

Нет. Сообщение говорит лишь о том, что Gatekeeper не смог завершить проверку файла. Драйвер, скачанный с официального источника, безопасен — блокировка связана с карантинным атрибутом, который macOS ставит всем загрузкам из интернета.

Команда xattr выдаёт ошибку «No such xattr». Что это значит?

Это значит, что карантинного атрибута у файла уже нет — блокировка снята или причина ошибки в другом. Проверьте права на исполнение командой chmod +x /путь/к/chromedriver и повторите запуск.

Нужно ли повторять разблокировку после каждого обновления драйвера?

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

Почему Selenium выдаёт ошибку, хотя драйвер запускается из терминала?

Вероятная причина — библиотека обращается к другой копии драйвера или не находит его в PATH. Укажите путь явно в коде через параметр Service или executable_path и убедитесь, что разблокирован именно тот файл, который использует скрипт.

Работают ли эти способы на Mac с чипом Apple Silicon?

Да, механизм Gatekeeper и карантинных атрибутов одинаков на Intel и Apple Silicon. Дополнительно убедитесь, что скачана версия драйвера для нужной архитектуры — для современных Mac это сборка mac-arm64.