编程崽

登录

一叶在编程苦海沉沦的扁舟之上,我是那只激情自射的崽

Mac终端代理工具

Mac终端代理工具

这篇文章,不是讲如何使用翻墙代理工具的,而是在自己先配置了翻墙后,如何让某些特殊场景,也能走翻墙的。

使用指令配置终端走已配置好的代理

一般使用了代理软件后,是无法代理终端的,这时候就可以通过一些设置和脚本,使终端能够通过代理。

因为ping使用的协议不是http或https协议,所以即使代理成功,使用ping仍然是无法走代理的,所以这时候,可以使用curl www.google.com指令,查看是否代理成功。

1. 只对当前终端生效,新开窗口无效的临时配置,需要在终端中输入以下

sh 复制代码
# 要输入的格式
export http_proxy=protocol://host:port;export https_proxy=protocol://host:port

# 比如使用 socks5 协议、代理的地址为当前机器的1080端口,则输入的内容为
export http_proxy=socks5://127.0.0.1:1080;export https_proxy=socks5://127.0.0.1:1080

# 比如使用 http 协议、代理的地址为当前机器的1081端口,则输入的内容为
export http_proxy=http://127.0.0.1:1081;export https_proxy=http://127.0.0.1:1081

2. 全局终端生效~/目录下新建.bash_profile,添加内容(当然里面的host和port,同上一条需要改成自己的设备的代理):

sh 复制代码
# 配置终端代理
# 先判断有没有代理,如果有才走代理
thisProxy=`lsof -i:1087 | grep privoxy`;
if [ "$thisProxy" != "" ]; then
export http_proxy="http://localhost:1081"
export https_proxy="http://localhost:1081"
fi

保存,关闭,打开一个终端输入以下指令更新文件:

sh 复制代码
source ~/.bash_profile

然后所有新开的终端,都可以走代理了,如果本身就有这个文件,则直接在文件最底部加上上面的代码即可。

但是如果发现不行,那么请执行下面的指令,手动重载一下这个文件,使其立即生效:

配置终端走代理的软件proxifier

如果是mac的话,即便SS开了全局,终端也是不走代理的(安全限制),可以考虑:

  1. 用类似proxychains,将请求代码到SS。
  2. 用proxifier,将终端请求代理到SS。
  3. 用VPN。

这里我使用方案2成功,所以记录一下过程 。

大致原理说明

首先说明此软件的工作步骤。

平时用的科学上网的翻墙代理,这里就叫做代理软件,正常它可以代理大部分软件的请求,但是不能代理终端和node服务中的请求,所以需要我们的proxifier。

代理软件需要自行去找去买去配置了,这里我自己用的是 TrojanX,用户自行安装配置好代理软件后,就可以进行下面的流程了。

下载proxifier软件,安装和破解

官网地址:https://www.proxifier.com/

可以去官网下载,收费软件,免费试用30天,可以使用下面的注册码破解。

sh 复制代码
Proxifier v3.*版本:
用户名:mac
注册码:3CWNN-WYTP4-SD83W-ASDFR-84KEA

然后解压、常规流程进行安装,期间在下面的系统设置处,需要点一下信任软件。

2. 设置本地代理的监听地址

我自己的代理软件就是上面说的 TrojanX 了,这个代理软件会启动一个本地监听,监听本地的 127.0.0.1的1080端口,所有访问了这个地址:端口的请求,都会被 TrojanX 代理到国外。

此时需要按照下图所示的步骤,给 Proxifier 添加代理目标,在 Proxifier 中走代理的请求,会被重定向到这个地址:端口,其实也就是 TrojanX 监听的那个地址:端口。

配置规则

下一步,就是点击Rules,来配置一下自己的规则。

先说一下每一列的作用:

  • Name:自定义的规则名称;
  • Applications:软件名称,这个软件发出的请求,走这条规则(不写就是Any了);
  • Target Hosts:ip地址,访问这个ip的请求,走这条规则(不写就是Any了);
  • Target Ports:端口好,请求访问的是这个端口号的,走这条规则(不写就是Any了);
  • Action:此规则的Profile处理方案:
    • Direct:假装Proxifier不存在,直接放走这个请求;
    • Block:拦截,直接把这个请求摁死,被proxifier卡死,发不出去了;
    • Proxy ...:配置的代理方案,也就是上一步配置的那个,会把走这条规则的请求转发过去。

当一个请求发出时,由上而下依次对比,符合便应用规则,并停止对比。

下面是我的配置:

配置规则时的一个小坑

注意,配置规则这里有一个小坑,就是Applications生效软件的名字。

软件是可以点击加号,从软件列表中选择软件的。。。但其实,它获取的名字是错误的。

正确的方式,是先让所有请求走代理,然后在请求列表监控中,找到需要被代理的请求,查看他Application是什么,再把那个写到规则的软件名字项中,才是对的,有点太坑了。

4. 修改由谁来解析DNS

如下图所示,在DNS中把红框中的对钩修改为和我一样的,这个实测是需要改的,否则有时终端不会走这个工具,比如我用nvm官网提供的curl的方式安装nvm时。

两句的意思分别为:

Detect DNS settings automatically:自动检测DNS设置

Resolve hostnames through proxy: 通过代理解析主机名

这里是改为了让代理去解析主机

5. 其他说明和参考

执行了上面几步,终端代理也就完成了,在我这里,node服务已经可以连接墙外socket、调用墙外接口了。

但如果有人还是没成功,可以参考一下下面这个地址的配置。

我的流程也是参考此教程来的,但他的是window系统,我的是Mac,稍微有些不同,边实边琢磨出来的,地址如下:https://blog.csdn.net/wu_cai_/article/details/80271478

此外,后面这个链接中,比较详细的描述了此软件的用法,可以学习一下:https://www.zybuluo.com/yiranphp/note/611721