我有一些「聰明」的用戶編寫了一個Excel電子表格,可以在我們的Intranet /時間表上自動執行他們的一些任務。看起來好像創建的Internet Explorer實例沒有做我希望瀏覽器做的所有事情,例如設置cookie。有沒有辦法檢測用戶是否正在用Internet Explorer的VBA com對象實例訪問網站?我無法阻止用戶構建創造性解決方案,但我希望能夠處理它們。 謝謝Excel VBA和InternetExplorer在網站上導致錯誤
回答
在您的服務器上,您可以嘗試檢查RequestHeader中的UserAgent字符串。這可以讓您區分標準IE和Excel VBA - 取決於您的高級用戶如何執行此操作。您可以要求您的用戶將他們發送的UserAgent字符串設置爲已知值。
例子:
Dim oHTTP As WinHttp.WinHttpRequest
Set oHTTP = New WinHttp.WinHttpRequest
oHTTP.Open Method:="GET", url:="http://stackoverflow.com/", async:=False
oHTTP.setRequestHeader "User-Agent", "ExcelVBA-UserApp"
Altenatively,爲什麼不成立一個單獨的訪問URL只爲您的Excel用戶使用。或者創建一個簡單的RESTFul API供他們使用。有可能做到這一點 - 儘量保持簡單和易於維護。
您的「聰明」使用可以嘗試在SO中發佈問題 - 功能確實存在,比您的問題建議更好地自動化IE。
想到幾件事情。首先,除非有人訪問您不打算公開的受限信息或網頁抓取數據,否則通常更好地糾正網站,使網站按預期運行,但用戶仍然可以使用VBA訪問網站。 VBA是許多企業的重要生產力工具,可以讓人們靈活地「擴展」一個可能不適合開發需求的小衆需求的網站。
但是,如果你堅持試圖破壞你的用戶的應用程序:)...檢查DOM的Window.Visible屬性。這並不是絕對必要的,但是很多網絡爬蟲只是在不可見的情況下「機器人化」Internet Explorer的一個實例。此外,它可能不是沒有設置cookie,他們只是在飛行中被刪除。如果您嘗試使用cookie限制頁面點擊率,那麼您應該考慮基本事實,即存儲在客戶端的任何數據都可能會發生變化。嘗試存儲服務器端的這種信息。如前所述,有些方法不會提交正確的標題,因此您可以檢查這些標題,最後還有一種流行的「驗證碼」。當然,這些方法都不是傻瓜,它們都有一些缺點。所有這些說,如果有一件事我學到了,那就是人們會找到一種方法去做他們認爲是他們的工作。您可以儘可能多地鎖定界面,但如果用戶認爲他們所做的一切都是他們完成工作所必需的,他們會非常願意爲您應用的任何「修復」找到解決方法。他們甚至可能會爲他們的努力贏得讚譽和認可。用戶將繼續這樣做,直到你滿足他們認爲他們有的需求。
如果你真的想要殺死應用程序,最好是確定哪些需求沒有得到滿足,並滿足它。如果不需要,經理們不希望擁有來支持和維護100個不同的小應用程序。如果需要滿足需要的「合法」無障礙方式,通常會使用它。爲什麼?每個人都需要時間,所以最簡單的解決方案會贏。如果你的應用比你想要的更好,那麼爲什麼還要花費內部開發呢?如果有任何藉口,一個業務部門經理會很快指導他們的員工恢復業務。
- 1. Excel VBA - listbox.selected屬性導致錯誤
- 2. 使用VBA Excel自動運行InternetExplorer的網站消息框
- 3. 網站導致腳本錯誤在IE8
- 4. 運行時錯誤91宏打在網站上的Excel VBA
- 5. 錯誤「HTTP 403網站拒絕顯示此網頁」在Excel vba中導航URL
- 6. Excel VBA - 'IF''OR'公式導致編譯錯誤:語法錯誤
- 7. Slider Widget(AsdSlider)在網站上導致Javascript錯誤
- 8. VBA InternetExplorer的頁面加載錯誤
- 9. joomla網站致命錯誤?
- 10. 網站致命錯誤9001
- 11. Excel 2010 VBA - 從網站上拉桌子
- 12. 錯誤在Excel VBA
- 13. XLL和vba函數名稱衝突導致永久#NAME?錯誤
- 14. Excel VBA字符串操作導致運行時錯誤「1004」
- 15. 傳入空日期的Excel VBA函數會導致#VALUE!錯誤
- 16. 是什麼導致Excel VBA中的錯誤70?
- 17. Excel VBA登錄IE網站
- 18. Excel VBA錯誤
- 19. 創建用戶嚮導會導致對SharePoint網站錯誤
- 20. #值!在Excel VBA上worksheetfunction.gammadist錯誤
- 21. htaccess重寫規則在WordPress網站中導致404錯誤
- 22. vba getElementById導致運行時錯誤'424'
- 23. Excel VBA處理和轉發導致「內存不足」的電子郵件錯誤
- 24. Excel VBA。導航錯誤對象必需
- 25. VBA Excel - Macscript在使用IIF時在Windows上導致問題
- 26. 在Azure網站上使用RSACryptoServiceProvider導致文件未找到錯誤
- 27. 在asp.net網站上運行oracle代碼導致「驅動程序缺失」錯誤
- 28. Excel VBA:錯誤0x800c00008
- 29. vba excel sheets.range.value錯誤
- 30. ComboBox.Value錯誤 - Excel VBA
好問題 - 在查看解決方案時也不會有興趣。 – ajdams 2009-12-07 19:40:12
似乎如果我不控制VBA應用程序/電子表格,那麼我無法設置User-Agent,並且我無法檢測到它是由VBA生成的IE實例。我將不得不說服我的用戶更改用戶代理 – SWD 2010-01-28 04:49:13