Jason

I'm not only a programmer, but a gentleman

  • 主页
  • 防撤回

Jason

I'm not only a programmer, but a gentleman

  • 主页
  • 防撤回

用Terminal快速设置代理

2018-11-03

装了系统代理之后, 可以在 系统设置-网络-高级设置里面 设置代理规则

但有时有多个代理规则需要手动切换, 靠手动通过gui更改非常麻烦, 这边介绍一个命令 networksetup

GUI中的配置 Terminal中的命令
代理自动配置 networksetup -setautoproxyurl <networkservice> <url>
自动代理开关 networksetup -setautoproxystate <networkservice> <on off>
Http代理配置 networksetup -setwebproxy <networkservice> <domain> <port number> <authenticated> <username> <password>
Http代理开关 networksetup -setwebproxystate <networkservice> <on off>
Https代理配置 networksetup -setsecurewebproxy <networkservice> <domain> <port number> <authenticated> <username> <password>
Https代理开关 networksetup -setsecurewebproxystate <networkservice> <on off>

现在我有两个代理需要切换: 一个是番羽土啬用的, 一个是Charles抓包用的. 前者设置自动代理配置, 后者设置Http/Https代理

自己写一份bash脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#! /bin/bash

network_service=("Wi-Fi" "4G" "USB_LAN")

function set_v2ray(){

url='http://127.0.0.1:8070/proxy.pac'

if [ -n $* ]
then
if test $* = "off"
then state="off"
else
state="on"
fi
fi

for ns in ${network_service[*]}
do
networksetup -setautoproxyurl "$ns" "$url"
networksetup -setautoproxystate "$ns" "$state"
done

}

function set_charles(){

port=8888

if [ -n $* ]
then
if test $* = "off"
then state="off"
else
state="on"
fi
fi

for ns in ${network_service[*]}
do
networksetup -setwebproxy "$ns" 127.0.0.1 $port
networksetup -setsecurewebproxy "$ns" 127.0.0.1 $port
networksetup -setwebproxystate "$ns" $state
networksetup -setsecurewebproxystate "$ns" $state
done

}

if [ -z "$1" ]
then
exit
fi

if test $1 = 'v2ray'
then
set_v2ray $2
elif test $1 = 'charles'
then
set_charles $2
fi

把脚本命名为.proxyconf, 再加上可执行权限 chmod +x ./.proxyconf

这份脚本的基本使用方法是

1
2
3
4
./.proxyconf v2ray on 
./.proxyconf v2ray off
./.proxyconf charles on
./.proxyconf charles off

为了设置方便 给加两个alias:

1
2
alias proxy_v2ray='./.proxyconf v2ray on;'
alias proxy_charles='./.proxyconf charles on; ./.proxyconf v2ray off;'

注意在设置了自动代理模式之后, 下面的http和https代理会被忽略, 所以得把前一个给关掉

个人开发者使用支付宝接口
自定义Yilia
© 2022 Jason 浙ICP备17036515号-2
Hexo Theme Yilia by Litten