# 科學上網總整
本篇整理了所有我這次前往中國所準備的科學上網手段。最後會附上前測以及實測的結果。
## 目錄
* [免費 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 節點)

SoftEther VPN 的使用指南[看這裡](<https://www.vpngate.net/cn/howto_windows.aspx>)。
此外,我還有準備其他插件性質的 VPN,如
1. Microsoft Edge 自帶的 VPN
2. 手機端 speedtest 自帶的 VPN
 | 
:-------------------------:|:-------------------------:
對於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 節點。
就在這邊祝各位能夠順利翻牆啦~