zoukankan      html  css  js  c++  java
  • C#如何拦截 Webbrowser Control的响应内容

    场景目标

    假如Webbrowser中的一个页面打开后第一件事就是执行了alert,我们想要阻止它该如何做?

    <html>
      <head>
      <script src="foo.js"> </script>
      <script>
        alert('alert immediate!');
      </script>
      </head>
    <body>
    <h2> hello</h2>
    </body>
    </html>
    

    绑定DocumentComplete事件,不行,太晚了js早已执行。

    绑定ProgressChanged事件,不行,虽然早于load事件,但还是晚于js执行时间。

    以上支持的事件根本无法达到目的,于是尝试过FiddlerCore利用中间代理原理过滤网络响应内容。

    代理法虽然可以达到目的,但证书安装、代理设置、网络开销都显得不那么优雅稳定。

    Navigated事件

    一直以为Navigated事件是在发出请求后就触发,最近突然发现并不是这样。

    经过测试,Navigated会在html里第一个script开始执行前触发,这时加载的html会被截断到第一个script标签位置。

    也就是说当此事件触发时,浏览器内加载的html为

    <html>
      <head>
      <script src="foo.js"> </script>
      </head>
    </html>
    

    不过这时window、document等对象都已存在,于是我们就可以愉快地进行操作了。

    注意:

    1.主窗口及iframe都可触发

    2.触发时页面内js尚未执行

    3.由于此事件早于任何js代码的执行时间,所以无法实现对页面内Js方法的覆盖

    4.如果第一个script在head里,也无法实现对HTML的修改 :)

    5.如果动态插入script标签或利用其它延时原理,有可能会在页面的某个script标签后执行,但执行先后次序极不可控,意义不大。

    总结

    此事件适用于需要在任何js执行前进行自定义操作的场景,操作内容限于对window、document对象的处理;如果第一个script标签在body中,还可以对之前的html进行操作。

  • 相关阅读:
    2019-2020-2 网络对抗技术 20175318 Exp0 kali Linux系统的安装(雾
    手动编译 TCP BBR v2 Alpha/Preview 内核
    Adobe Flash Player解除限制版
    ABBYY FineReader 15.0.18.1494 Corporate Multilingual破解
    易语言5.9精简学习增强版
    Debian9 快速开启 TCP BBR 实现高效单边加速
    ucosii-2(选做)
    Ubuntu 18.04/18.10快速开启Google BBR的方法
    基于 Nginx 的 v2+websocket+tls 域名伪装
    Google TCP升级版加速:BBR 2.0对比BBR Plus
  • 原文地址:https://www.cnblogs.com/himax/p/9890153.html
Copyright © 2011-2022 走看看