科學上網SSR&SS客戶端下載

隨著封鎖的嚴重,通往外面世界的路越來越少。從另一角度看,封鎖推動了相關技術的發展。目前流行的開源相關技術包括Shadowsocks(SS)、ShadowsocksR(SSR)、V2Ray、WireGuard等,直接服務終端用戶的VPN和代理產品更是數不勝數。

對於有技術基礎的同學,我一直建議且踐行自行搭建伺服器這條路,主要出於以下幾點考慮:

  1. ExpressVPN, NordVPN等產品並不比自建便宜,速度上也無太多優勢;
  2. 國內許多產品常有跑路或不可用的情況發生,相比之下vps廠商跑路更少;
  3. 萬一對方伺服器記錄訪問日誌,請喝茶一請一個準;
  4. 自建伺服器能全方面鍛煉你的網路、系統管理、英文等多方面能力。

大體上看,自建伺服器分為三步:1. 購買海外伺服器;2. 部署好服務端;3. 下載客戶端,連接上網。第一步本人寫過「一些vps商家整理」可供參考;第二步「再談科學上網」,用文中兩三條命令即可部署好SS服務端。本文針對第三步進行討論:獲取科學上網必須用到的客戶端。

電腦(PC端)、安卓和蘋果電腦(MacOS)系統的特點是,只有一人有安裝包,就能分享給其他人安裝和使用,所以很難封殺。鑒於此,本站為以上系統找SS和SSR客戶端的用戶提供下載通道:Shadowsocks客戶端和ShadowsocksR/SSR 客戶端。

相比之下ios系統比較麻煩,因為絕大部分應用必須通過應用商店(app store)下載。蘋果爸爸在應用審核等許多方面比較強勢,但在國內也只能乖乖聽話,所以國內id很難下載到(免費的)網路代理客戶端。

對於ios系統,可以通過以下幾種方式獲取客戶端:

  1. 使用境外的apple id下載,比如香港、台灣、美國等地區的ID。如果沒有境外蘋果id怎麼辦?找朋友借、自己全程用海外ip註冊,或者從淘寶上購買apple id。淘寶上購買一個海外id只要十幾塊錢,如果只是想租用下載某個應用,大概一塊錢一次,都不算貴;
  2. 系統越獄,安裝其他人提供的ipa包。自ios11以來,公開的越獄手段幾乎沒有,這條路基本不通了;
  3. 有開發者賬號的人,重簽名他人提供的ipa包後安裝。比如本人在」構建自己的iOS網路代理客戶端「
    等文中貼出打包好的ipa下載鏈接;
  4. 有技術實力的,自己編譯安裝。示例可參考」構建自己的iOS網路代理客戶端「
    一文。

其他平台一種客戶端就足夠,因為ios下載應用的特點,ios上可供選擇的客戶端很多。比較知名且目前可下載免費使用的SS/SSR客戶端包括:FastSocks、NetShuttle(網際飛梭)、Potatso Lite、Sockswitch、ShadowLink、Mume、Brook、Surge、ConnectSPro。付費的也有更多,例如Potasto 2、Shadowrocket、Wingy。當然你應該也知道,有了境外id,同樣能夠下載wireguard、v2ray等工具的客戶端。

對於Linux系統用戶,客戶端下載和使用無需多言,畢竟是高玩群體。

Shadowsocks客戶端

Shadowsocks(SS)客戶端是使用Shadowsocks方式科學上網必不可少的工具。由於國內的限制,科學上網需要使用Shadowsocks客戶端,而下載Shadowsocks客戶端又需要用代理翻牆,這是一個死循環…

本站提供Windows(PC/電腦)、Android(安卓)、MacOS(蘋果電腦)系統的Shadowsocks客戶端下載,方便用Shadowsocks方式進行科學上網的網民。因Windows平台下官方版會出現大量「HTTP Auto Proxy Detection Worker Process」進程的bug,本人對其進行了修復並提供修復版。除此之外的客戶端均來自Shadowsocks官方網站。如果你使用修復版遇到問題,請在本頁面留言。其他版本遇到的問題,請聯繫官方人員。

Windows客戶端:下載4.1.5修復版 下載官方4.1.5版

Android客戶端: ShadowSocks 4.7.2

MacOS客戶端: ShadowsocksX-NG 1.8.2

iOS(iPhone/iPad)客戶端:打開App Store,搜索「FastSocks/Potatso Lite/Mume VPN/NetShuttle」等。如果你有MacOS設備和開發者賬號,可以考慮「構建自己的ShadowSocks客戶端」。

ShadowsocksR/SSR 客戶端

本人在 「系統出現大量HTTP Auto Proxy Detection Worker Process」 一文中對Windows上的異常現象進行了研究,並給出了Shadowsocks的解決方案。ShadowsocksR/SSR的Windows客戶端亦存在此問題,應友請求,拷貝了最新版的代碼並進行修復和編譯。

此外本人順道整理了Windows(PC/電腦)、Android(安卓)、MacOS(蘋果電腦)系統的ShadowsocksR/SSR客戶端,一併給出,方便使用ShadowsocksR/SSR客戶端科學上網的網友。如果你使用本人修復的Windows版本,使用過程中遇到問題,請直接留言。其他版本遇到的問題請直接聯繫官方人員。

Windows客戶端:下載修復版 下載官方版

Android客戶端: ShadowSocks 3.5.4

MacOS客戶端: ShadowsocksX-NG 1.4.4-r8

iOS(iPhone/iPad)客戶端:打開App Store,搜索「FastSocks/Potatso Lite/Mume VPN/NetShuttle」等。如果你有MacOS設備和開發者賬號,可以考慮「構建自己的Shadowsocks客戶端」。

構建自己的ShadowSocks客戶端

本文說的網路代理客戶端指ShadowSocks(R)客戶端,用途你懂的。

本文寫作時的環境:MacOS High Sierra 10.13.6,Xcode版本9.4.1,Swift版本4.1.2,所用代碼的commitID: 318a5e1

本文所用的XCode工程文件夾已經上傳至網盤:https://pan.baidu.com/s/190N2_ElBWGzxtpL-Hx_d1A

如果構建過程中遇到其他問題,請參考本人對問題整理的文章:構建Potatso問題集錦及解決方案

前提條件

構建iOS設備的自用客戶端(Potatso),需要兩個前提條件:

  1. 一台裝有XCode的MacOS設備;
  2. 一個可用的蘋果開發者賬號。

構建步驟

1. 安裝Cocospods

如果已安裝,請略過此步。

  1. 更新系統的gem版本:打開終端,輸入:sudo gem update --system
  2. 設置國內gem源:gem sources --list輸出為https://gems.ruby-china.org/請略過此步;否則先刪除官方源再添加gems國內源:gem sources --remove https://rubygems.org/; gem sources --add https://gems.ruby-china.org/
  3. 安裝Cocospods:sudo gem install cocoapods

2. 構建Potatso

Potatso的作者(icodesign)公開了源代碼,而後由於部分人的濫用導致作者刪除代碼且第二版不再開源。本文使用的Potatso客戶端的代碼來自icodesignhaxpor等人。

構建Potatso的步驟如下:

  1. 克隆代碼:git clone https://github.com/haxpor/Potatso.git
  2. 更新子模塊:cd Potatso; git submodule update --init
  3. 安裝依賴:打開Podfile,將第一行改成:source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'(使用清華的CocoaPods源),然後運行pod install --verbose
  4. 使用XCode打開Potatso.xcworkspace
  5. 更改PotatsoPacketTunnelTodayWidget兩個子項目的Bundle ID,例如本人分別改成:potatso.tlanyan.mepotatso.tlanyan.me.PacketTunnelpotatso.tlanyan.me.TodayWidget
  6. 更改PotatsoPacketTunnelTodayWidget兩個子項目Capabilities中的App GroupKeychain Sharing的Group:在」App Groups」中刪除原有的group.io.wasin.potatso,新增自己的group,例如:」group.potatso.tlanyan.me」;在」Keychain Sharing」中輸入自己的group ID;
  7. 打開」Potatso.m」文件,將shareGroupIdentifier函數的返回值改成自己的group id;
  8. 在Potatso項目的BuildSettings中找Code Signing Entitlements,將」xxxx.entitlements」刪除;
  9. 將iPhone等iOS設備連接到電腦,目標選擇新接入的設備,點擊左上角的「build and run」按鈕,Xcode會編譯並安裝App,然後啟動。

一切順利的話,iOS設備上的客戶端能正常使用,接下來可以安裝到多個設備上,也可以打包成ipa用iTunes安裝到其他已註冊設備。軟體截圖如下:

應用圖標首頁規則頁面關於頁面

請記住用途為自用,請不要商業使用或者將應用發布到App Store上(並收費)。

可能遇到的問題

本人構建過程中遇到的主要問題是Cocoapods依賴安裝。執行pod install,前面一切順利,到libYAML會出現問題:

Installing LibYAML (0.1.4)

[!] Error installing LibYAML
[!] /usr/bin/curl -f -L -o /var/folders/dj/ljst94xx47l7fn3wz4q9bwsw0000gn/T/d20180822-4467-1cotycr/file.tgz http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz --create-dirs --netrc-optional --retry 2

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
 curl: (7) Failed to connect to pyyaml.org port 80: Connection refused

根據提示libYAML官網的80埠關閉了,將http替換成https發現可以正常下載。libYAML官網這僅支持https,連301跳轉機會都不給的騷操作頓時讓我有點小蛋疼。用grep搜索工程,沒發現可以把http改成https的配置文件存在;對Cocoapods不熟,libYAML的地址不知是否從雲端下載下來;打開Podfile.lock,將版本從」0.1.4″改成其他的,依賴又出問題;無奈之下先將文件下載下來,將其放到」/var/folders/dj/ljst94xx47l7fn3wz4q9bwsw0000gn/T/d20180822-4467-1cotycr/」目錄下並改名為」file.tgz」,再次運行pod install --verbose,發現路徑每次都不一樣,非常蛋疼。

最後的解決方案是採用網路劫持:

  1. 新開一個終端,進入root模式:sudo -i
  2. 創建download/libyaml目錄,將下載的文件複製到文件夾:mkdir -p download/libyaml; mv /Users/tlanyan/Downloads/yaml-0.1.4.tar.gz download/libyaml/
  3. 將pyyaml.org域名解析指向本地:vim編輯/etc/hosts文件,增加一行:127.0.0.1 pyyaml.org
  4. 用Python啟動一個靜態web伺服器,監聽80埠:python -m SimpleHTTPServer 80

以root身份設置好監聽後,在原來終端繼續pod install --verbose,問題解決。

除了依賴問題,其他問題主要是以Bundle ID/group ID的問題,請根據錯誤提示修改。

有關Potatso

Potatso的作者是icodesign祭奠死去的 Potatso 1為作者對Potatso的自述,建議每一個使用Potatso代碼的人都看看。

Github上搜」Potatso」,最匹配排名第一的倉庫持有者是haxpor(Wasin Thonkaew)。其在倉庫README的第一位置建議使用代碼的人查看ADHERE_LICENSE.md中的內容。簡單來說就是不要直接複製源碼然後發布到App Store上,具體來講haxpor的希望是:

其他

本人常用的客戶端是SsrConnectPro,可惜不管全局還是系統代理,都無法使用TG。後來用了WaterDrop,使用TG無憂。遺憾的是前兩周WaterDrop抽風,連接伺服器後又立馬斷開,原因未知。想著重裝一下就好了,就將其卸載掉。打開App Store搜索發現軟體不見蹤影,上網查方知已經下架(其他區也下架),只好尋找替代品。在App Store下載了多個客戶端,能上外網的很多,用得了Telegram的很少。這頓時讓我有種危機感:要是這些軟體下架了,我該怎麼在iOS上(尤其是新設備)訪問外網、使用TG呢?

解決辦法之一是做一個自己的客戶端,這樣就永遠不會下架。本人比較幸運,從閑下來找代碼以及編譯並測試使用正常,總共花了幾個小時(主要時間是解決Cocospods的依賴安裝)。上網查了一圈,貌似沒有相關教程,於是有了此文。

本人從未用過Swift,無法對客戶端功能進行修改,類似問題請勿諮詢本人。如果可以,請購買Potatso 2支持原作者,或者給haxpor等人捐贈。

感謝閱讀!

參考

  1. https://github.com/haxpor/Potatso
  2. https://www.jianshu.com/p/1711e131987d
  3. https://sspai.com/post/38909
  4. https://coolshell.cn/articles/1480.html
  5. https://cloud.tencent.com/developer/article/1072481
  6. https://mirror.tuna.tsinghua.edu.cn/help/CocoaPods/

原文:https://tlanyan.me