Self Control

SelfControl 證明的理念。
為 iPhone 的限制重新打造。

SelfControl 之所以是 Mac 上的經典,正是因為它的封鎖效果能撐過重新啟動、撐過刪除應用程式,甚至撐過你改變心意的那一刻。沒有任何應用程式能在 iPhone 上複製這個技巧,而且背後有一個明確且無法迴避的原因。

先給你一個誠實的答案:iPhone 上沒有真正的 SelfControl,而且也不可能有。 SelfControl 僅限 Mac,於 2012 年發布,並以 GPL 授權。Apple 的 App Store 完全不允許 GPL 授權的程式碼,所以在 iOS 本身的限制介入之前,官方移植版本就已經被排除了。

即使沒有授權問題,這個技術機制也無法順利轉移。 SelfControl 的運作方式是直接修改 Mac 系統層級的 hosts 檔案,而 iOS 的沙盒機制正是為了防止任何第三方應用程式這麼做而設計的。

SelfControl 在 Mac 上實際的運作方式

你設定一個計時器和一份封鎖清單,然後它會修改你的 hosts 檔案。 一旦開始執行,清單上的網站就會在網路層級變得無法存取,時間從一分鐘到完整的 24 小時。

計時器本身無法提前停止,這是刻意設計的。 重新啟動 Mac 不會清除它,刪除應用程式也不會。應用程式內沒有任何按鈕、設定或密碼可以在時間結束前終止它。

它能抵抗隨意的解除嘗試,但並非字面意義上的無法破解。 一個已知且有文件記載的限制是,具備技術能力的使用者可以手動直接編輯 hosts 檔案來恢復存取,這顯示計時器本身無法透過應用程式破解,即使底層機制存在一個邊緣案例。

為什麼沒有真正的 iOS 移植版本

授權問題首先排除了可能性。 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 的定位

相同的理念,不同的機制。 Fella 無法複製 SelfControl 不怕重新啟動的 hosts 檔案鎖定,沒有任何 iOS 應用程式能做到,但它移除了 SelfControl 所移除的同一件事:一個輕鬆在當下解除封鎖的方法。

沒有暫停、沒有貪睡、應用程式內沒有切換開關。 所選的應用程式每天預設保持封鎖狀態,而取代單一固定計時器的,是每次使用階段提供一次 5 分鐘的緊急解鎖,時間到會自動重新鎖上。

SelfControl for iPhone 常見問題

沒有直接的移植版本。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 分鐘的解鎖。