gpt4 book ai didi

.Net web请求通过代理,自动检测凭据

转载 作者:行者123 更新时间:2023-12-02 15:43:29 24 4
gpt4 key购买 nike

我花了一些时间搜索该网站上的文章,以准确找到我想要完成的任务,但到目前为止还没有运气。我正在客户端应用程序中执行 Web 请求,并且我想确保它可以通过代理运行。我设置 Fiddler2 作为代理服务器进行测试,并强制它需要身份验证。

我基本上已经弄清楚如何使用代理:

    Dim proxy As IWebProxy = WebRequest.GetSystemWebProxy()
webService.Proxy = proxy

我还尝试通过以下方式获取代理的正确凭据

    webService.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials

也可以将其添加到配置部分下的 app.config 中:

    <system.net>
<defaultProxy useDefaultCredentials="true" />
</system.net>

这两种情况我都得到相同的网络异常:

    The request failed with HTTP status 407: Proxy Auth Required.

Fiddler2 的代理的用户名为 1,密码为 1,如果我以编程方式将这些作为请求的凭据,则该请求将成功进行身份验证。但是,是否有原因导致它无法像获取代理信息一样从 IE 获取凭据?

Fiddler 的代理也是这种工作方式的异常(exception)吗?使用 Windows 身份验证的普通代理是否适合我尝试获取凭据的方式,有什么方法可以轻松测试它?

最佳答案

大多数(但不是全部)需要身份验证的代理使用当前用户的 Windows 登录凭据。因此,使用 DefaultCredentials 通常是正确的选择。

话虽如此,代理可能需要自定义凭据(例如,Fiddler 想要“1:1”),当这种情况发生时,您的代码无法真正知道这些凭据是什么凭据是。您可能运气好的话可以要求 CredMan 查看是否有目标代理领域的存储凭证,但这通常行不通(假设它曾经行过)。您通常不能“向 IE 询问”凭据,因为一般来说,它不会永久存储凭据;相反,它会在 session 的第一个请求时提示用户输入它们,并在该 session 的生命周期内将它们保留在内存中。

如果您希望您的软件在具有此类代理的环境中运行,您应该捕获 HTTP/407 响应并提示用户输入其代理凭据,您可以在重试时手动将其添加到请求中。

查看我的IEInternals讨论该主题的博客文章。

关于.Net web请求通过代理,自动检测凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14650418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com