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

时间:2015-10-06 07:40:52

标签: excel vba proxy

我想从一个网站(某种类型的webrequest)获取数据,从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环境中运行。任何帮助和/或提示将不胜感激。

1 个答案:

答案 0 :(得分:0)

目前我找不到更好的东西,但这是一个快速而“肮脏”的解决方案,适用于“标准”组件。

由于为Internet Explorer设置了代理,因为每个用户

1)添加Web浏览器控件

enter image description here enter image description here

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

enter image description here

3)使用浏览器控件

将此代码写入工作表

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

代码有时反应有点松懈(javascript错误,...),但它使用代理和登录用户。

  

更新1:

     

对于Internet Explorer没有代理集的其他方案,可以通过使用注册表项设置代理来关闭 (非常脏的解决方法)

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

虽然为了这个工作,应用程序必须终止所有正在运行的IE,然后启动浏览器。

     
    

免责声明: 我没试过这个(这只是我的想法),因为我的>>需要上面的解决方案就够了,而且在我看来非常>>激进/危险,可能/应该是更好的方式。