省去手动设置的繁琐流程
可自动取消代理

背景

自动化项目中可能需要自动设置手机代理,配合mitmproxy使用

自动设置代理shell脚本

#!/bin/bash

if [ "$1" == "set" ];then
    if [ -n "$2" ];then
        echo "设置自定义代理 $2"
        adb shell settings put global http_proxy $2
    else
        # 获取 IP
        ip=$(ifconfig en0 | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p')
        echo $ip
        count=$(echo $ip | tr ' ' '\n' | wc -l )
        if [ $count -gt 1 ];then
        echo "多个ip,请手动选择一个"
        exit
        fi
        default_proxy=${ip}":8888"
        echo "本机IP为: $default_proxy"
        echo "设置本机IP代理 $default_proxy"
        adb shell settings put global http_proxy $default_proxy
    fi
elif [ "$1" == "clean" ];then
    echo "清除代理成功"
    adb shell settings put global http_proxy :0
else
    echo "Useage: proxy [set|clean] [ip]:[port]"
    echo ""
    echo "    set          设置当前电脑ip为手机代理,且端口为8888"
    echo "    set ip:port  设置指定的ip及端口"
    echo "    clean        删除代理"
    echo ""
fi

如我保存为easy_proxy.sh到 ~/Documents 目录下

配置

vim ~/.zshrc
# 添加如下alias
alias proxy="sh ~/Documents/easy_proxy.sh"

效果

$ proxy
Useage: proxy [set|clean] [ip]:[port]

    set          设置当前电脑ip为手机代理,且端口为8888
    set ip:port  设置指定的ip及端口
    clean        删除代理
$ proxy set 
$ proxy set 192.168.111.1:8899
$ proxy clean

注意:必须通过proxy clean命令取消代理,在手机wifi高级设置中不可见,不可手动取消

扩展阅读