很多代理工具只是设置了浏览器,终端和git都没有开启代理,输入命令行太麻烦,所以可以用这个脚本设置、检测和取消。

2025-04-09T08:52:47.png

使用方法

1、创建一个文件

文件名proxy_tool.sh,下面是脚本内容

#!/bin/bash

# 修改为你自己使用的 shell 配置文件
SHELL_CONFIG="$HOME/.zshrc"  # 如果你用 bash,请改为 ~/.bashrc

# 代理地址配置
SOCKS5_PROXY="socks5://127.0.0.1:1089"
HTTP_PROXY="http://127.0.0.1:8889"

set_proxy() {
  echo "选择代理类型:"
  echo "1. SOCKS5 (127.0.0.1:1089)"
  echo "2. HTTP   (127.0.0.1:8889)"
  read -p "请输入选项 [1/2]: " proxy_type

  if [ "$proxy_type" == "1" ]; then
    PROXY=$SOCKS5_PROXY
  elif [ "$proxy_type" == "2" ]; then
    PROXY=$HTTP_PROXY
  else
    echo "❌ 无效选择"
    exit 1
  fi

  export http_proxy=$PROXY
  export https_proxy=$PROXY
  export all_proxy=$PROXY
  echo "✅ 当前终端代理已设置为: $PROXY"

  read -p "💾 是否将代理写入配置文件以永久生效?(y/n): " yn
  if [[ "$yn" =~ ^[Yy]$ ]]; then
    echo -e "\n# [Added by proxy_tool]" >> "$SHELL_CONFIG"
    echo "export http_proxy=$PROXY" >> "$SHELL_CONFIG"
    echo "export https_proxy=$PROXY" >> "$SHELL_CONFIG"
    echo "export all_proxy=$PROXY" >> "$SHELL_CONFIG"
    echo "✅ 已写入,请执行 source ~/.zshrc 以生效"
  fi

  # 设置 Git 代理
  set_git_proxy
}

unset_proxy() {
  unset http_proxy
  unset https_proxy
  unset all_proxy
  echo "✅ 当前终端代理已取消"

  read -p "🧹 是否同时从配置文件中清除代理?(y/n): " yn
  if [[ "$yn" =~ ^[Yy]$ ]]; then
    sed -i '' '/# \[Added by proxy_tool\]/,+3d' "$SHELL_CONFIG"
    echo "✅ 已从 $SHELL_CONFIG 中移除代理设置"
  fi

  # 取消 Git 代理
  unset_git_proxy
}

set_git_proxy() {
  echo "设置 Git 代理..."
  git config --global http.proxy $http_proxy
  git config --global https.proxy $https_proxy
  echo "✅ Git 代理已设置为: $http_proxy"
}

unset_git_proxy() {
  echo "取消 Git 代理..."
  git config --global --unset http.proxy
  git config --global --unset https.proxy
  echo "✅ Git 代理已取消"
}

check_proxy() {
  echo "🔍 检查当前终端代理设置..."

  if [ -z "$http_proxy" ] && [ -z "$https_proxy" ] && [ -z "$all_proxy" ]; then
    echo "❌ 当前没有设置代理"
  else
    echo "✅ 当前代理设置如下:"
    echo "http_proxy: $http_proxy"
    echo "https_proxy: $https_proxy"
    echo "all_proxy: $all_proxy"
  fi

  # 检查 Git 代理设置
  git_http_proxy=$(git config --global --get http.proxy)
  git_https_proxy=$(git config --global --get https.proxy)

  if [ -z "$git_http_proxy" ] && [ -z "$git_https_proxy" ]; then
    echo "❌ Git 没有设置代理"
  else
    echo "✅ Git 代理设置:"
    echo "Git http.proxy: $git_http_proxy"
    echo "Git https.proxy: $git_https_proxy"
  fi

  echo ""
  echo "🌐 正在检测公网 IP..."
  ip=$(curl -s --max-time 5 ifconfig.me)
  country=$(curl -s --max-time 5 https://ipapi.co/$ip/country_name/)
  echo "当前 IP: $ip"
  echo "归属地: $country"

  if [[ "$country" != "China" && "$country" != "中国" ]]; then
    echo "✅ 当前网络似乎在使用 VPN/代理"
  else
    echo "❌ 当前网络似乎没有使用 VPN 或使用的是国内代理"
  fi
}

view_proxy_params() {
  echo "🔍 查看当前代理设置的详细参数..."
  
  # 显示所有代理环境变量
  echo "http_proxy: $http_proxy"
  echo "https_proxy: $https_proxy"
  echo "all_proxy: $all_proxy"
  
  # 检查 Git 代理设置
  git_http_proxy=$(git config --global --get http.proxy)
  git_https_proxy=$(git config --global --get https.proxy)

  if [ -z "$git_http_proxy" ] && [ -z "$git_https_proxy" ]; then
    echo "❌ Git 没有设置代理"
  else
    echo "✅ Git 代理设置:"
    echo "Git http.proxy: $git_http_proxy"
    echo "Git https.proxy: $git_https_proxy"
  fi

  echo ""
  echo "🌐 正在检测公网 IP..."
  ip=$(curl -s --max-time 5 ifconfig.me)
  country=$(curl -s --max-time 5 https://ipapi.co/$ip/country_name/)
  echo "当前 IP: $ip"
  echo "归属地: $country"

  if [[ "$country" != "China" && "$country" != "中国" ]]; then
    echo "✅ 当前网络似乎在使用 VPN/代理"
  else
    echo "❌ 当前网络似乎没有使用 VPN 或使用的是国内代理"
  fi
}

show_menu() {
  echo "========= 终端代理工具 ========="
  echo "1. 设置代理"
  echo "2. 取消代理"
  echo "3. 检查代理状态"
  echo "4. 查看代理参数"
  echo "5. 退出"
  echo "================================"
}

while true; do
  show_menu
  read -p "请选择操作 [1-5]: " choice
  case $choice in
    1) set_proxy ;;
    2) unset_proxy ;;
    3) check_proxy ;;
    4) view_proxy_params ;;
    5) echo "👋 Bye~"; exit 0 ;;
    *) echo "❌ 无效选项,请重新输入" ;;
  esac
  echo ""
done

2、设置权限

将该脚本文件权限设置为可运行,可在终端命令执行

chmod +x proxy_tool.sh

3、运行脚本

在终端执行

./proxy_tool.sh

☟☟可点击下方广告支持一下☟☟

最后修改:2025 年 04 月 09 日
请我喝杯可乐,请随意打赏: ☞已打赏列表