Ошибка «файл 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.
- 🚫 Не используйте драйверы со сторонних сайтов-агрегаторов и файлообменников.
Если файл получен из официального источника, можно переходить к снятию блокировки. Если происхождение вызывает сомнения — удалите файл и загрузите его заново.
Способ 1: разрешить запуск через «Системные настройки»
Самый простой метод не требует терминала. После появления диалога с ошибкой нажмите «Отмена», затем откройте Системные настройки → Конфиденциальность и безопасность. В нижней части раздела появится строка о заблокированном приложении chromedriver с кнопкой «Подтвердить вход» или «Всё равно открыть» — точная формулировка зависит от версии macOS.
Нажмите эту кнопку и повторите запуск драйвера. Система ещё раз покажет предупреждение, но уже с возможностью подтвердить открытие. После однократного подтверждения файл будет запускаться без диалогов.
⚠️ Внимание: пункт о разблокировке приложения в разделе «Конфиденциальность и безопасность» отображается ограниченное время после попытки запуска. Если строки нет — запустите chromedriver ещё раз, чтобы диалог появился снова, и сразу проверьте настройки.
Способ 2: снять карантин через терминал
Когда драйвер запускается автоматически из скрипта или через Selenium, графический диалог может не появиться вовсе — процесс просто завершается с ошибкой. В этом случае надёжнее удалить карантинный атрибут вручную. Откройте «Терминал» и выполните команду, указав реальный путь к файлу:
xattr -d com.apple.quarantine /путь/к/chromedriver
Например, если файл лежит в папке «Загрузки», команда будет выглядеть так:
xattr -d com.apple.quarantine ~/Downloads/chromedriver
Если атрибут уже отсутствует, команда вернёт сообщение об ошибке — это нормально и означает, что проблема лежит в другом месте. Проверить наличие атрибута до и после можно командой xattr -l /путь/к/chromedriver.
☑️ Порядок снятия блокировки с chromedriver
Способ 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.