在 Powershell Core 中绕过所有 Web 请求的代理

Dav*_*žan 5 internet powershell proxy powershell-core

我有一台在企业环境中运行 Windows 的工作计算机,并带有用于 Internet 传出连接的身份验证代理服务器。我不知道它是如何配置的,但是很多工具无法连接,主要是像npm(Atom编辑器中的包),NuGet,PowerShellGet等类型。我什至必须配置我的浏览器(Vivaldi)才能使用直接连接,因为我无法登录某些网站,即使它在 MS Edge 中运行。

HTTP 错误通常是(407) Proxy Authentication Required.

Windows 中的系统范围代理服务器正在由一些定期执行的脚本进行配置,我对此无能为力。

解决方案,或者更确切地说是一种解决方法,是单独配置所有有连接问题的应用程序以绕过代理(使用直接连接到互联网)。我已经设法做到了几乎所有我需要的东西,但到目前为止我在 Powershell Core 上还没有成功。

顺便说一句,我不确定该代理的意义是什么,当你可以简单地绕过它时,它只会使该计算机上的常规工作变得更加困难,并且浪费我的时间和公司的金钱。

到目前为止,我已经了解了以下内容。

PowerShellGetFind-Module失败并出现以下错误:

无法解析包源“https://www.powershellgallery.com/api/v2”

一个简单的 Web 请求失败,并出现错误“缓存访问被拒绝”:

Invoke-WebRequest https://google.com
Run Code Online (Sandbox Code Playgroud)

但当它被迫绕过代理时会成功:

Invoke-WebRequest https://google.com -NoProxy
Run Code Online (Sandbox Code Playgroud)

netsh winhttp show proxy说“直接访问(无代理服务器)。 ”,但以下命令返回实际代理:

([System.Net.WebRequest]::GetSystemWebproxy()).GetProxy("https://google.com")
Run Code Online (Sandbox Code Playgroud)

此外,以下命令返回false

([System.Net.WebRequest]::GetSystemWebproxy()).IsBypassed("https://google.com")
Run Code Online (Sandbox Code Playgroud)

我做了相当广泛的研究,发现应该可以WebRequest通过将默认代理设置为 null 来配置使用直接连接,但这没有帮助:

[System.Net.WebRequest]::DefaultWebProxy = $null
Run Code Online (Sandbox Code Playgroud)

如果有人有任何其他想法,我将不胜感激。

更新

我发现我实际上可以使用我的域帐户在代理服务器上进行身份验证:

Invoke-WebRequest https://google.com -ProxyUseDefaultCredentials -Proxy http://proxy
Run Code Online (Sandbox Code Playgroud)

因此,这将是代理旁路配置的替代方案。我只是不知道如何为 Powershell 发出的所有请求设置凭据。我不明白为什么 Windows 系统代理没有配置为使用我的帐户进行身份验证。

我尝试配置WebRequest::DefaultWebProxy为使用代理服务器并使用我的域帐户凭据对其进行身份验证,但它不起作用:

Invoke-WebRequest https://google.com
Run Code Online (Sandbox Code Playgroud)

pos*_*ote 0

至于这个\xe2\x80\xa6\n it should be possible to configure WebRequest to use the direct connection by setting the default proxy to null\n\xe2\x80\xa6,正如您所发现的,不在您的公司基础设施中。

\n

您拥有的是一个 GPO,它被强制安装到您的工作站上,强制所有互联网出口网络流量通过过滤/代理网关。

\n

有关详细信息,请参阅如何通过组策略强制代理设置 - TechNet 文章 - 美国(英语) - TechNet Wiki (microsoft.com)。\n https://social.technet.microsoft.com/wiki/contents/articles/ 5156.如何通过组策略强制代理设置.aspx

\n

您的雇主正在控制和监视来自所有加入域的系统的所有入口/出口网络流量。

\n

风险管理/安全策略将占主导地位。任何现代过滤网关都具有您的组织/企业出于其定义的风险控制原因而使用的特定控制措施。

\n

因此,这不是 PowerShell 功能或代码问题;而是问题。它\xe2\x80\x99是网络限制。所以,没有办法绕过它。无论您使用什么工具。您必须提供身份/凭证才能允许出境。

\n

您可以查看浏览器设置来查看代理线人,或者他们也可能正在使用 PAC 文件。

\n

请参阅:什么是 PAC 文件?(websense.com) 了解详细信息。\n https://www.websense.com/content/support/library/web/v76/pac_file_best_practices/PAC_explained.aspx

\n

您在正常浏览时没有收到此提示的原因是您使用了您的凭据/网络令牌。如果您尝试解决这个问题,则会根据公司政策收到提示。

\n

试图规避雇主的风险管理/安全政策将为您带来 RPE/CLM(恢复产生事件/职业限制变动),并可能导致法律诉讼,具体取决于您所做的事情。

\n