SubLaneSubLane

網路代理

為工作區內的訂閱帳號固定指定上游代理出口。

當訂閱帳號需要從指定網路出口連接服務商時,可以為它綁定代理程式。代理屬於目前工作區,與控製成員可用帳號的資源群組是兩種不同資源。每個帳號最多綁定一個代理;不綁定時使用實例原有的網路出口。

新增代理

  1. 以工作區管理員身分開啟「管理 → 網路代理」,點選「新增代理」。
  2. 輸入便於識別的名稱和完整地址,例如 http://proxy.example.test:8080,或 socks5://user:pass@proxy.test:1080。
  3. 儲存後,清單只顯示名稱、協定、主機、連接埠和已綁定帳號數,不會回顯使用者名稱或密碼。

地址支援 http://、https:// 和 socks5://,必須寫明主機與連接埠。使用認證時,使用者名稱和密碼都要填寫;密碼裡的 @ 等保留字元應進行 URL 編碼,例如 %40。位址不能帶路徑、查詢參數或片段。每個工作區最多保存 32 個代理程式。

儲存時只檢查位址格式,不會主動連接代理。綁定帳號後,用該帳號的「驗證連線」檢查到服務商的實際連結。

批次導入

點選「批次匯入代理」,每行貼上一條。可填寫完整 URL、按 HTTP 處理的 主机:端口,或用 名称 | URL 指定名稱。例如:

批量导入代理示例
http://proxy-a.test:8080
备用出口 | socks5://user:pass@proxy-b.test:1080
proxy-c.test:8081

未指定名稱時,以主機和連接埠命名;重名時自動追加序號。空行會跳過。整批導入受工作區 32 條上限約束,並在一次事務中完成。如果有一條格式錯誤或明確名稱重名,整批都不會寫入。批次匯入的認證資訊與單一新增一樣加密儲存,不會在清單中回顯。

測試出口與取得位置

在代理項目上點選“測試代理”。 SubLane 會經該代理向 IPinfo 的公開 IP 接口發起一次有超時限制的 HTTPS 請求。成功後顯示出口 IP、可取得的國家/地區、城市、耗時及偵測時間。這裡是出口 IP 的地理訊息,不一定是代理伺服器的實體位置;IP 定位也只是近似結果。只有管​​理員主動點擊時才會偵測。

點選「測試全部代理」可一鍵偵測所有已儲存的代理,同時最多執行四項偵測;一條偵測失敗不會中斷其餘代理。頁面會顯示進度,以及連通、連線失敗和其他錯誤的數量。每個代理程式都會向 IPinfo 發起一次請求,批次偵測同樣受公開介面的共用限額約束。

IPinfo 的公開介面有共享每日限額。查詢失敗或受限會與連線失敗分開顯示,不會修改代理綁定。更換代理地址會清除舊檢測結果。能連到 IPinfo 不代表能連接訂閱服務商;還需綁定帳號並執行「驗證連線」。

給帳號綁定

  • 新帳號: 先新增代理,再到「訂閱帳號 → 新增帳號」,在「網路代理」中選好代理,然後進行瀏覽器授權或匯入憑證。選擇“預設網路出口”即不綁定。
  • 已有帳號: 開啟帳號右上角的操作選單,選擇「網路代理」,選取目標並儲存。帳號卡片會顯示綁定的代理名稱。重新授權會沿用目前綁定。

綁定後,SubLane 服務端的 OAuth 令牌交換、憑證刷新、模型發現、支援的額度讀取和模型請求都會使用該代理程式。服務商登入頁仍在你的瀏覽器中打開,不經過 SubLane 的代理。導入文件中的 proxy_url 不會生效;只能綁定管理員在工作區中新增的代理程式。

新請求讀取帳號當時的綁定。修改代理位址或綁定不會遷移正在進行的回應流,也不會重發請求;原有會話綁定的訂閱帳號仍保持不變。 SubLane 不依照請求輪換代理,代理故障時也不會自動切換到別的代理。未綁定帳號沿用實例預設的出站傳輸;如果進程配置了代理環境變量,則該預設出口可能已經使用了代理程式。

修改、解綁與排錯

在「網路代理」中點選「編輯代理」,可更名或更換位址。編輯時將「代理地址」留空會保留原地址;更換地址後,綁定此代理的帳號從後續請求開始使用新地址,舊出口檢測結果也會清除。刪除前,先把所有帳號改綁其他代理或選回「預設網路出口」;仍有綁定帳號的代理不能刪除。

每個代理程式的測試、編輯、刪除操作顯示為帶有說明提示的圖示。 「刪除失效代理」會先要求確認,一鍵刪除最近 30 分鐘內偵測為連線失敗、且沒有綁定帳號的代理。已綁定、未偵測、或僅位置查詢失敗的代理程式不會被刪除。確認時服務端會再次檢查這些條件,因此實際刪除數可能與確認前顯示的數量不同。

代理故障使帳號進入冷卻時,在該帳號的「調度設定」中點選「解除冷卻」,再執行「驗證連線」。如果帳號顯示「需要重新授權」,還需重新授權;僅切換代理不會更新憑證。容器部署時,代理位址裡的 127.0.0.1 指向 SubLane 容器本身,應填入該程序實際可達的位址。

安全與介面

代理位址在 SQLite 中使用實例金鑰加密。備份時應同時保存資料庫和金鑰。管理介面只允許已啟用的管理員會話訪問,寫入操作還要求同源;清單回應只傳回不含認證資訊的位址與最近偵測結果。手動偵測會向 IPinfo 提供公開的代理程式出口 IP,不會在背景自動查詢位置。代理增刪改與帳號綁定依資源 ID 記錄在管理審計中;整批匯入和批次刪除失效代理各產生一條不帶單項 ID 的事件。原始地址和密碼都不會寫入審計。

介面用途
GET /api/proxies列出目前工作區的代理與綁定帳號數。
POST /api/proxies用 {"name":"...","url":"..."} 新建。
POST /api/proxies/import用 {"text":"..."} 原子導入多行代理。
POST /api/proxies/prune刪除近期連線失敗且未綁定帳號的代理;請求體為 {},返回 deleted_count。
POST /api/proxies/{id}/check手動測試出口 IP 與位置;請求體使用空 JSON 物件({})。
PUT /api/proxies/{id}更新名稱和地址;url 為空時保留舊地址。
DELETE /api/proxies/{id}刪除未綁定的代理;請求體使用空 JSON 物件({})。
PUT /api/accounts/{id}/proxy用 {"proxy_id":"..."} 綁定,或用 {"proxy_id":""} 解綁。

新建帳號時,POST /api/accounts/import 和 POST /api/accounts/oauth 也接受可選的 proxy_id。位址或匯入行無效回傳 HTTP 400;代理程式不存在或不屬於目前工作區回傳 404;重名、達到數量上限、刪除仍在使用的代理、偵測期間代理位址已修改,傳回 409。

自動化測試使用合成代理驗證路由,包括 HTTPS CONNECT。它不能證明你的實際代理和訂閱帳號可用;請在部署環境中執行「驗證連線」。