2015-10-06 19 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代理設置通過組策略推出。 –

相關問題