為什麼要使用 surge 呢?#
作為 surge 的三端用戶,mac 端 + 手機端 + Apple tv 端
不得不說 surge 的介面確實很美(
- 最主要的用途:流媒體觀看 + 國外 app 使用 + ChatGPT
- 其次:京東比價,阿里雲盤自動簽到,B 站 ui 修改等多種 module
- 開發用途:抓包,會員破解
當然實際上我這裡用到的功能遠不及 surge 包含的,高級功能如網關配置、內網穿透,DHCP 伺服器等,也有過折騰,但日常很少涉及到就不細說了
當然上述能力,其實 QuanX、clashX、小火箭也都可以作為替代品,而且價格也還算便宜(clashX 免費)。如果打定主意要頭鐵入坑 surge,就準備好氪金吧哈哈
如何入坑 surge 呢?
- mac 端購買鏈接 Surge Mac - Advanced Web Debugging Proxy for Mac & iOS (nssurge.com)
- ios 端購買鏈接 Surge Mac - Advanced Web Debugging Proxy for Mac & iOS (nssurge.com)
- 如果購買了 ios 端,則 Apple tv 端免費贈送(前提是帳號需要綁定到同一個 iCloud 賬戶上)
強烈建議網頁端購買而不是 App Store 內購,你會感謝我的(因為外區 Apple id 帳號很容易被 ban,也難以共享給他人使用)
網頁端購買推薦買支持多台設備的套餐,可以共享出去來回點本,單人購買有點虧🥹
有了 surge 後,還沒完,你需要購買機場服務(自建節點也是可以的,但比較麻煩容易被封),推薦我一直用的機場(通過我的鏈接註冊可以獲得優惠😄)
https://rabbitpro.net/auth/register?code=JEBu
好了,下一步就是導入配置,機場提供了自帶的配置,開箱可用
導入配置後,最好創建一份當前配置的副本方便我們後續編輯(當前配置無法修改)
surge 的基礎介面我也介紹下:
好了,你已經正式入門了,接下來就是見證 surge 的魔力了
基礎分流規則#
首先需要理解下什麼是分流,關於這一點似乎沒有統一的定義,個人理解如下:
上網本質就是和伺服器傳輸數據,傳輸的數據按照字節數來統計就是多少流量(插一句,推薦去看《上傳新生》這部劇,會對流量有更深的理解)
我們和伺服器之間是有很多條連接的,這些連接可以簡單分個類,比如國內的服務,國外沒有被牆的服務,國外被牆的服務
而分流,就是將國外被牆的服務統統走機場代理,從而繞過牆的封鎖,此處應該有圖(但實際沒有🐶)
簡單小結下:
- 國內的服務
- 國外沒有被牆的服務
- 國外被牆的服務
這其中,國外被牆的服務又因為地域的限制,加上了一堵無形的牆,比如 OpenAI 的服務就牆掉了香港的 ip
於是,我們又需要進一步分流,將國外的服務分流到不同地區的節點,比如常見的香港、美國、印度、尼日利亞、土耳其、阿根廷(我是精神阿根廷人!)等
上個小節中,導入的 surge 配置文件,其中有很大一部分就是做這個分流的
此時打開 surge,我們需要切換到 “規則模式”,三個模式分別理解如下:
- 直接連接:surge 變身小透明,所有流量一股腦的放過
- 全局模式:surge 變身大魔王,所有的流量都被 surge 代理
- 規則模式:surge 變身檢查員,按照我們配置好的分流規則來分流
切換到規則模式後,此時的策略組還比較簡單,只分成了四類:國內,國外,蘋果,其他
比如我們想訪問 ChatGPT 服務的話,此時我們需要的將 ChatGPT 的服務都通過美國節點來訪問,因此我們需要幾個事情:
- ChatGPT 的伺服器有哪些
- 美國節點
- 分流規則
那麼 ChatGPT 的服務有哪些呢,已經有人幫忙整理好了,搜索 surge rule chatgpt github
就能找到: ios_rule_script/rule/Surge/OpenAI/OpenAI.list at master · blackmatrix7/ios_rule_script (github.com)
這裡列出的就是我們需要獲得原始的 raw 鏈接
https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/OpenAI/OpenAI.list
當然更推薦用 jsdelivr 加速後的(因為 raw.github 的鏈接被牆了,後續更新資源容易導致報錯連不上):
jsdelivr 加速方法,只需要把 github 的域名替換為
cdn.jsdelivr.net/gh
拼接下就好
https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script/rule/Surge/OpenAI/OpenAI.list
第一步準備好,第二步我們準備美國相關的節點,如果你是通過機場導入的配置,已經自動添加了很多節點,當然也可以手動去添加你的 vps 節點
我們可以對這些節點做一個歸類,比如按照地域來劃分,點擊【代理伺服器】,拖到最底下,新增一個策略組:
surge 把代理伺服器和策略組(即代理伺服器的聚合)都視作代理伺服器看待
將美國節點都拖進去(其他地區解鎖 OpenAI 穩定性一般,美國節點最穩定)
第三步,設定分流規則,此時就可以直接添加一條分流到 ChatGPT 的規則了
好了,已經成功了,訪問 ChatGPT 試試
補充#
機場的節點並不是穩定的,可能出現短暫無法使用
此時可以切換到策略組,點擊測速,切換到連接暢通的節點(人工負載均衡了屬於是🤣)
嫌手工切麻煩的話,也可以在策略組中,選擇這兩個
- URL 延遲自動測試:自動選擇延遲最低的
- URL 可用性自動測試:不可用時隨機選擇一個可用的
- 負載均衡:每次隨機切換
進階分流規則#
既然已經添加了第一條規則,那肯定要摩拳擦掌,試試添加一堆的規則了,比如 Netflix、HBO、pornhub(大霧)
折騰之前別忘了,我們添加這些規則本質上為了實現無感知的上網,即不管是訪問國內還是國外的服務,surge 都自動為我們選擇代理或者是不代理
這些規則都可以在這裡找到:https://github.com/blackmatrix7/ios_rule_script.git, 慢慢折騰就好了
規則微調#
有些規則可能是過期的,比如 HBO 的規則,網上搜到的基本都過期了,於是可以這麼做:
- 先切換到全局模式,我們選擇節點為美國,此時 surge 大魔王就會強制要求所有流量都通過美國節點(注意這時就別去刷國內的劇了,速度又慢又浪費流量)
- 此時打開 HBO MAX app,在【最近請求】頁面觀察下都訪問了什麼域名(surge 也貼心地提供了浮窗可以實時觀察)
- 選擇你覺得需要添加規則的域名,一般都很有特徵的,比如
[hbo.com](http://hbo.com)
或者是[max.com](http://max.com)
之類的,一般我們會選擇DOMAIN-SUFFIX
(後面說這是什麼)
可以選擇臨時規則或者永久規則,這是為了測試考慮
規則詳解#
前面我們使用到的都是規則集,即包含了一系列的分流規則,surge 中稱之為 RULE-SET
RULE-SET
的形式是一行一個規則,surge 的規則除了針對域名分流,針對 ip、針對進程(mac 上)也都是可以的
常見的規則形式有:
- 域名規則
- DOMAIN:嚴格匹配某域名。
- DOMAIN-SUFFIX:匹配某域名及其子域名,如 DOMAIN-SUFFIX,apple.com 可以匹配 apple.com 和 www.apple.com,但是不會匹配 anapple.com。
- IP 地址規則
- 其他規則
- PROCESS-NAME:僅對 Mac 版本有效,可以匹配程序名。
- SRC-IP:可匹配連接來源 IP 地址,接管其他設備連接時可使用。
- IN-PORT:Mac 版本支持多端口監聽,可為不同監聽端口配置特定的規則。
更多請參考文檔:Surge 官方中文指引:理解 Surge 原理 (nssurge.com)
腳本 & 模塊#
在使用腳本和模塊功能之前,最好是先打開 MITM
打開 MITM 需要證書信任操作,這裡不仔細說了,建議自行 Google
之後就可以切換到【修改】界面,使用腳本和模塊功能了
其實這兩者本質上都是對請求和響應做一些修改,並且完成一些自動化的工作,但個人覺得模塊相比腳本更好用,原因在於:
- 腳本的配置比較繁瑣,需要自行添加 MITM 的域名
- 模塊相對來說更簡單,一鍵安裝即可(但依賴模塊作者開發的質量,比如之前有個模塊作者直接覆蓋掉了我的
skip-proxy
配置,我後面找了半天才找到原因)
下面提供了一些開箱即用的模塊:
- 京東比價:https://raw.githubusercontent.com/Rabbit-Spec/Surge/Master/Module/Spec/JD_Price/Moore/JD_Price.sgmodule
- 阿里雲盤簽到:https://github.com/rayepeng/surge-module/raw/main/aliyunpan.sgmodule.sgmodule
- 看天下 app 免費讀:https://raw.githubusercontent.com/rayepeng/surge-module/main/ktx.sgmodule
- 財新周刊免費讀: https://raw.githubusercontent.com/rayepeng/surge-module/main/caixin.sgmodule\
更進階的模塊技巧需要搭配 boxjs 使用,安裝鏈接:https://raw.githubusercontent.com/chavyleung/scripts/master/box/rewrite/boxjs.rewrite.surge.sgmodule
文檔:介紹 - BoxJs
比如自定義 B 站 ui 的模塊:https://raw.githubusercontent.com/BiliUniverse/Enhanced/main/modules/BiliBili.Enhanced.sgmodule
搭配 boxjs 可以自由勾選首頁展示的內容:
後續內容#
零零散散先寫了這麼多,主要是平常使用到的一些經驗沉澱,後面一篇準備寫一下配置文件、編寫腳本和模塊吧
參考#
- Surge Mac 使用指南 | by Alan He | Jan, 2024 | Medium
- Surge 官方中文指引:理解 Surge 原理 (nssurge.com) surge 官方的文檔,對於深入理解網絡協議有很大的幫助
- GetSomeCats/Surge 新手從註冊 Apple ID 到退款.md at Surge・getsomecat/GetSomeCats (github.com) 這個寫的很詳細了
- 推薦最小配置,可以認識配置文件 中國區用戶推薦最小配置 - Surge Tech Community (nssurge.com)