我想从一个网站(某种类型的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环境中运行。任何帮助和/或提示将不胜感激。
答案 0 :(得分:0)
目前我找不到更好的东西,但这是一个快速而“肮脏”的解决方案,适用于“标准”组件。
由于为Internet Explorer设置了代理,因为每个用户
1)添加Web浏览器控件
2)设置控件的属性
名称:浏览器,可选更改其不可见的大小
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,然后启动浏览器。
免责声明: 我没试过这个(这只是我的想法),因为我的>>需要上面的解决方案就够了,而且在我看来非常>>激进/危险,可能/应该是更好的方式。