Self Control
SelfControl 證明的理念。
為 iPhone 的限制重新打造。
SelfControl 之所以是 Mac 上的經典,正是因為它的封鎖效果能撐過重新啟動、撐過刪除應用程式,甚至撐過你改變心意的那一刻。沒有任何應用程式能在 iPhone 上複製這個技巧,而且背後有一個明確且無法迴避的原因。
Self Control
SelfControl 之所以是 Mac 上的經典,正是因為它的封鎖效果能撐過重新啟動、撐過刪除應用程式,甚至撐過你改變心意的那一刻。沒有任何應用程式能在 iPhone 上複製這個技巧,而且背後有一個明確且無法迴避的原因。
先給你一個誠實的答案:iPhone 上沒有真正的 SelfControl,而且也不可能有。 SelfControl 僅限 Mac,於 2012 年發布,並以 GPL 授權。Apple 的 App Store 完全不允許 GPL 授權的程式碼,所以在 iOS 本身的限制介入之前,官方移植版本就已經被排除了。
即使沒有授權問題,這個技術機制也無法順利轉移。 SelfControl 的運作方式是直接修改 Mac 系統層級的 hosts 檔案,而 iOS 的沙盒機制正是為了防止任何第三方應用程式這麼做而設計的。
你設定一個計時器和一份封鎖清單,然後它會修改你的 hosts 檔案。 一旦開始執行,清單上的網站就會在網路層級變得無法存取,時間從一分鐘到完整的 24 小時。
計時器本身無法提前停止,這是刻意設計的。 重新啟動 Mac 不會清除它,刪除應用程式也不會。應用程式內沒有任何按鈕、設定或密碼可以在時間結束前終止它。
它能抵抗隨意的解除嘗試,但並非字面意義上的無法破解。 一個已知且有文件記載的限制是,具備技術能力的使用者可以手動直接編輯 hosts 檔案來恢復存取,這顯示計時器本身無法透過應用程式破解,即使底層機制存在一個邊緣案例。
授權問題首先排除了可能性。 SelfControl 是以 GPL 授權的開源軟體,而 Apple 的 App Store 指南不允許 GPL 程式碼,這與任何技術問題無關。
iOS 的沙盒機制無論如何都排除了這個運作方式。 每個 iOS 應用程式都在沙盒中執行,這 prevents 它修改系統檔案或讀取其他應用程式的資料,而這正是 SelfControl 的 hosts 檔案技巧所依賴的。
Apple 提供給開發者的 Screen Time API 刻意受到限制。 基於 FamilyControls、ManagedSettings 和 DeviceActivity 建構的第三方封鎖器,是在受到嚴格限制、唯讀的擴充功能中執行,且沒有持續的網路存取權限。應用程式甚至不會被告知你選擇封鎖了哪些特定應用程式,因為這些資訊為了隱私而隱藏在加密代幣後面。
有一個在實務上最重要的具體漏洞。 即使是基於 Screen Time、設有應用程式內密碼的封鎖器,通常也可以透過 iOS「設定」中的「允許的 App 與網站」開關來停用,而 Apple 內建的 Screen Time 則沒有同樣的漏洞,因為它可以用自己的獨立密碼鎖住。
| 工具 | 最接近 SelfControl 的模式 | 需要注意的地方 |
|---|---|---|
| Freedom | 無法提前停止的鎖定模式時段 | 需要手動開始一個時段,而非永久性的預設狀態 |
| One Sec / ScreenZen | 開啟前增加阻力,而非強制封鎖 | 不會移除存取權限,只是增加一個暫停 |
| Forest | 以時段為基礎的承諾機制 | 圍繞計時時段設計,而非全天候封鎖 |
| Fella | 預設封鎖,應用程式內無切換開關 | 與所有 iOS 封鎖器一樣,仍使用 Apple 的 Screen Time 框架 |
相同的理念,不同的機制。 Fella 無法複製 SelfControl 不怕重新啟動的 hosts 檔案鎖定,沒有任何 iOS 應用程式能做到,但它移除了 SelfControl 所移除的同一件事:一個輕鬆在當下解除封鎖的方法。
沒有暫停、沒有貪睡、應用程式內沒有切換開關。 所選的應用程式每天預設保持封鎖狀態,而取代單一固定計時器的,是每次使用階段提供一次 5 分鐘的緊急解鎖,時間到會自動重新鎖上。
沒有直接的移植版本。SelfControl 是僅限 Mac、以 GPL 授權的應用程式,而 Apple 的 App Store 不允許 GPL 授權的程式碼,因此無論 iOS 的技術限制為何,官方移植版本都不可能存在。
SelfControl 透過修改 Mac 系統層級的 hosts 檔案來進行封鎖,而 iOS 的沙盒機制不允許任何第三方應用程式這麼做。iOS 應用程式被限制不得修改系統檔案或其他應用程式的資料,而這正是 SelfControl 所依賴的運作機制。
你設定一個計時器和一份網站或郵件伺服器的封鎖清單,SelfControl 會修改 Mac 的 hosts 檔案來封鎖它們。一旦開始執行,封鎖效果在重新啟動甚至刪除應用程式後依然存在,而且沒有內建方法可以提前停止。
計時器本身無法透過應用程式提前停止。然而,一個已知的限制是,具備技術能力的使用者仍然可以手動直接編輯 hosts 檔案來恢復存取,所以它並非絕對無法破解,只是能抵抗一般隨意的解除嘗試。
社群推薦通常指向 Freedom 作為最接近的付費替代方案,而 One Sec、ClearSpace、Forest 和 ScreenZen 則被建議為免費選項,此外還有像 Block Distracting Websites 這類專門以 SelfControl 為靈感打造的 iOS 工具。
不完全能。每個 iPhone 應用程式封鎖器都是基於 Apple 的 Screen Time 框架運作,而非系統層級的 hosts 檔案修改,即使是基於 Screen Time 的封鎖器,也可以透過「設定」中的「允許的 App 與網站」開關來停用,這與 SelfControl 在 Mac 上不怕重新啟動、不怕刪除的鎖定機制不同。
Fella 秉持相同的核心概念,即移除當下想解除封鎖的衝動,而非採用完全相同的機制。所選的應用程式預設保持封鎖狀態,體驗中沒有切換開關,每次使用階段提供一次 5 分鐘的緊急解鎖,取代 SelfControl 的固定計時器,改為較小額度的每日配額。
與 Mac 上的 SelfControl 不同,刪除 iOS 應用程式會連同其限制一起移除,因為 iOS 不支援像 Mac hosts 檔案修改那樣的防刪除鎖定。Fella 的嚴格性來自於應用程式內沒有覆寫選項,而非抵抗刪除。
Fella 的核心是封鎖應用程式,而非個別網站。如果透過瀏覽器存取被封鎖應用程式的網站也是這個習慣的一部分,則需要另外設定限制。
Fella 封鎖那些讓你分心的 App,
每次會話提供一次 5 分鐘的解鎖。