我有一些“聪明”的用户编写了一个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. 运行时错误91宏打在网站上的Excel VBA
- 3. 错误“HTTP 403网站拒绝显示此网页”在Excel vba中导航URL
- 4. Slider Widget(AsdSlider)在网站上导致Javascript错误
- 5. VBA InternetExplorer的页面加载错误
- 6. joomla网站致命错误?
- 7. 错误在Excel VBA
- 8. XLL和vba函数名称冲突导致永久#NAME?错误
- 9. 是什么导致Excel VBA中的错误70?
- 10. 传入空日期的Excel VBA函数会导致#VALUE!错误
- 11. Excel VBA字符串操作导致运行时错误“1004”
- 12. Excel VBA错误
- 13. 创建用户向导会导致对SharePoint网站错误
- 14. htaccess重写规则在WordPress网站中导致404错误
- 15. vba getElementById导致运行时错误'424'
- 16. 在Azure网站上使用RSACryptoServiceProvider导致文件未找到错误
- 17. VBA Excel - Macscript在使用IIF时在Windows上导致问题
- 18. vba excel sheets.range.value错误
- 19. ComboBox.Value错误 - Excel VBA
- 20. VBA Excel中错误
- 21. 在Excel VBA中导致“已命名的参数已指定”错误?
- 22. 在Excel VBA中导致“无效提示标志”运行时错误?
- 23. Redux框架导致网站给500内部服务器错误
- 24. 使用urllib获取网站会导致HTTP 405错误
- 25. 的PowerShell:命令 “GET-ChildItem IIS:\网站” 将导致错误
- 26. Asp.net - 发布网站导致访问被拒绝错误
- 27. 由于启动错误导致停止网站
- 28. 给致命libpng错误的网站API
- 29. 导致excel滞后的VBA代码
- 30. VBA上的Excel公式错误
好问题 - 在查看解决方案时也不会有兴趣。 – ajdams 2009-12-07 19:40:12
似乎如果我不控制VBA应用程序/电子表格,那么我无法设置User-Agent,并且我无法检测到它是由VBA生成的IE实例。我将不得不说服我的用户更改用户代理 – SWD 2010-01-28 04:49:13