跳到主要内容

代理端口问题

zsh配置1​

  • zsh配置: .zshrc
bash
# ===== 配置代理端口 =====
export PROXY_PORT="1087" # 可覆盖默认的代理端口
source ~/.zsh_auto_proxy
  • ~/.zsh_auto_proxy
bash
# ~/.zsh_auto_proxy

PROXY_HOST="${PROXY_HOST:-127.0.0.1}"
PROXY_PORT="${PROXY_PORT:-1087}"
PROXY_TEST_URL="${PROXY_TEST_URL:-https://example.com}"

# 通过代理访问测试地址
# 检测的作用是:确认“代理端口不仅存在,而且能真正通过代理访问外部网络”。
_proxy_available() {
env -u HTTP_PROXY -u HTTPS_PROXY -u ALL_PROXY \
-u http_proxy -u https_proxy -u all_proxy \
curl -fsS \
--proxy "http://${PROXY_HOST}:${PROXY_PORT}" \
--connect-timeout 2 \
--max-time 5 \
"$PROXY_TEST_URL" \
-o /dev/null
}

auto_proxy() {
if _proxy_available; then
export HTTP_PROXY="http://${PROXY_HOST}:${PROXY_PORT}"
export HTTPS_PROXY="http://${PROXY_HOST}:${PROXY_PORT}"
export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"
export NO_PROXY="localhost,127.0.0.1"
export no_proxy="$NO_PROXY"
export NODE_USE_ENV_PROXY=1
else
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY
unset http_proxy https_proxy all_proxy
unset NO_PROXY no_proxy NODE_USE_ENV_PROXY
fi
}

autoload -Uz add-zsh-hook
add-zsh-hook precmd auto_proxy
auto_proxy

zsh配置2​

bash
PROXY_HOST="${PROXY_HOST:-127.0.0.1}"
PROXY_PORT="${PROXY_PORT:-1087}"

# 只检查本地代理端口是否启动
_proxy_available() {
nc -z "${PROXY_HOST}" "${PROXY_PORT}" >/dev/null 2>&1
}

proxy_on() {
export HTTP_PROXY="http://${PROXY_HOST}:${PROXY_PORT}"
export HTTPS_PROXY="http://${PROXY_HOST}:${PROXY_PORT}"

export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"

export NO_PROXY="localhost,127.0.0.1,::1"
export no_proxy="$NO_PROXY"

export NODE_USE_ENV_PROXY=1
}

proxy_off() {
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY
unset http_proxy https_proxy all_proxy
unset NO_PROXY no_proxy
unset NODE_USE_ENV_PROXY
}

proxy_refresh() {
if _proxy_available; then
proxy_on
else
proxy_off
fi
}

# shell 启动时检测一次
proxy_refresh