yi_Xu
菜单
置顶

在 Windows 终端中设置代理

代理软件在计算机使用中开始变得频繁,现在主要用于学术研究,为了下载文献,不得不使用学校的 VPN 服务连入校园网。而对于代理软件,代理规则的说法和配置说明,却不是明确的,为了更快的在终端中使用 git clone 命令下载 Github 的库,如何在终端中设置代理,也有许多教程,本篇文章主要说明一些代理软件方面的理解和对终端设置代理。

代理软件与代理规则

许多人认为代理软件代理后,就是全部都走了所谓的 代理 ,这里是一个误区,主要我们分为两种代理软件,一种是 VPN,一种是可以设置规则的端口代理软件。

VPN 的认识

VPN 是一种全局代理软件,这里的 全局 的概念指的是,所有的网络请求都会走代理服务器经过,这在某种程度上说,安全性由提供方支持。当然你只使用学校的 VPN 连接校园网的话,我想是不用太担心安全问题的。

可以设置规则的端口代理软件

端口代理软件,顾名思义,该软件提供的代理会代理计算机中的某一个端口。如果将系统代理设置为该代理的端口,则会被该软件代理,但是注意,被该软件代理,非被代理服务器代理。如果是内置规则或可自定义规则的代理软件,我们的网络请求在使用该软件代理后,会先去查询内部规则,在规则中规定的部分网络请求,会被该软件设置好的代理服务器代理访问。所以,使用该软件的全局代理也仅仅是电脑所有的网络请求会按照规则去访问代理或者直连或者被屏蔽。而如果该软件没有设置全局代理,设置的是系统代理,则经过该软件的网络请求只有那些使用系统代理的软件,如浏览器。大部分安装的应用可能需要自行设置代理服务器或者开启全局代理,才能实现它们的网络请求经过该软件。

还有一个名词叫做 PAC,这在部分端口代理软件中会使用,并被认为是代理规则,而开启 PAC 代理模式,则仅仅意味着所有经过端口代理的网络请求会根据 PAC 的规则去完成请求。但是未使用端口代理浏览器或者软件的话,则和直连没有区别。

为终端设置代理

说明了两种代理方式后,为终端代理才开始配置。显而易见,VPN 代理模式无需对终端设置代理,他会接管所有的网络请求,所以代理服务器能访问的,本地都能访问了。而端口代理软件对终端代理的方法则有许多,为 git 设置代理的方式也有很多,此处仅介绍我所知道的。

Windows 终端的选择

首先得说明我使用的终端是 Windows PowerShell,并不是 cmd,甚至于我使用的是 win10 中的 Terminal,不过 Terminal是集成终端,我使用的默认界面是 Windows PowerShell。所以归根结底,使用的终端是 Windows PowerShell。但是我都会提到相关的设置。

cmd 设置代理

由于 cmd 终端的广泛流传,我先将 cmd 代理设置的方式列出:

1
2
set http_proxy=http://127.0.0.1:7890
set https_proxy=http://127.0.0.1:7890

每次在打开的 cmd 终端中执行这两段命令,会让终端中的所有命令走端口代理软件的代理。(注意:此处非走代理服务器,而是走代理软件,还会通过代理规则的判断)

当然这是临时命令,重新代理终端需要重新输入。如果想要永久设置代理,我建议是使用自定义配置,使每次代理 cmd 窗口时,运行如上命令。

  1. 新建一个 cmd_init.cmd,将上面的命令放入其中。
  2. 打开注册表:win+R -> 输入 regedit 后运行
  3. 找到 HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\,在文件夹下,新建字符串值 AutoRun,数据的值是一个绝对路径,路径指向新建的 cmd_init.cmd,可以将这个文件放在 C 盘根目录,即路径为 C:\cmd_init.cmd
  4. 重新打开终端,你会看到命令行会先运行这两条命令,而不需要你自己输入。

PowerShell 设置代理

PowerShell 设置代理的方式类似,命令如下:

1
2
$Env:http_proxy="http://127.0.0.1:7890";
$Env:https_proxy="http://127.0.0.1:7890";

当然这也是临时命令,重新代理终端需要重新输入。如果想要永久设置代理,我建议是使用自定义配置,使每次代理 PowerShell 窗口时,运行如上命令。

  1. PowerShell 窗口中运行如下指令:

    1
    2
    
    if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force }
    notepad $PROFILE
    
  2. 默认会使用记事本打开一个文件,在文件中加入上面设置代理的命令,保存关闭即可。

上面的配置文件在 此电脑\文档\WindowsPowerShell 下,文件名为:Microsoft.PowerShell_profile.ps1, 这个文件的内容会在 PowerShell 的每次运行时使用。(注意不要修改文件位置,除非你明白这样操作的目的)

上述的自定义配置方法,便于设置和修改,故为我所推崇,如果你使用网上的永久设置,我想可能会有各种问题,不如这样设置的直观,当然观点仅供参考。

git 设置代理

不得不说,为终端设置代理主要是为 git 设置全局代理,这里给出单独设置的方法。

1
2
git config --global https.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080

这里给出取消设置代理的方法,防止端口需要切换。

1
2
git config --global --unset http.proxy
git config --global --unset https.proxy

结语

总的来说:

  1. 理解代理模式,减少了对于代理流量,是否会拖慢不想代理软件的困扰。
  2. 而为了给 git 设置代理,我个人倾向于使用为终端设置代理的方法,因为那样的方式,配置文件是便于修改的,而使用 git 相关命令设置,则容易限于,是否命令无效等问题。

希望我的理解,说明和方法对你有所帮助~