2015-10-06 18 views
2

我想从一个网站(某种类型的webrequest),从Excel中获取数据,只有问题我坐在代理后面,我不想硬编码用户名和密码。使用默认凭据通过代理从Excel制作http请求

有没有办法获得默认的代理服务器,并设置来自当前用户的凭据,而无需对其进行硬编码?

换句话说:我想通过代理与当前登录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 ("") 

我GOOGLE了,但我能找到一个明确的没有,或替代解决方案。

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

+0

什么exectly你说的“设置从当前用户的凭据”是什么意思? IE代理设置?凭证管理员设置? Sg否? – Shadow

+0

我想用代理与当前登录Windows机器的用户进行身份验证。 –

+0

网络是否使用[wpad](https://en.wikipedia.org/wiki/Web_Proxy_Autodiscovery_Protocol)进行代理设置? – Blackhawk

回答

0

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

由于代理设置为在Internet Explorer中,为每一个用户

1)添加web浏览器控件

enter image description here enter image description here

2)设置用于控制属性
产品名称:浏览器,op周志武改变大小,它不会是可见的左右

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 

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

更新1:

对于其他方案,在Internet Explorer有没有代理服务器设置,这可能是受到(非常脏的解决方法)通过设置与注册表项代理:

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

虽然这样工作,应用程序将不得不终止所有运行的IE浏览器,然后启动浏览器。

免责声明:我没有尝试这个(这只是一个想法,我有),因为我需要>>上述方案是不够的,在我看来很激进>> /危险有可能/应该有更好的方法。

+0

这是一个针对我的环境的非常具体的解决方案,因为Internet Explorer代理设置通过组策略推出。 –

相关问题