先釐清研究工作中的代理範圍
研究人員使用 Clash 的目的,通常不是讓所有流量無差別地經過代理,而是讓論文搜尋、出版社網站、文獻同步與協作寫作在需要時走正確的網路路徑,同時保留校園內網、校務系統與本地服務的直連。Zotero、瀏覽器、Overleaf 與命令列工具對系統代理的支援方式並不完全相同,先區分流量來源,能避免「瀏覽器可以開啟,Zotero 卻同步失敗」這類問題。
Clash 核心負責監聽本機代理連接埠、解析 DNS、比對規則並選擇出站節點;FlClash 或其他圖形客戶端則負責匯入設定、切換系統代理、顯示連線記錄與管理 TUN。常見的 mixed-port: 7890 可以同時接受 HTTP 與 SOCKS5 請求,瀏覽器或支援代理的應用程式通常可以使用它。external-controller: 127.0.0.1:9090 是控制介面連接埠,不是給 Zotero 或瀏覽器填寫的代理埠號。
| 工具或服務 | 常見連線方式 | 建議處理方式 |
|---|---|---|
| Chrome、Firefox、Edge | 瀏覽器代理或作業系統代理 | 先使用系統代理,再用規則模式分流 |
| Zotero Connector | 依附瀏覽器載入資料 | 先確保瀏覽器可存取出版社與資料庫 |
| Zotero 桌面程式 | 同步、WebDAV、附件下載與 API 請求 | 檢查系統代理或應用程式網路設定 |
| Overleaf 網頁版 | 瀏覽器 HTTPS 連線 | 通常由瀏覽器代理處理,不需要 TUN |
| Git、TeX Live 或命令列下載工具 | 各自的代理環境變數或設定檔 | 另行設定 HTTP_PROXY 與 HTTPS_PROXY |
為學術網站與校園網路設計分流規則
學術網站的存取方式常因學校、地區與資料庫供應商而不同。部分資料庫依校園出口 IP 判斷授權,部分網站則透過登入帳號、VPN 或圖書館代理驗證。Clash 能改變連線出口,但不能替代學校的帳號授權,也不能保證遠端資料庫接受所有代理節點。因此,設定規則時應先確認學校要求的是校園網路、校方 VPN、圖書館 EZproxy,還是一般 HTTPS 代理。
最穩定的做法是把已知的校園網域與本地位址設為直連,把確定需要外部節點的網站交給代理策略組。規則從上到下比對,越具體的網域規則應放在越前面的位置。不要只把整個 .edu 網域交給同一策略,因為不同國家與學校的網域政策並不相同。
mode: rule
mixed-port: 7890
allow-lan: false
dns:
enable: true
enhanced-mode: fake-ip
proxy-groups:
- name: Research
type: select
proxies:
- Academic-Auto
- DIRECT
- name: Academic-Auto
type: url-test
url: https://www.google.com/generate_204
interval: 300
proxies:
- Node-A
- Node-B
rules:
- DOMAIN-SUFFIX,library.example.edu,DIRECT
- DOMAIN-SUFFIX,proxy.example.edu,DIRECT
- DOMAIN-SUFFIX,overleaf.com,Research
- DOMAIN-SUFFIX,zotero.org,Research
- DOMAIN-SUFFIX,crossref.org,Research
- DOMAIN-SUFFIX,sciencedirect.com,Research
- DOMAIN-SUFFIX,springer.com,Research
- DOMAIN-SUFFIX,wiley.com,Research
- MATCH,DIRECT
上面的網域僅是配置結構示例,不能直接視為任何學校或資料庫的固定清單。出版社可能使用多個 CDN、登入網域與 API 網域;如果只允許主站通過代理,登入頁可以開啟,PDF 或 DOI 查詢卻仍然逾時。遇到這種情況,應在 Clash 連線記錄中查看實際請求的主機名稱,再加入最小範圍的 DOMAIN-SUFFIX 規則,而不是直接改成全域代理。
校園網路與 DNS 的取捨
若學校要求使用校園 DNS 或內部解析器,啟用 fake-ip 後可能出現校內網域無法解析、圖書館入口重新導向失敗或校務系統顯示憑證錯誤。可先在日常研究設定中使用直連與校園 DNS,確認校內網站正常後,再逐步加入外部資料庫規則。若 mihomo 設定支援依網域選擇解析器,也可以將校園網域交給內部 DNS,公開網域交給可靠的外部解析器。
TUN 模式能接管不遵循系統代理的程式,但它同時會改變路由與 DNS 行為。Zotero 與瀏覽器本身通常不需要 TUN 才能工作。只有當某個下載工具、命令列程式或桌面應用程式完全不支援代理設定時,才考慮啟用 TUN。啟用前應確認 FlClash 已取得系統權限,並準備好關閉 TUN 後還原路由的方案。
動手設定:從 Clash 到 Zotero 與 Overleaf
以下流程以桌面版 FlClash 搭配 mihomo 核心為例。不同客戶端的按鈕名稱可能略有差異,但判斷順序相同:先驗證核心,再驗證代理連接埠,接著測試瀏覽器,最後檢查 Zotero 與 Overleaf。一次只調整一個項目,才能知道問題究竟來自節點、規則、DNS 還是應用程式本身。
- 確認核心狀態:在 FlClash 的核心或日誌頁確認 mihomo 已啟動,並記下目前的
mixed-port。若核心沒有啟動,先不要在 Zotero 內反覆按同步。 - 開啟規則模式:將模式設為 Rule,選擇一個可以正常連線的研究策略組。保持
allow-lan: false,除非確實需要讓區域網路其他裝置使用本機代理。 - 測試瀏覽器:開啟一個學術搜尋網站與一個校園網站,觀察 Clash 連線記錄。學術網站應命中 Research,校園網站應命中 DIRECT 或校方指定策略。
- 啟用 Zotero Connector:在瀏覽器中開啟一篇論文的摘要頁,確認 Connector 能讀取標題、作者、期刊與 DOI。若只抓到網頁快照,可能是出版社頁面需要登入或頁面由 JavaScript 動態產生。
- 測試 Zotero 同步:在 Zotero 的同步設定中確認帳號狀態,先同步少量資料。同步失敗時記下完整錯誤,不要立刻刪除本機資料庫或重建資料庫。
- 測試附件下載:選擇一篇小型 PDF 或公開附件測試下載。若條目同步成功但附件失敗,應查看附件所在網域是否未加入規則,而不是只檢查 Zotero 帳號。
- 測試 Overleaf:登入 Overleaf,開啟一個非重要專案,編輯一行註解並編譯。若網站可登入但編譯或 PDF 預覽長時間不更新,查看瀏覽器開發者工具與 Clash 連線記錄,確認 WebSocket 或相關資源沒有被錯誤分流。
若 Zotero 需要手動指定代理,請先查看目前版本的「設定」或「偏好設定」中的網路連線選項。代理主機通常填 127.0.0.1,代理埠填 7890;不要把控制介面埠 9090 填入代理欄位。若介面只提供使用系統代理的選項,應在作業系統網路設定中開啟 HTTP、HTTPS 或 SOCKS 代理,並在測試完成後記錄原本的設定,方便撤銷。
# 僅供支援代理環境變數的命令列工具使用
export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
export ALL_PROXY=socks5://127.0.0.1:7890
不要把以上環境變數當成 Zotero 或 Overleaf 的通用設定。Overleaf 網頁版的主要請求來自瀏覽器;本機編譯則可能使用 TeX Live、latexmk 或 Git,它們各自有不同的網路設定。若使用 Overleaf Git 同步,請另外檢查 Git 的代理設定與憑證,不要因為瀏覽器可以登入就假設 Git 也會自動使用相同代理。
同步失敗、登入迴圈與代理埠號的排查
Zotero 同步失敗可以分成帳號認證、資料同步、檔案儲存與網路連線四類。先查看 Zotero 顯示的錯誤文字與同步時間,再在 Clash 連線記錄中搜尋相關網域。如果完全沒有連線記錄,代表請求可能沒有經過 Clash,應檢查應用程式是否使用系統代理;如果有連線但顯示大量重試,則應檢查節點品質、TLS、DNS 或策略組選擇。
| 現象 | 常見原因 | 處理順序 |
|---|---|---|
| 瀏覽器可登入,Zotero 無法同步 | Zotero 沒有使用系統代理,或應用程式代理埠填錯 | 確認 127.0.0.1:7890、查看應用程式網路選項與連線記錄 |
| 條目同步成功,附件下載失敗 | 附件 CDN 或出版社網域未命中規則 | 查看實際請求網域,加入精確規則並重新下載 |
| Overleaf 登入後反覆跳回登入頁 | Cookie、DNS、節點出口或瀏覽器擴充功能造成中斷 | 暫停擴充功能,固定同一節點,清除該網站 Cookie 後測試 |
| 校園資料庫顯示未授權 | 出口 IP 不在學校授權範圍,或校方登入流程被繞過 | 確認是否需要校方 VPN、圖書館代理或校內直連 |
| 所有應用程式突然無法上網 | 代理埠未監聽、TUN 路由殘留或系統代理指向舊埠 | 停止系統代理與 TUN,確認核心埠號後重新啟用 |
確認本機代理是否真的在監聽
當瀏覽器或 Zotero回報「連線被拒絕」時,先檢查核心是否正在監聽,而不是立即更換節點。Windows 可使用 netstat -ano | findstr 7890,macOS 或 Linux 可使用 lsof -i :7890。若沒有輸出,表示目前沒有程序使用該埠,應回到 FlClash 檢查核心狀態與設定檔;若顯示其他程序占用,則需更換 mixed port 或停止衝突程式。
# macOS / Linux
lsof -nP -iTCP:7890 -sTCP:LISTEN
# Windows PowerShell
Get-NetTCPConnection -LocalPort 7890 -State Listen
完成測試後,建議建立兩套清楚的研究設定:一套使用校園直連與校方服務,另一套使用外部學術網站策略。設定檔中避免寫入帳號密碼,將自訂規則與訂閱來源分開備份。每次更新 mihomo 或替換客戶端後,先測試瀏覽器、Zotero 條目同步、附件下載與 Overleaf 編譯,再恢復完整研究工作流程。這樣即使代理節點、校園網路或出版社政策變動,也能快速定位受影響的環節。