Total Pageviews

Wednesday, 23 March 2022

在Mac的终端里面,设置safari浏览器的http代理/socks代理(safari浏览器的代理就是所谓的‘mac系统的代理‘)

sudo networksetup -setwebproxy "Wi-Fi" 127.0.0.1 3080

sudo networksetup -setsecurewebproxy "Wi-Fi" 127.0.0.1 3080


取消http proxy的命令:

sudo networksetup -setwebproxystate "Wi-Fi" off

sudo networksetup -setsecurewebproxystate "Wi-Fi" off


参考:https://zhuanlan.zhihu.com/p/23910924

这里的127.0.0.1 3080是本地机器上的某个http proxy的地址和监听的端口号。


本地机器上的某个http proxy程序,建议使用pyproxy-by-impakho,详见:

https://briteming.blogspot.com/2016/07/pyproxy.html


或者goflyway,详见https://briteming.blogspot.com/2017/10/go-goflyway.html


或者mproxy-by-examplecode,详见https://briteming.blogspot.com/2018/05/mproxy.html


或者sandwich-system-proxy,详见https://briteming.blogspot.com/2021/07/sandwich-system-proxy.html


建议使用第一个,比较简单省事。


在Mac的终端里面,设置safari浏览器的socks代理的命令:

sudo networksetup -setsocksfirewallproxy "Wi-Fi" 127.0.0.1 1080

这里的127.0.0.1 1080是本地机器上的某个socks proxy的地址和监听的端口号。


取消socks proxy的命令:

sudo networksetup -setsocksfirewallproxystate "Wi-Fi" off


以前的某天发现,在系统偏好设置 -> 网络 -> 高级 -> 代理

里面,无法设置代理了,因为左侧的小方框全部变成灰色不可用的状态。tnnd, 终于又能用safari浏览器翻墙了。


相关帖子:https://briteming.blogspot.com/2022/03/mac-mailapp-pacsocks.html

------------------


Mac快速设置、打开和关闭Web代理的Shell命令


缘由(痛点)
每次在Mac上设置Web代理,都需要点开"系统偏好设置 -- 网络 -- 高级 -- 代理",然后分别设置Web代理(HTTP)和安全Web代理(HTTPS),设置完后,还要点"好 -- 应用"。如果要关闭Web代理也是如此,只是点到代理设置面板后,只需要取消勾选Web代理和安全Web代理。

个人觉得这种操作很繁琐,对于一个经常需要改Web代理的人来说,这简直是灾难性的重复操作。所以这段时间学了些Linux Shell脚本编程的知识,写了两个Shell命令用来一键设置和开关Web代理。

设置和打开Web代理的Shell脚本:
#!/bin/bash
#
export  PATH= /usr/local/sbin : /usr/bin : /bin : /usr/sbin : /sbin
clear
networkservice=$(networksetup -listallnetworkservices |  head  -n 2 |  tail  -n 1)   #获取Mac当前使用的网络名称
echo  Open web proxy  for  networkservice: $networkservice
if  [  "$2"  !=  ""  ];  then
     sudo  networksetup -setwebproxy $networkservice $1 $2    #设置Web HTTP代理
     sudo  networksetup -setsecurewebproxy $networkservice $1 $2    #设置Web HTTPS代理
fi
sudo  networksetup -setwebproxystate $networkservice on    #打开Web HTTP代理
sudo  networksetup -setsecurewebproxystate $networkservice on   #打开Web HTTPS代理
echo  Done

如何使用这个脚本
将上面的脚本保存为一个文件,比如叫proxyon,然后将这个proxyon文件移动到某个bin目录下,如:
/usr/local/bin/

然后我们就可以在终端通过这个命令快速设置和打开Web代理了:
sudo  proxyon   #仅打开Web代理
sudo  proxyon 115.231.175.68 8081  #设置并打开Web代理

关闭Web代理的Shell脚本:
#!/bin/bash
#
export  PATH= /usr/local/sbin : /usr/bin : /bin : /usr/sbin : /sbin
clear
networkservice=$(networksetup -listallnetworkservices |  head  -n 2 |  tail  -n 1)    #获取Mac当前使用的网络名称
echo  Close web proxy  for  networkservice: $networkservice
sudo  networksetup -setwebproxystate $networkservice off    #关闭Web HTTP代理
sudo  networksetup -setsecurewebproxystate $networkservice off    #关闭Web HTTPS代理
echo  Done

如何使用这个脚本
同proxyon,我们将上面的脚本保存为一个文件,比如叫proxyoff,然后将这个proxyff文件移动到某个bin目录下,如:
/usr/local/bin/

然后我们就可以在终端通过这个命令快速关闭Web代理了:
sudo  proxyoff   #关闭Web代理

打算下次再写一个自动获取互联网上可用网络代理的脚本。

原文链接:https://blog.csdn.net/u011884440/article/details/72974311
---------

结合Shuttle实现一键配置safari浏览器的http代理

在实际场景中,我们通常需要同时开启或关闭HTTP、HTTPS两种协议的网络代理,这类操作如此高频,要是还能通过点击一个按钮就实现切换,那就优雅多了。

幸运的是,这种优雅的方式还真能实现,只需要结合使用Shuttle这么一款小工具。

Shuttle,简而言之,它可以将一串命令映射到macOS顶部菜单栏的快捷方式。我们要做的很简单,只需要将要实现的任务拼接成一条串行的命令即可,然后就可以在系统菜单栏中点击按钮运行整条命令。

例如,在Terminal中,要想在不手动输入sudo密码的情况下实现同时关闭HTTP和HTTPS的网络代理,就可以通过如下串行命令实现:

echo <password> | sudo -S networksetup -setwebproxystate 'Wi-Fi' off && sudo networksetup -setsecurewebproxystate 'Wi-Fi' off

类似地,我们还可以实现同时开启HTTP和HTTPS网络代理,更有甚者,我们还可以实现在同时开启HTTP和HTTPS网络代理后,启动mitmproxy抓包工具。

这一切配置都可以在Shuttle的配置文件~/.shuttle.json中完成:

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
"hosts": [
  {
    "mitmproxy": [
      {
        "name": "Open mitmproxy",
        "cmd": "echo <password> | sudo -S networksetup -setwebproxy 'Wi-Fi' 127.0.0.1 8080 && sudo networksetup -setsecurewebproxy 'Wi-Fi' 127.0.0.1 8080 && workon mitmproxy && mitmproxy -p 8080"
      }
    ],
    "HTTP(S) Proxy": [
      {
        "name": "Turn on HTTP(S) Proxy",
        "cmd": "echo <password> | sudo -S networksetup -setwebproxy 'Wi-Fi' 127.0.0.1 8080 && sudo networksetup -setsecurewebproxy 'Wi-Fi' 127.0.0.1 8080"
      },
      {
        "name": "Turn off HTTP(S) Proxy",
        "cmd": "echo <password> | sudo -S networksetup -setwebproxystate 'Wi-Fi' off && sudo networksetup -setsecurewebproxystate 'Wi-Fi' off"
      },

    ],
  },
]

配置十分简洁清晰,不用解释也能看懂。完成配置后,在macOS顶部菜单栏中就会出现如下效果的快捷方式:


后续,我们就可以通过快捷方式实现一键切换HTTP(S)代理配置、一键启动mitmproxy抓包工具了。

说到mitmproxy这款开源的抓包工具,只能说相见恨晚,第一次使用它时就被惊艳到了,情不自禁地想给它点个赞!自从使用了mitmproxy,我现在基本上就不再使用FiddlerCharles了,日常工作中HTTP(S)抓包任务全靠它搞定。

哦对了,mitmproxy不仅可以实现抓包任务,还可以跟locust性能测试工具紧密结合,直接将抓取的数据包生成locust脚本啊!

mitmproxy如此强大,本文就不再多说了.


No comments:

Post a Comment