最近更新MacOS之後發現正在開發的Python爬蟲程式無法啟動chromedriver了,系統出現了下面這段警告訊息:
“chromedriver” cannot be opened because it is from an unidentified developer.
macOS cannot verify that this app is free from malware.
中文的介面應該會顯示:
無法打開「chromedriver」,因為它來自未識別的開發者。
macOS無法驗證此App未包含惡意軟體。
稍微Google一下發現好像很多人都有遇到類似的狀況,大概都是因為新版的MacOS對安全性的要求變得更高,導致許多沒有被認證的程式預設都被禁止執行,有些從網路上下載的程式也有可能遇到這種狀況。
解決的辦法有兩種:
▍取消程式的隔離註記(quarantine flag)
執行步驟:
- 開啟終端機(terminal)
- 移動到該程式的目錄下,如我的chromedriver放在下面的目錄下
$ cd /usr/local/bin
- 執行下列任一個指令
- xattr 編輯檔案目錄的附加屬性
這個系統指令可以編輯檔案目錄的附加屬性,例如系統目錄屬性(com.apple.FinderInfo)或是這邊要講的隔離屬性(com.apple.quarantine)。xattr指令的語法是:xattr <options> attributes <name of application>
在chromedirver所在的目錄下,執行xattr指令使用 -d 移除chromedriver的隔離屬性(com.apple.quarantine):
$ xattr -d com.apple.quarantine chromedriver
- spctl 編輯程式的安全性權限標記
通常不會是這個原因造成chromedriver無法開啟,不過偶爾還是會遇到類似的狀況。出於安全性的理由,對於一些無法辨識來源的程式系統可能會禁止執行,使用spctl指令可以開啟”任何來源“的程式執行權限。spctl指令的語法是:spctl <option> <assessment label> <label name> <name of application>
$ spctl —add —label ‘Approved’ chromedriver
▍使用開發者工作(Developer Tools)
第二種方法是使用開發者工作(Developers Tools)。如果你有安裝X-Code的話,可以將chromediver加入系統的開發者工具清單中,開發者工具會忽略隔離標記(qurantine flag)和多數的安全性存取權限(Security Assessment)限制。
設定的方法如下:
- 開啟系統偏好設定(System Preferences)的安全性與隱私(Security & Privacy)
- 點擊隱私(Privacy)選項
- 找到開發者工具(Developer Tools)並將終端機(Terminal)打勾
References:
MacOS Catalina(v 10.15.3): Error: “chromedriver” cannot be opened because the developer cannot be verified. Unable to launch the chrome browser | stckoverflow
https://stackoverflow.com/questions/60362018/macos-catalinav-10-15-3-error-chromedriver-cannot-be-opened-because-the-de/64019725
For those upgrading to macOS Catalina | docwhat’s blog
https://docwhat.org/upgrading-to-catalina
[MAC] 移除蘋果電腦的檔案附加屬性 | 酷思小魏.愛學習
https://blog.coolsea.net/archives/475
下載的Application在Mac OS X 10.8無法開啟 | 鳥毅的BLOG
https://blog.tenyi.com/2013/05/applicationmac-os-x-108.html
How to manage OS X Gatekeeper from the command line | CNET
https://www.cnet.com/news/how-to-manage-os-x-gatekeeper-from-the-command-line
xattr | SS64.com
https://ss64.com/osx/xattr.html
spctl | Manpagez
https://www.manpagez.com/man/8/spctl/
Copyright announcement:
the featured image: Photo by FLY:D on Unsplash