【问题标题】:Intercepting URL before navigation导航前拦截 URL
【发布时间】:2008-11-10 06:10:13
【问题描述】:

我想拦截用户在浏览器中输入的任何 URL,并在允许导航继续之前执行一些任务(任何方式都可以,即通过插件、代理或任何其他创意建议)。 澄清一下 - 我不是指需要捕捉这个的特定应用程序,而是 - 用户在其浏览器上所做的任何导航都需要被捕捉(即用户没有打开我的应用程序,它应该在后台运行或类似的东西...) 提前谢谢...

【问题讨论】:

  • 浏览器/平台?还是独立于他们?
  • 此时我正在探索所有可能性——只要解决方案不需要用户打开特定的应用程序,我就可以打开..
  • 如果用户不打算打开您的应用程序,您的代码将如何运行?
  • 我必须澄清一下,我指的是组织中的用户(即组织可以控制用户的计算机,可以添加插件,可以控制代理等)

标签: browser url-interception


【解决方案1】:

我认为您不能“拦截”用户通过 javascript 输入的内容。它闻起来像一个大的安全漏洞。您可以检测到用户何时离开页面,但您无法检测到他接下来要去哪里。

  • 如果您只需要处理 URL 字符串,代理是一个不错的选择。但是任何更复杂的东西在代理中实现都会很复杂。

  • 然而,插件取决于您所针对的浏览器,您不能制作一个针对所有浏览器并同时控制用户导航的插件。但是,如果您要选择用户使用的浏览器,那么也许可以。

  • 滚动您自己的浏览器(使用 IE 的 ActiveX 控件)或使用开源替代方案之一并使用它怎么样?

您希望进行的具体处理是什么?

【讨论】:

  • 首先 - 感谢您的详细回答!我想做的是能够根据用户输入的 URL 执行一些操作(连接到数据库,向用户显示消息)(这将是一个组织,它可以控制客户端计算机、代理、浏览器等)
【解决方案2】:

如果您使用的是 Javascript,当用户存在名为 onunload 的页面时会触发一个事件。

window.onunload = function() {
    alert("You're leaving this page.");
};

【讨论】:

  • 如何确定用户在 onunload 事件中在浏览器中输入的内容?
【解决方案3】:

您可以创建一个隐藏框架,将watch 添加到主框架的window.location 对象。我不确定您是否可以在 IE 中使用手表 - 如果不能,您可能需要定期轮询另一个窗口以查看它在哪个页面上。

如果用户在浏览器窗口中键入地址,则您无法捕获该地址(因为您的框架将被删除),但您会获得他们点击的所有链接(甚至是外部网站)。

【讨论】:

    【解决方案4】:

    你可能想看看Fiddler

    ... Web 调试工具,可以捕获、重放和修改来自几乎任何应用程序的 HTTP 和 HTTPS 流量。

    据我了解,它充当轻量级代理,可以执行 .NET 脚本定义的各种酷的事情。

    如果您感兴趣,您还可以对其进行设置,以便通过它运行移动设备。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 2022-08-22
      • 2016-08-02
      • 2021-12-22
      • 2011-07-11
      • 1970-01-01
      相关资源
      最近更新 更多