---
# System prepended metadata

title: 科學上網總整
tags: [科學上網]

---

# 科學上網總整
本篇整理了所有我這次前往中國所準備的科學上網手段。最後會附上前測以及實測的結果。

## 目錄
* [免費 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 節點。

就在這邊祝各位能夠順利翻牆啦~


