Mac / Python使用Selenium爬蟲無法開啟chromedriver

Mac / Python使用Selenium爬蟲無法開啟chromedriver

最近更新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)

執行步驟:

  1. 開啟終端機(terminal)
  2. 移動到該程式的目錄下,如我的chromedriver放在下面的目錄下
$ cd /usr/local/bin
  1. 執行下列任一個指令
  • 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)限制。

設定的方法如下:

  1. 開啟系統偏好設定(System Preferences)安全性與隱私(Security & Privacy)
  2. 點擊隱私(Privacy)選項
  3. 找到開發者工具(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/