我想通过命令行设置代理,我发现的第一件事是你必须以管理员权限运行命令行 - 那么基本的代理设置将是:
netsh winhttp set proxy SERVER:PORT
这很好用,但我还想添加登录。正如你所看到的,我尝试使用 netsh->winhttp,但是 manual 没有说明任何有关登录部分的内容,所以我只是尝试了:
netsh winhttp set proxy user:password@SERVER:PORT
不幸的是,这不起作用。是否有可能在 netsh->winhttp 中实现类似的功能?
如果是这样,怎么办?如果不是=>我应该遵循什么Windows命令?
̶O̶r̶ ̶i̶s̶ ̶t̶h̶i̶s̶ ̶m̶o̶r̶e̶ ̶e̶a̶s̶i̶l̶y̶ ̶a̶c̶h̶i̶e̶v̶e̶a̶b̶l̶e̶ ̶t̶h̶r̶o ̶u̶g̶h̶ ̶s̶o̶m̶e̶ ̶W̶i̶n̶d̶o̶w̶s̶A̶P̶I̶ ̶(̶e̶.̶g̶.̶u̶s̶i̶n̶g̶ ̶C̶/̶C̶+̶+̶)̶?̶
感谢您的帮助,如有不清楚的地方,请随时提问。
使用:Windows 7、cmd.exe、netsh->winhttp
编辑:这看起来像C++方式:http://msdn.microsoft.com/en-us/library/windows/desktop/aa383144(v=vs.85).aspx,但更好的方法C++ 可能会这样:http://msdn.microsoft.com/en-us/library/windows/desktop/aa385384(v=vs.85).aspx#general_option, - 所以剩下的问题是如何通常在命令行中实现此目的(或者甚至更好的命令行->netsh->winhttp)?
如果您使用的是 Microsoft Windows 环境,则可以根据需要设置名为
HTTP_PROXY
、FTP_PROXY
或 HTTPS_PROXY
的变量。
我已使用以下设置来允许我在 Windows 命令提示符下的命令使用浏览器代理访问互联网。
set HTTP_PROXY=http://proxy_userid:proxy_password@proxy_ip:proxy_port
右侧参数必须替换为实际值。
一旦设置了变量
HTTP_PROXY
,我们在Windows命令提示符下执行的所有后续命令都将能够通过代理以及提供的身份验证访问互联网。
此外,如果您还想使用 ftp 和 https 来使用相同的代理,那么您可能还需要以下环境变量。
set FTP_PROXY=%HTTP_PROXY%
set HTTPS_PROXY=%HTTP_PROXY%
cmd
通过袜子代理传输所有互联网流量:
netsh winhttp set proxy proxy-server="socks=localhost:9090" bypass-list="localhost"
查看当前代理设置:
netsh winhttp show proxy
清除所有代理设置:
netsh winhttp reset proxy
IE 可以设置用户名和密码代理,所以也许在那里设置并导入确实有效
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /t REG_SZ /d name:port
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyUser /t REG_SZ /d username
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyPass /t REG_SZ /d password
netsh winhttp import proxy source=ie
在这种情况下,
PowerShell可以帮助我们,前提是您有能够以管理权限运行它。
导入 Internet Explorer 设置:
首先,将代理设置从 Internet Explorer 导入到系统设置。这可确保您的系统使用与 IE 中相同的代理设置。
netsh winhttp import proxy source=ie
我只是想强调,尽管命令
netsh winhttp import proxy source=ie
提到了 Internet Explorer (IE),但它实际上涉及也可以被 Microsoft Edge 使用的系统范围代理设置。从历史上看,Windows 为这些设置保留了“IE”名称,即使实际使用的浏览器不再是 Internet Explorer。
在某些情况下,Windows 对 Internet Explorer 和 Microsoft Edge 使用相同的代理设置。但是,尝试导入特定于 Edge 的设置可能会导致错误消息,因为
netsh
命令最初是为 Internet Explorer 开发的。
初始化WebClient:
创建一个新的WebClient对象。该对象允许您发送 HTTP 请求并接收 HTTP 响应。
$Wcl = New-Object System.Net.WebClient
获取凭证:
使用获取凭据cmdlet
提示输入用户名和密码。这将打开一个对话框,您可以在其中输入您的凭据。
$Creds = Get-Credential
设置代理凭据:
最后,将凭据分配给 WebClient 的代理。这使得 WebClient 能够使用您提供的凭据通过公司代理。
$Wcl.Proxy.Credentials = $Creds
按照这些步骤,您应该能够绕过与网络限制相关的问题并成功安装第三方软件包。