【问题标题】:Get Browser's Current HTML From Another App从另一个应用程序获取浏览器的当前 HTML
【发布时间】:2010-12-30 21:03:48
【问题描述】:

我正在尝试构建一个应用程序来读取 - 并且最好检测(通过事件或类似的东西)浏览器当前 HTML 的变化。

我的主要目的是构建某种功能以启用对某些页面的单点登录,因此我需要知道每次页面完成加载以检查 HTML 并设置一些字段值。

我知道不同浏览器的实现可能会有所不同,但 IE 和/或 Firefox 将是一个很好的开始。

即使在谷歌上四处搜索,我也无法做到这一点。我想也许,但只是也许,我可以使用 Windows API 将某种控件附加到浏览器的窗口,但我试图相信(至少到现在为止)有一些更简单的东西。 :)

任何想法都将不胜感激。

问候,

菲利普

【问题讨论】:

  • 我找到了一种在 Internet Explorer 中使用 ShDocVw(Microsoft Internet 控件)的方法:msdn.microsoft.com/en-us/library/aa752044%28VS.85%29.aspx。 ShDocVw 包含一些允许您监视现有和新浏览器导航的类(docCompleted、下载等)。下一步是弄清楚如何写入 DOM(可能很直接,我还没有尝试过)。 Firefox 将是另一部小说,但现在 IE 已经足够了.. :)

标签: html automation


【解决方案1】:

从外部应用程序执行此操作将是一项古怪的任务。您将不得不设置数十种最复杂的查询机制,并且可能会被安全措施关闭。像这样的东西就是浏览器扩展的用途。

另外,即使源代码已完全加载,也并不意味着页面已准备就绪。在扩展中,您只需挂接到 onLoad 事件并拥有一个干净、正确解析的 DOM 供您使用。

也许可以编写多个扩展程序,每个浏览器一个,并让这些扩展程序与您的应用程序通信。这样一来,它实际上可以很容易。扩展会监听 onload 事件,然后为您传递所有的 HTML。 (无论您采用哪种方式,这都是一个主要的隐私问题,因为 HTML 可能包含各种各样的东西,但这是另一回事)。能否做到,取决于扩展模型是否允许与外部进程通信。

【讨论】:

  • 异想天开的几乎不可能。我能想到的唯一方法是直接连接到特定操作系统的 TCP/IP 堆栈。没有任何可以想象的回报可以让它发挥作用。
  • +1 让您获得 10K 代表!干得好:) ...并回答了一个古怪的问题!
【解决方案2】:

我猜有更直接的方法可以做到这一点,但是 Greasemonkey 呢?您可以编写一个 GM 脚本来获取当前页面的 HTML,然后通过 Ajax 将其发送到您的应用程序(当然,您的应用程序必须运行一个小型 HTTP 服务器)。如果 GM 太有限,您还可以编写一个 Firefox 扩展程序,为您提供一些更复杂的选项。

【讨论】:

    【解决方案3】:

    要使用 Internet Explorer 执行此操作,您将必须构建一个浏览器帮助器对象来挂钩浏览器发布的有关当前页面处置的事件。这绝不是一项微不足道的任务,并且需要大量特定于 Windows 的编程。我认为不编写 BHO 是不可能的,而且从技术上讲,BHO 位于“应用程序内部”,因为您必须将其安装到 IE 中。

    Browser Helper Objects

    【讨论】:

      【解决方案4】:

      创建一个本地代理怎么样?有一个名为 Proxomitron 的广告过滤应用程序可以作为您的模型。

      【讨论】:

        【解决方案5】:

        我找到了一种在 Internet Explorer 中使用 ShDocVw(Microsoft Internet 控件)的方法:http://msdn.microsoft.com/en-us/library/aa752044%28VS.85%29.aspx

        ShDocVw 包含一些允许您监控现有和新浏览器导航的类(docCompleted、下载等)。下一步是弄清楚如何写入DOM(可能很直接,我还没有尝试过)。

        Firefox 将是另一部小说,但现在 IE 已经足够了.. :)

        谢谢大家。

        菲利普

        【讨论】:

        • 不错!您可以编辑您的问题并在此处添加信息,这将对后代有所帮助。
        猜你喜欢
        • 2012-08-26
        • 1970-01-01
        • 1970-01-01
        • 2015-08-09
        • 1970-01-01
        • 2013-05-26
        • 2011-04-04
        • 2011-06-24
        • 2019-08-01
        相关资源
        最近更新 更多