Skip to content

Latest commit

 

History

History
82 lines (64 loc) · 3.01 KB

即便我开了全局梯子,为什么终端的请求还是不走梯子?.md

File metadata and controls

82 lines (64 loc) · 3.01 KB

这里以MacOS为例,因为我使用的是MacBook,也是在MacBook上跑通的,Windows可能要参考这个思路自己调整。

问题描述

即便我开了全局梯子,在本地开发和OpenAI相关接口的请求还是有问题,一直请求超时。报错中总是提示connect ETIMEDOUT 128.242.245.180:443之类的。

准备环境

  • Class for Windows mac版,并配置好能够科学上网
  • Vscode终端 或是 任一Mac下的终端命令行软件

问题结论

结合网上搜索的信息,基本确认shell中走的网络和代理配置后的不是同一套,需要单独配置一下。

对于mac环境,我们大部分时间都是使用命令行,因此代理配置相关的主要就是关于shell的代理配置。很奇怪shell命令行下配置的代理仅仅对shell相关的部分命令(例如wget等)生效,不是对整个机器生效(例如npm等还是要使用专门的代理)。

——摘抄自 iMac(OS X)日常开发中各种代理设置方法汇总(shell、Android Studio、gem、npm)

解决步骤

1. 获取梯子本地代理的端口号,用于配置别名

从Clash for Windows中可以很方便地获取配置命令,不需要专门自己写(如果你是mac专门版本的clash,也可以找到socks5对应的端口号,一般默认是7890)

2. 配置别名,方便快速开启关闭

# 打开用户目录下的.zshrc
> vim ~/.zshrc

# 在.zshrc末尾追加下面的内容
##############################################
# 将步骤一中获取到的命令行内容,设置为别名proxy的内容
alias proxy='export https_proxy=http://127.0.0.1:7890;export http_proxy=http://127.0.0.1:7890;export all_proxy=socks5://127.0.0.1:7890'
# 取消走代理的别名
alias unproxy='unset all_proxy;unset https_proxy;unset http_proxy'
# 用于测试是否成功的别名
alias testproxy='curl cip.cc'
##############################################

比如我的设置完长这样:

添加完成后记得按 Esc ,然后输入 wq 回车保存退出。然后执行以下命令让配置生效

source ~/.zshrc

3. 验证网络状态和别名设置效果

【开启clash的全局梯子】 ,然后验证当前网络状态

# 开启完Clash的全局梯子后,执行如下命令
> testproxy

# 得到如下输出
IP	: xxx.xxx.xxx.xxx
地址	: 中国  xx  xx
运营商	: 联通
数据二	: xx省xx市 | 联通
数据三	: �
URL	: http://www.cip.cc/xxx.xxx.xxx.xxx

此时我们可以确认,即便我们开了全局梯子,shell命令行中的请求走的依旧不是代理

# 设置shell命令走代理
> proxy

# 再执行验证
> testproxy

# 得到如下输出,是我设置的代理的地址
IP	: xxx.xxx.xxx.xxx
地址	: 亚太地区  亚太地区

数据二	: 亚太地区

数据三	: 亚太地区亚太地区

URL	: http://www.cip.cc/xxx.xxx.xxx.xxx

由上就可以确认,我们已经成功设置了shell中的代理。