使用默认凭据通过代理从Excel发出http get请求

tkclm6bt  于 2022-12-30  发布在  其他
关注(0)|答案(1)|浏览(144)

我想从一个网站(只是一个简单的网络请求),从Excel的数据,唯一的问题是,该应用程序背后的代理,我不想硬编码用户名和密码。
是否有一种方法可以获取默认代理并设置当前用户的凭据,而无需对其进行硬编码?

***换句话说:*我希望使用当前登录到Windows计算机上的用户针对代理进行身份验证。

以下是相关代码:

Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP.6.0")
   URL = "http://stackoverflow.com/"
   objHTTP.Open "GET", URL, False

   'If possible i would like to get the default proxysettings
   objHTTP.setProxy 2, "proxy:8282"

   'I dont wont to set this line
   objHTTP.setProxyCredentials "username", "password"
   objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
   objHTTP.send ("")
  • 我谷歌了一下,但我能找到一个明确的否定答案,或者另一个解决方案 *

它应该在Windows环境中运行。任何帮助和/或提示将不胜感激。

cgvd09ve

cgvd09ve1#

我找不到任何更好的目前,但这是一个 * 快速&"肮脏"* 的解决方案,工程,与"标准"组件(和更多的超过我的特殊需要)。
由于代理是为Internet Explorer设置的,因此对于每个用户

    • 1)添加Web浏览器控件**

第一节第一节第一节第一节第一次

    • 2)设置控件的属性**
    • 名称:*浏览器, 可选更改大小,使其不可见或其他 *

    • 3)使用浏览器控件将此代码写入工作表**

〈! --语言:语言-vb--〉

Private Sub browser_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    Debug.Print browser.Document.body.innerHTML
End Sub

Private Sub Worksheet_Activate()
    browser.Navigate "stackoverflow.com"
End Sub
' Tested on Win7 with Excel 2010

代码的React有时有点古怪(JavaScript错误,...),但它使用代理和登录的用户。

    • 更新1:**

对于Internet Explorer没有设置代理的其他方案,通过使用注册表项设置代理,这可能会关闭***(非常糟糕的解决方法)***:

HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable
HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer

虽然要使其正常工作,应用程序必须终止所有正在运行的IE,然后启动浏览器。

    • 免责声明:**我没有尝试过这个(这只是我的一个想法),因为对于我的〉〉需要上述解决方案是足够的,在我看来非常〉〉激进/危险,可以/应该有一个更好的方法。

相关问题