给window powershell添加代理,并且使在powershell中运行的程序通过代理请求数据

q
qimoe
发布于 6 个月前

最近在写一个请求国外api的程序,但是这个api被墙了,无法访问,但是就算开了全局代理,运行在windows powershell中的程序也无法访问这个api,虽然直接通过curl是能够返回数据的。

我们可以通过在powershell的启动脚本中添加一个命令行,类似于Linux中启动的默认配置文件:.bashrc或者.bash_profile

那么powershell的启动脚本位置在哪里呢?

我们可以通过环境变量查看配置文件的路径

Description

Name

All Users, All Hosts

$PROFILE.AllUsersAllHosts

All Users, Current Host

$PROFILE.AllUsersCurrentHost

Current User, All Hosts

$PROFILE.CurrentUserAllHosts

Current User, Current Host

$PROFILE or $PROFILE.CurrentUserCurrentHost

windows 10 1903版本上的配置文件的实际路径

Description

Path

All Users, All Hosts

$PsHome\profile.ps1

All Users, Current Host

$PsHome\Microsoft.PowerShell_profile.ps1

Current User, All Hosts

$Home\Documents\WindowsPowerShell\profile.ps1

Current user, Current Host

$Home\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

这部分内容来源于:https://anuoua.github.io/2019/08/11/Powershell%E5%90%AF%E5%8A%A8%E8%84%9A%E6%9C%AC/

我通过我自己的window笔记本找到的路径如下:

PS C:\Users\usermy> cd $PsHome
PS C:\Windows\System32\WindowsPowerShell\v1.0>

于是我直接就资源管理器打开对应文件夹中,找到profile.ps1,如果没有就创建一个,注意:需要开启管理员权限,否则无法更改或者新建。

编辑如下命令行在profile.ps1中:

function set_proxy_variable {
	Set-Item Env:http_proxy "http://127.0.0.1:1086"  # 代理地址
	Set-Item Env:https_proxy "http://127.0.0.1:1086" # 代理地址
}

function unset_proxy_variable {
    Remove-Item Env:http_proxy
    Remove-Item Env:https_proxy
}

New-Alias -Name spp -Value set_proxy_variable
New-Alias -Name upp -Value unset_proxy_variable

如果打开新的poewrshell窗口报此系统上禁止运行脚本错误,需要设置运行策略。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

使用

  • spp 启用代理

  • upp 取消代理

注意:请先关闭Powershell之后重开,再运行spp,然后测试。

通过如此设置之后,运行在Powershell中的nodejs程序完全请求api。

原文:https://anuoua.github.io/2019/08/11/%E9%85%8D%E7%BD%AEPowershell%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%BB%A3%E7%90%86/

相关文章推荐
评论区
暂未开放
相关文章推荐