我最早接觸 Surge 是在 2015 年 iOS App Store 剛上架就第一批入手了~
當時我人在中國,翻牆就跟吃飯、喝水、睡覺一樣是每天都需要的
記得當時蘋果 iOS 8 剛剛開放了 NetworkExtension framework
Surge 橫空出世最早支援 NetworkExtension,多樣且自由的網路策略非常強大,也是當時最佳 iOS 翻牆工具
隨著時間也有其他開發者也漸漸投入研究蘋果這種系統等級的網路框架,App Store 上漸漸多了許多選擇~
像是小火箭(Shadowrocket)、小氣球(Loon)或者圈叉(Quantumult X),都是同類相當不錯的競品
其中又以圈叉特別厲害,最早開始支援 Scripting 的功能
後來 2016 年時候我因為搬回台灣,台灣網路無需翻牆,所以瞬間就沒有繼續用下去的動力了。。。
Surge 作者在去年的時候推出一個密碼管理工具「Elpass」
所以從去年那時候開始我又會三不五時看到作者在 Surge 開發的相關進度
最近會又開始用回 Surge 是因為發現作者加入一系列強大功能
如支援 MitM、Scripting、專屬 Snell 協議與快速設定的 Module 功能。。等等
玩法已經不僅僅是翻牆代理工具而已,已經是一個功能強大完整的「網路工具」了~
強大的 iOS 平台網路工具一下吸引許多寫 Script 的大佬們投入研究,像是有針對 Netflix 的 Script
在非越獄情況下可以在官方 Netflix App 影片介紹頁,直接顯示 imdb 與 douban 的第三方評分分數
類似像這種強大 Script 都有人分享在 Github 上面,沒事去多搜尋一下,你會發現新大陸
~
購買 Surge 前你需要了解的「功能訂閱」
不像傳統軟體「單版本買斷」的方式,Surge for iOS 採用了一種「功能訂閱」的授權方式
第一次購買解鎖門檻是 49.99 美金(可裝在三台設備上)
購買後一年內所有新增的功能你都會自動解鎖,並可以終身使用
Surge for iOS 以後也不會推出 v5 v6 v7 v8 之類的大版本升級,會一直維持在目前基礎上持續更新並加新功能
也就是說你解鎖過的功能都可以一直使用下去,也能持續收到作者第一時間的更新或者增強
包含了未來 iOS 14 或者 iOS 15 以上的系統適應、安全穩定性補強之類的
所以你也不用擔心你今天購買的 Surge 一年訂閱期到期或者 iOS 14 15 蘋果大改系統而不能繼續使用下去
而一年訂閱期後,你原先已經解鎖的功能,就算你不續訂還是能繼續用下去
唯獨訂閱期過後,作者才新增進去的新功能,你將會無法使用,想要使用新功能的話
續約一年只有 14.99 美金而已,同樣在一年內作者所有新增的功能你也會自動解鎖終身使用
好像很難懂?另外舉個例子好了。。。
你今天買了一套 PS4 遊戲 49.99 美金裡面還包含了一年的季票,一年內除了遊戲本體可以無限終身玩以外
一年內所有開發商新增的 DLC 你都可以免費解鎖,一旦解鎖同樣也是無限終身暢玩~
假設一年內開發商新增了 DLC 1 ~ 3,那麼本體跟 DLC 1 ~ 3 你就可以無限玩,沒有時間限制
一年後廠商新增的 DLC 4 你不滿意,你也可以選擇跳過不買單
但不會影響到你原先遊戲本體跟之前一年解鎖的 DLC 1~ 3
一直到廠商某天推出到 DLC 8,你覺得好強好想玩!你可以選擇再購買一年季票 14.99 美金
購買後,你中間錯過的所有 DLC 將會自動補齊解鎖,也就是你再次入場時,你將會獲得 DLC 4 ~ 8
而且同樣購買後一年內所有新加的 DLC 你也會繼續自動解鎖獲得~
看明白了嗎?這種授權方式對使用者來說真的很讚!
不用擔心自己今天購買的軟體,到了明年或者後年因為開發商推出了跨版本新的 app,拋棄了舊的 app
導致你在新的作業系統無法繼續使用下去了~我真希望有更多 App 能跟進這種授權模式就好了!
Surge for iOS 如何買?
Surge for iOS 目前有兩種購買方式,一種是直接在 App 裡面透過 IAP 購買,一種是透過 Surge 官方網站購買
但台灣的 App Store 因為有稅的關係,直接 IAP 的話會是 1690 台幣
官網購買是 49.99 美金,換算下來大約是 1500 台幣而已,用一張海外回饋高的信用卡,實際數字會更低
而購買成功的話,還可以馬上在官網申請 Testflight 測試版資格
如果是 App Store IAP 的話則要等 90 天
所以推薦直接透過 Surge 官網購買,比較便宜又快速~
Surge for iOS 初步設定
很多人看到上圖這畫面,都不知道要怎麼開始。。。
以下一步步教你簡單初步設定,一直到可以安裝別人寫好的模組(Module)
首先先把「Rewrite」、「MitM」跟「腳本」三個區域的「開關」都打開
如上圖,另外還要打開 Surge 的通知功能,在 Surge app 裡面右下角的「更多」->「通知」->「允許通知」
接下來準備開始配置 MitM 的根證書,按下「配置根證書」的按鈕
Surge 這時候會隨機產生一個 CA 證書,接著要在設備上安裝這個證書
按下「安裝證書」後會跳到 Safari 瀏覽器中下載證書
接著打開 iOS 中的設定,就會看見「已下載描述檔」,點進去
之後就根據系統指示,一步一步安裝起來,安裝過程可能會需要輸入你設備的解鎖密碼
安裝完畢後,再來要信任根證書:設定 > 一般 > 關於本機
此時 MitM 功能的設定就已經全部完成~
再來按下 Surge 右上角的「啓動」按鈕,根據提示加入 iOS 系統 VPN 即可
以上至此,初始的準備動作已經完成,現在已經可以開始去安裝別人已經寫好的 Module 囉!
接下來安裝 Netflix 查看評分的模組,拷貝以下網址:
(拷貝時可能最後會多一個空格,在貼上後要刪掉多餘的空格)
https://kinta.ma/surge/modules/netflix_rating.sgmodule
模組安裝完畢後,Surge 會去抓會用到的 Script 跟調整你的設定,稍等幾秒鐘之後
打開 Netflix app 隨便找一部影片進去看簡介,準備見證奇跡,嘩啦!
想要找更多模組開發出更多暗黑原力
,可以到 Github 找找,快速通道: 戳我
日後要更新模組跟腳本請參考這篇:如何更新 Surge for iOS 裡安裝的各種模組與外部資源腳本?
同場加映:Surge 專屬加密代理 Snell 搭建
Surge 作者另外提供了一個專屬的福利給使用者,閉源的代理服務「Snell」
具有混淆加密、TLS、TCP Fast Open。。等功能
但因為閉源的關係,所以用不用在你,不信任的話可以不要用,或者使用 Trojan-Go 這種開源協議也可以
另外也有人稍微逆向了 Snell 協議,有興趣可以去看看: https://github.com/icpz/snell-server-reversed
Snell Server 安裝跟設定異常的簡單,下面來介紹安裝以及使用方法(適用 Ubuntu & Debian)
# SSH 登入進要安裝 Snell Server 的主機
$ ssh username@serverip
# 更新以及安裝軟體
$ sudo apt update && sudo apt full-upgrade -y
$ sudo apt install wget unzip -y
# 到官網拷貝找新版下載網址 https://github.com/surge-networks/snell/releases
$ wget https://github.com/surge-networks/snell/releases/download/v2.0.3/snell-server-v2.0.3-linux-amd64.zip
# 解壓縮以及給予執行權限
$ unzip snell-server-v2.0.3-linux-amd64.zip
$ chmod +x snell-server
以上就完成準備工作,接下來開始安裝跟設定
$ ./snell-server
此時 Snell 會在你目前目錄寫一個設定檔 snell-server.conf
可以 nano 稍微進去看一下,設定的內容很簡單,只有四行,就是幫你亂數產生一個 PSK 跟使用的 Port
還有 obfs 流量混淆方式,預設是 http,你可以改成 tls
|
|
接著我們把執行檔跟設定檔放到指定的位置,並開啟開機自動啓動 Snell Server
$ sudo mv snell-server /usr/local/bin/
$ sudo mv snell-server.conf /etc/
新建一個開機啓動的 Snell service 設定檔
$ sudo nano /etc/systemd/system/snell.service
拷貝以下內容貼到 snell.service 裡面,退出前記得保存
[Unit]
Description=Snell Proxy Service
After=network.target
[Service]
Type=simple
User=nobody
Group=nogroup
LimitNOFILE=32768
ExecStart=/usr/local/bin/snell-server -c /etc/snell-server.conf
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=snell-server
[Install]
WantedBy=multi-user.target
接著使用以下指令啓動 Service
$ sudo systemctl enable snell.service
$ sudo systemctl start snell.service
# 可以用下面指令檢查啓動的狀態
$ sudo systemctl status snell.service
啓動完畢後,機器上防火牆要設定一下
# Port 號碼請修改成你自己 Snell 設定檔的,勿照抄
$ sudo iptables -I INPUT -p tcp -m tcp --dport 17715 -j ACCEPT
# 裝個 iptables-persistent 套件,讓機器重開機防火牆還維持有效
$ sudo apt install iptables-persistent
如果是家中或者辦公室也別忘記在 Router 上面設定一下 Port Forward
至此 Snell Server 所有的設定就完成了~
現在準備在 Surge 設定裡面加上你搭建的 Snell Server 資料
上面這樣填好以後,就能連回你的 Snell Server 了
來個接近現實生活的場景應用:
- 使用公司或家中的 WiFi 就直連,出門在外連不認識 WiFi 或者行動網路會自動透過 Snell 回去
- 透過 Snell 連回的時候需要能連內部網路的設備(內網 IP 段是 192.168.33.0/24)
下面是示範設定檔片段(Surge 內建文字編輯,可以不需透過 GUI 快速拷貝粘貼設定)
[Proxy]
Office = snell, office.domain.com, 17715, psk=HMgRLi6Qvf0NfRwYC1xLrimWyZPGiGe, obfs=tls, version=2, tfo=true
[Proxy Group]
Auto = ssid, default = Office, "OfficeSSID" = DIRECT, "OfficeSSID2" = DIRECT
[Rule]
IP-CIDR,192.168.33.0/24,Office,no-resolve
以上設定完畢後,Surge 會自動根據你的 SSID 變化自動切換網路連線
並且你隨時也都能連回內部網路的設備,類似之前寫過的 IKEv2 VPN on demand,不過這次是 Surge 實現
如此設定完,舒服了~
Surge 的功能不僅如此,想要了解詳細的功能可以參考官方說明書: https://manual.nssurge.com
目前台灣使用 Surge 的人還是非常少,本篇僅僅作為拋磚引玉
希望能有更多人看到這類工具,開發出更多更實用的腳本或者應用喔~ 🖖