# 科學上網總整 本篇整理了所有我這次前往中國所準備的科學上網手段。最後會附上前測以及實測的結果。 ## 目錄 * [免費 VPN](#免費-VPN) * [自建節點](#自建節點) * [免費節點](#免費節點) * [遠端桌面](#遠端桌面) * [其他上網準備](#其他上網準備) * [前測](#前測) * [實測](#實測) * [VPN](##免費-VPN-測試) * [節點](#節點測試) * [遠端桌面](#遠端桌面21) * [其他](#其他測試) * [結語](#結語) ## 免費 VPN 我準備了以下幾種免費 VPN 備案: 1. [Proton VPN][1] 2. [Hide me VPN][2] 3. [Warp VPN][3] 4. [SoftEther VPN][4] (來自 [Gate VPN][5],含 Open VPN 節點) ![image](https://hackmd.io/_uploads/HJuG8DUDR.png) SoftEther VPN 的使用指南[看這裡](<https://www.vpngate.net/cn/howto_windows.aspx>)。 此外,我還有準備其他插件性質的 VPN,如 1. Microsoft Edge 自帶的 VPN 2. 手機端 speedtest 自帶的 VPN ![image](https://hackmd.io/_uploads/r1nQEOLDR.png) | ![image](https://hackmd.io/_uploads/SJ5kHuID0.png) :-------------------------:|:-------------------------: 對於PC及手機端的支援程度、流量等資訊,統整如下 |項目|支援|官網 or 地址|免費流量| |---|---|---|---| |Proton VPN|PC、手機|[PC][1]、[手機][6]|無限制| |Hide me VPN|PC、手機|[PC][2]、[手機][7]|10GB/月| |Warp VPN|PC、手機|[PC][3]、[手機][8]|無限制| |SoftEther VPN|PC|[官網][4]、[節點][5]|無限制| |Open VPN 節點(from GateVPN)|PC、手機|[openvpn 官網][9]|無限制| |Microsoft Edge 自帶的 VPN|PC|N/A|10GB/月| |speedtest 自帶的 VPN|手機|[手機][10]|2GB/月| [1]: <https://protonvpn.com/> [2]: <https://hide.me/en/> [3]: <https://one.one.one.one/> [4]: <https://www.vpngate.net/cn/download.aspx> [5]: <https://www.vpngate.net> [6]: <https://play.google.com/store/apps/details?id=ch.protonvpn.android&pcampaignid=web_share> [7]: <https://play.google.com/store/apps/details?id=hideme.android.vpn&pcampaignid=web_share> [8]: <https://play.google.com/store/apps/details?id=com.cloudflare.onedotonedotonedotone&pcampaignid=web_share> [9]: <https://openvpn.net/> [10]: <https://play.google.com/store/apps/details?id=org.zwanoo.android.speedtest&pcampaignid=web_share> ## 自建節點 自建節點的部分,就跟我在[這篇][11]文章中說的一樣,我是透過自家 windows 11 主機來搭建節點。所以本小節會把我成功在 windows 主機搭建的服務都列出來。 關於搭建教學,可以查看[不良林][12]的頻道,下方超連結也都是引用了他的影片。這是他完整的[搭建系列教學][13],雖然他主要是在 linux 上搭建執行,不過下面我列的這些都能輕易照搬到 windows 上實現。 我搭建的服務如下: * [v2ray vmess+tcp][14] * [v2ray vmess+ws][14] * [v2ray vmess+ws+tls+web][14] * [v2ray vmess+ws+cdn][17] * [trojan][15] * [hysteria2][16] * [v2ray vless+MITM][01] [11]: <https://hackmd.io/@DLkk/ryIyED0H0> "vmess+ws+tls+web on Windows" [12]: <https://www.youtube.com/@bulianglin> "不良林頻道" [13]: <https://youtube.com/playlist?list=PL5TbbtexT8T3d_7UX2aSFhoMYk-cl4kf4&si=rAJ8-vJhPP4i_IjO> "不良林-節點搭建系列" [14]: <https://youtu.be/y8s5UivMNcE?si=wO4hyeidWb7SEQW7> "vmess 搭建" [15]: <https://youtu.be/gw2Vl1h89Wo?si=9TFs1NyuPvmcGe7N> "trojan 搭建" [16]: <https://youtu.be/CXj-ID33MhU?si=OxmsSViy2aMk3D_j> "hysteria2 搭建" [17]: <https://youtu.be/FT-O4Xd9gTw?si=JdMs1iodAEEWM8Ia> "cdn 域前置" [01]: <https://youtu.be/Z_URro3bZqM?si=8_hCOLMiQzpySubt> "MITM 解決 tls over tls" ## 免費節點 除了自建節點之外,白嫖免費節點也是一種方案。 我找了兩個資源,一個是[不良林的24小時節點分享直播][18],另一個是[夢歌的每月節點分享影片][19],並且兩個我都做了 Skype Bot 自動爬取的 Python 腳本。 :::spoiler 不良林直播爬取 Python 腳本 安裝必要模組 ```shell pip install opencv-python ``` 函式與使用方法 ```python import cv2 def capture_yt_stream(url: str, save_filepath = 'screenshot.png'): # Use streamlink to get the best stream URL command = ['streamlink', url, 'best', '--stream-url'] stream_url = subprocess.check_output(command).decode().strip() # Open the stream URL with OpenCV cap = cv2.VideoCapture(stream_url) # Read one frame ret, frame = cap.read() # Check if the frame is captured if ret: # Save the frame as an image cv2.imwrite(save_filepath, frame) print("Screenshot saved as 'screenshot.png'") else: print("Failed to capture the frame") # Release the capture object cap.release() if ret: return save_filepath return None if __name__ == "__main__": # 不良林節點直播網址 url = 'https://www.youtube.com/watch?v=cS6zS5hi1w0' # 截圖存成圖片 (預設為 ./screenshot.png) filepath = capture_yt_stream(url) ``` ::: :::spoiler 夢歌節點爬取 Python 腳本 安裝必要模組 ```shell pip install gdown pip install google-api-python-client ``` 設置 youtube API key 前往[Google Cloud Console](<https://console.cloud.google.com/>),創建一個項目並啟用YouTube Data API,然後創建API憑證。記下您的API密鑰。 ```python import gdown from googleapiclient.discovery import build YOUTUBE_API_KEY = 'YOUR_YOUTUBE_API_KEY' # 替換成你的 youtube API key VIDEO_ID = 'SnYYgm2-MXs' # 替換成夢歌的當月節點影片 ID (網址 ?v= 後面的那串) def get_video_description(video_id, api_key): # 建立YouTube Data API客戶端 youtube = build('youtube', 'v3', developerKey=api_key) # 調用API來獲取視頻信息 request = youtube.videos().list( part='snippet', id=video_id ) response = request.execute() # 提取視頻說明欄 if 'items' in response and len(response['items']) > 0: description = response['items'][0]['snippet']['description'] return description else: return None def download_gd_file(url: str | None = None, _id: str | None = None) -> str: if _id is None: assert url is not None _id = url.replace("https://drive.google.com/file/d/", "").replace("/view?usp=sharing", "") url = f'https://drive.google.com/uc?id={_id}' res = gdown.download(url, quiet=False) return res def extract_free_node_url(description: str): result = "" idx = description.index("科学上网免费节点订阅下载:") idx += 13 while description[idx] != "\n": result += description[idx] idx += 1 result = result.replace(" 解压码视频内语音播报", "") return result def get_free_nodes_from_monge(): VIDEO_ID = 'SnYYgm2-MXs' description = get_video_description(VIDEO_ID, YOUTUBE_API_KEY) if description: print("Video captured successfully") url = extract_free_node_url(description) print(url) else: print("Video not found or no description available.") return filename = download_gd_file(url) return filename if __name__ == "__main__": # 示範下載 get_free_nodes_from_monge() ``` ::: [18]: <https://www.youtube.com/live/uSkT4MwpCYA?si=bkJHndR-BaHDooBt> "不良林-節點直播" [19]: <https://youtu.be/SnYYgm2-MXs?si=KSMOHRwsRT2AZ6_p> "夢歌-免費節點" ## 遠端桌面 另外為了方便伺服器管理,我也設置了遠端桌面。下面是我使用的遠端桌面軟體。 ### Chrome Remote Desktop 因為是 google 的服務,所以必須翻牆才能使用。[官網](<https://remotedesktop.google.com/>) ### AnyDesk 連線穩定,還不錯的遠端桌面軟體,不過不知道有沒有被 GFW 封鎖。[官網](<https://anydesk.com>) ### Windows 內建遠端桌面 連線最為穩定(畢竟是直接用公網 IP 連線),但據說 GFW 會阻擋這種連線,所以可能會不穩定。 ### SSH SSH 連線是在 linux 比較常見,但其實 windows 也能運行 SSH 服務。部署[看這裡][20]。 [20]: <https://learn.microsoft.com/zh-tw/windows-server/administration/openssh/openssh_install_firstuse?tabs=gui> "SSH server 部署" ## 其他上網準備 ### Tor 洋蔥瀏覽器 雖然在中國無法直接使用 Tor 網路,但還是能透過 Tor 瀏覽器自帶的 meek 橋接器來實現極低速、但幾乎不會被封的翻牆方式。可在應急時使用,是失聯時的最後手段。Tor 瀏覽器使用方法可以[看這裡](<https://youtu.be/W0o9CpcSIyU?si=R9zLZ_ZD8G8IPdJH> "不良林-暗網指南")。 ### Skype 機器人 調查後發現,Skype 是極少數在中國能使用的相對安全的外國通訊軟體。為此我用 python 製作了 Skype 機器人,可以依指令發送翻牆節點資訊,是失聯時重要的手段。 ### 台灣大哥大 5G 漫遊 SIM 卡 唯一花了錢的地方。 方案是八天 NT$349 5GB 流量,用完降速至 128kbps。 ## 前測 這邊提供前往中國前,我在自家事先檢測的數據。這些數據都是連自家的 WiFi,並且使用 SpeedTest 進行測速的結果。 |項目|Ping(毫秒)|上傳(Mbps)|下載(Mbps)|測速方式| |---|---|---|---|---| |無|3|52.12|19.87|PC版Speedtest測速| |Proton VPN|102|47.92|19.07|同上| |HIDE ME VPN|435|6.22|0.91|同上| |WARP VPN|7|43.77|18.76|同上| |SoftEther|77|43.24|18.87|隨機節點、PC版Speedtest測速| |OpenVPN|138|28.19|10.96|隨機節點、PC版Speedtest測速| |Edge 瀏覽器 VPN|8|52.71|15.74|網頁版Speedtest| |Speedtest 手機 VPN|36|28.6|18.6|手機Speedtest測速| |伺服器撥號上網測速|2|55.60|19.88|PC版Speedtest測速| |vmess+tcp|6|16.34|9.75|同上| |vmess+ws|6|17.41|9.90|同上| |vmess+ws+tls+web|6|16.95|9.66|同上| |trojan|7|15.2|N/A|v2ray 內建測速| |vless+MITM|7|17.25|9.52|網頁版Speedtest測速| |hysteria2|7|15.07|9.50|網頁版Speedtest測速| |Tor 瀏覽器|92|4.86|3.02|[網頁][21]測速| |Tor 瀏覽器+meek|N/A|0.121|0.124|[Cloudflare][22]測速| [21]: <https://www.highspeedinternet.com/tools/speed-test> [22]: <https://speed.cloudflare.com/> ## 實測 ### 無代理測試 下面是無代理在測試環境下的網速 |ping(ms)|下載(Mbps)|上傳(Mbps)| |---|---|---| |26|92.17|26.55| ### 免費 VPN 測試 首先是 VPN 的測試結果,裡用桌面版speedtest測試。 |項目|能否直接連上|發生了什麼|ping(ms)|上傳(Mbps)|下載(Mbps)|備註 |---|---|---|---|---|---|--- |Proton VPN|是|多測試幾次後偶爾能連上|181|37.78|15.95|測試時是使用 30 Mbps 左右的寬帶 |Hide.me VPN|否|無論如何都無法連上|N/A|N/A|N/A |SoftEther VPN|否|無論如何都無法連上|N/A|N/A|N/A |Open VPN|否|無論如何都無法連上|N/A|N/A|N/A |Warp VPN|否|要使用v2ray+TUN才能連上|N/A|N/A|N/A |Edge VPN|否|連上中國境內網路後,Edge 會自動變為中國版,而中國版的 Edge 並沒有 VPN 功能|N/A|N/A|N/A |Speedtest VPN|否|無論如何都無法連上|N/A|N/A|N/A ### 節點測試 再來是節點測試,測速方式都是用網頁版 Speedtest #### 自建節點 |項目|ping(ms)|下載(Mbps)|上傳(Mbps)|備註 |---|---|---|---|--- |v2ray vmess+tcp|56|19.39|18.06| |v2ray vmess+ws|60|18.84|19.19| |v2ray vmess+ws+tls+web|62|18.84|19.09| |trojan|N/A|N/A|N/A|不知為何連線很不穩定,連線一小段時間後就會無法使用。 |hysteria2|106|17.60|14.93|測試時是使用 30 Mbps 左右的寬帶 |v2ray vless+MITM|N/A|N/A|N/A|不知為何無法使用。 #### 免費節點 兩位 youtuber 給的節點都很優秀。我主要也是用他們的,又多又快,讚讚。 ### 遠端桌面 |項目|連線穩定度|備註| |---|---|---| |Chrome remote desktop|偏不良|由於要翻牆後才能使用,延遲比較高| |AnyDesk|良好|沒有被牆的跡象| |Windows 遠端桌面|良好|沒有被牆的跡象| |SSH|良好|沒有被牆的跡象| ### 其他測試 #### Tor 瀏覽器測試 同樣使用 [Cloudflare 測速網站](<https://speed.cloudflare.com/>)測速 PC 端測試: |項目|能否連線|下載(kbps)|上傳(kbps)| |---|---|---|---| |裸連|否|N/A|N/A|N/A| |+v2ray TUN|否|N/A|N/A| |+obfs4 橋接器|否|N/A|N/A| |+meek 橋接器|是|135|172| |+v2ray TUN+obfs4|是|4130|1970| 手機端目前還沒有支援 TUN 模式的軟體,所以似乎只剩下 meek 橋接器這一個選項了。 手機端測試: |項目|能否連線|下載(kbps)|上傳(kbps)| |---|---|---|---| |+meek 橋接器|是|138|131| #### 手機漫遊測試 使用手機版 Speedtest 測試。 |項目|ping(ms)|下載(Mbps)|上傳(Mbps)| |---|---|---|---| |數據漫遊|123|21.1|11.8| ## 結語 實際測試過後,大部分的結果都在意料之內。不過還是有少部分不在意料內,例如,trojan 不知為何經常斷線,vless+MITM 則是完全連不上。或許有部分原因是 windows 配置跟 linux 還是有差的關係。最讓我意外的還是 Proton VPN 居然能連上,這或許代表著他們的節點數量真的很不錯。 最後來統整一下所有方式中,我最常用的方法。 我實際使用時,最主要用的還是 v2rayN,節點則是夢歌的節點,他給得非常多,而且速度也很快。當要使用台灣地區限定的服務時(ex. 動畫瘋),我會切換到自建的 vmess+ws+tls+web 節點。 就在這邊祝各位能夠順利翻牆啦~