如何在 Mac OS 中使用命令行更改代理设置?

fla*_*ker 28 mac shell proxy

我使用的是 Mac OS,有时需要使用代理来完成一些工作,因此我需要经常更改代理设置。但是在系统偏好设置中更改代理设置非常麻烦。

有没有办法可以使用命令行更改我的代理设置?使用 shell 命令还是一些工具?

小智 28

编辑:我假设您实际上是指 Mac OS X,而不是 Mac OS。

您可以使用命令行工具“networksetup”

有一个联机帮助页 - networksetup(8)

man networksetup
Run Code Online (Sandbox Code Playgroud)

您会在其中找到许多代理设置选项:

              [-setftpproxy networkservice domain portnumber authenticated username password]
              [-setftpproxystate networkservice on | off] [-getwebproxy networkservice]
              [-setwebproxy networkservice domain portnumber authenticated username  password]
              [-setwebproxystate networkservice on | off] [-getsecurewebproxy networkservice]
              [-setsecurewebproxy networkservice domain portnumber authenticated username password]
              [-setsecurewebproxystate networkservice on | off] [-getstreamingproxy networkservice]
              [-setstreamingproxy networkservice domain portnumber authenticated username password]
              [-setstreamingproxystate networkservice on | off] [-getgopherproxy networkservice]
              [-setgopherproxy networkservice domain portnumber authenticated username password]
              [-setgopherproxystate networkservice on | off] [-getsocksfirewallproxy networkservice]
              [-setsocksfirewallproxy networkservice domain portnumber authenticated username password]
              [-setsocksfirewallproxystate networkservice on | off] [-getproxybypassdomains networkservice]
              [-setproxybypassdomains networkservice domain1 [domain2] [...]] [-getpassiveftp networkservice]
Run Code Online (Sandbox Code Playgroud)

或者,如果您只需要为 wget 或 curl 之类的东西设置代理,那么您可以使用相当通用的“http_proxy”和“ftp_proxy”环境变量。

例如在 bash 中:

export http_proxy=http://my.proxy.com:1234
Run Code Online (Sandbox Code Playgroud)

其中“1234”是端口号。

干杯

南卡罗来纳州


小智 11

使用 networksetup 设置代理:(networksetup -listallnetworkservices在此之前检查可用的适配器)

networksetup -setwebproxy "Wi-fi" 127.0.0.1 8080
Run Code Online (Sandbox Code Playgroud)

如果需要,您可以使用以下语法设置身份验证:[-setwebproxy networkservice domain portnumber authenticated username password]

打开或关闭代理:

networksetup -setwebproxystate "Wi-fi" off
Run Code Online (Sandbox Code Playgroud)

查看代理状态:

networksetup -getwebproxy "Wi-Fi"
Run Code Online (Sandbox Code Playgroud)


ccp*_*zza 6

扩展swisscheese对 SOCKS5 代理特定情况的回答(即使用ssh -D、shadowsocks、v2ray 等生成的类型)。

鉴于您使用例如配置代理服务器

networksetup -setsocksfirewallproxy wi-fi localhost 1080
Run Code Online (Sandbox Code Playgroud)

接口名称不区分大小写

你可以稍后关闭它

networksetup -setsocksfirewallproxystate wi-fi off
Run Code Online (Sandbox Code Playgroud)

然后再继续

networksetup -setsocksfirewallproxystate wi-fi on
Run Code Online (Sandbox Code Playgroud)

即第一个命令只需要运行一次,然后您可以根据需要激活/停用代理。

用于设置代理的 GUI

这是一个位栏插件,它包装了上面的命令并使它们作为 macos 菜单栏中的下拉选项可用。该插件还支持 http 和 PAC 代理。Bitbar是一个开源应用程序,允许将任何命令的输出放到菜单栏(以及通过 bash/python/ruby/node/go 脚本启动任何命令)。免责声明:我不隶​​属于位栏作者。

在此处输入图片说明

另一个专为触摸条用户设计的 GUI 解决方案:

使用 MTMR,您可以使用shellScriptTitledButtonJSON 配置文件中的 来从 mac touch-bar 运行特定命令。