note/tech/macos命令行设置网络代理.md
2025-11-19 10:16:05 +08:00

3.2 KiB
Raw Permalink Blame History

设置网络代理的脚本

#!/bin/zsh
# 获取脚本的绝对路径
SCRIPT_PATH=$(realpath "$0")
# 获取脚本所在目录
SCRIPT_DIR=$(dirname "$SCRIPT_PATH")
# 输出脚本所在目录
echo "脚本所在目录路径: $SCRIPT_DIR"
# 进入脚本所在目录
cd "$SCRIPT_DIR"
# 输出当前目录,确认已进入脚本所在目录
echo "当前路径是:$(pwd)将会创建naiveproxy目录"
mkdir -p ~/naiveproxy
echo "创建$(pwd)/naiveproxy目录"
cp naive ~/naiveproxy
cp config.json ~/naiveproxy
cp -r run_proxy.app ~/naiveproxy
echo "复制所需文件进naiveproxy目录"
cp -r run_proxy.app /Volumes/Macintosh\ HD/Applications
echo "复制run_proxy到应用程序列表"
networksetup -setautoproxyurl Wi-Fi https://pac.disbaidu.com/gfw2.pac
#设置wifi的代理规则pac自动代理
echo "Install done! "
echo "在应用程序列表中点击run_proxy。"

其中: naive 和config.json 请自行下载并放到脚本所在目录下。 下载地址:https://github.com/klzgrad/naiveproxy/releases

run_proxy.app 请在自动化脚本中自行创建: 打开应用程序Automator 或 自动化 选择工作流Workflow应用程序 选择服务Service运行Shell脚本(run shell script) 输入脚本内容:

pkill naive
~/naiveproxy/naive ~/naiveproxy/config.json 2>&1
exit

保存并运行。 解释: pkill naive杀死之前运行的naive进程 ~/naiveproxy/naive ~/naiveproxy/config.json 2>&1运行naiveproxy将日志输出到控制台 exit退出脚本

自动下载naiveproxy并运行脚本

#!/bin/zsh
# 获取脚本的绝对路径
SCRIPT_PATH=$(realpath "$0")
# 获取脚本所在目录
SCRIPT_DIR=$(dirname "$SCRIPT_PATH")
# 输出脚本所在目录
echo "脚本所在目录路径: $SCRIPT_DIR"
# 进入脚本所在目录
cd "$SCRIPT_DIR"
# 输出当前目录,确认已进入脚本所在目录
echo "当前路径是:$(pwd)将会创建naiveproxy目录"
# 判断当前是否存在naiveproxy目录如果不存在则创建
if [! -d "naiveproxy" ]; then
mkdir -p naiveproxy
echo "创建$(pwd)/naiveproxy目录"
fi
cd naiveproxy
# 判断是否存在naive文件如果不存在则下载
if [! -f "naive" ]; then
    echo "naive文件不存在开始下载"
# 判断当前环境是M1还是x86下载对应的naiveproxy
    if [ $(uname -m) = "arm64" ]; then
        echo "当前环境是M1下载M1版naiveproxy"
        curl -L -o naive.tar.xz https://pan.disbaidu.com/download/naive/naiveproxy-mac-arm64.tar.xz
    else
        echo "当前环境是x86下载x86版naiveproxy"
        curl -L -o naive.tar.xz https://pan.disbaidu.com/download/naive/naiveproxy-mac-x64.tar.xz
    fi
    # 解压naive文件
    echo "解压naive文件"
    tar -xf naive.tar.xz
    mv naiveproxy-* naivetmp
    cp naivetmp/naive naive
    rm -rf naivetmp
    rm naive.tar.xz
    # 判断config.json文件是否存在如果不存在创建配置文件并写入配置
    if [! -f "config.json" ]; then
        echo "config.json文件不存在创建配置文件并写入配置"
        echo '{"listen": "http://127.0.0.1:1099","proxy": "https://onghan:onghan@o.disbaidu.com","log": "o.log"}' > config.json
        fi