01
單一指令專用代理
在支援的指令前加上 hamta,即可讓該次執行走代理,不必全域匯出變數,也不會弄亂目前的 Shell 工作階段。
終端機用 Bash 代理包裝工具
hamta 會在代理環境中包裝單次指令:讀取 JSON 設定、匯出常用代理變數、視需要驗證出口國家,再執行指令。不必修改 Shell,也不留下全域狀態。
env 模式取決於應用程式是否支援代理;proxychains 模式只攔截受支援的 TCP 流量,並非全系統 VPN。
功能
01
在支援的指令前加上 hamta,即可讓該次執行走代理,不必全域匯出變數,也不會弄亂目前的 Shell 工作階段。
02
會遵循 HTTP_PROXY / HTTPS_PROXY / ALL_PROXY 的應用程式可用 env 模式;忽略環境變數且受支援的 TCP 命令列工具則可用 proxychains 模式。
03
執行指令前可選擇透過 ipinfo.io 檢查公開 IP 所在國家,確認流量確實從預期地點送出。
使用流程
先執行 brew trust andrewmmc/tap 信任 tap,再執行 brew install andrewmmc/tap/hamta,安裝 hamta 及執行時相依套件 jq 與 curl。
執行 hamta init 建立 ~/.config/hamta/config.json,再設定代理 URL、模式及預期出口國家。
執行 hamta curl https://ipinfo.io、hamta npm install react,或其他與所選模式相容的指令。
設計理念
hamta 專注做好一件事:讓單一指令走你的代理。整套工具只是一支可一次讀完的短腳本,搭配任何文字編輯器都能修改的純 JSON 設定;沒有常駐程式、背景服務或意外行為。
hamta 的設計重點
指令參考
建立、檢視、診斷、驗證,或代理任何受支援的指令。
hamta init在 ~/.config/hamta/config.json 建立預設設定檔。
hamta config顯示目前設定。
hamta doctor檢查相依套件、設定、代理連線及目前出口 IP。
hamta verify不執行其他指令,單獨測試代理驗證。
hamta [--mode env|proxychains] [--] <command> [args...]透過設定的代理執行指令,並可單次覆寫模式。
hamta --help顯示指令用法與選項。
hamta --version顯示已安裝的 hamta 版本。
安裝
hamta 是開放原始碼軟體。信任 tap 一次後,Homebrew 會安裝 hamta 及必要的 jq、curl 相依套件。
Homebrew
信任 Andrew 的 tap,再安裝 hamta、jq 與 curl。
brew trust andrewmmc/tapbrew install andrewmmc/tap/hamtabrew upgrade hamta 輕鬆升級常見問題
讓單次指令走代理,且不污染 Shell 環境。適合程式開發代理、套件管理器、命令列工具,或任何只想在單次執行時使用特定出口 IP 的工具。
hamta 將代理環境限制在單一指令,可先驗證出口國家,也為忽略環境變數的應用程式提供 proxychains 模式;呼叫 proxychains4 前還會清除衝突的代理變數。
env 模式會匯出 HTTP_PROXY / HTTPS_PROXY / ALL_PROXY / npm 代理變數並直接執行指令。proxychains 模式則使用產生的設定透過 proxychains4 執行,適合忽略代理環境變數且受支援的 TCP 命令列工具。
支援 http://、socks4://、socks5:// 與 socks5h://。在 proxychains 模式中,socks5h:// 會寫成 SOCKS5 代理,DNS 洩漏防護則由 proxy_dns 提供。
env 模式不能,因為它只能設定代理環境變數。proxychains 模式會啟用 proxy_dns,讓攔截到的主機名稱查詢透過代理;這可降低許多 TCP 應用程式的 DNS 洩漏風險,但並非全系統保證。
必須安裝 jq 與 curl;透過 Homebrew 安裝 hamta 時會自動一併安裝。Proxychains 模式另需 proxychains-ng 4.16 或更新版本,請另外執行 brew install proxychains-ng。
hamta 是開放原始碼軟體,詳細條款請參閱 GitHub 儲存庫中的 LICENSE 檔案(英文)。