场景目标

假如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进行操作。

C#如何拦截 Webbrowser Control的响应内容的更多相关文章

  1. .net core MVC 通过 Filters 过滤器拦截请求及响应内容

    前提: 需要nuget   Microsoft.Extensions.Logging.Log4Net.AspNetCore   2.2.6: Swashbuckle.AspNetCore 我暂时用的是 ...

  2. Web Service之Soap请求响应内容中文编码解密

    java模拟Soap请求测试Web Service接口,发现Web Service响应内容中的中文竟然是编码格式.比如: 中文:退保成功 Soap中文编码:退保成功   我仔细分析后发现,退编码实际上 ...

  3. WebBrowser Control

    https://msdn.microsoft.com/en-us/library/aa752040(v=vs.85).aspx WebBrowser Control

  4. [Java] 两种发起POST请求方法,并接收返回的响应内容的处理方式

    1.利用apache提供的commons-httpclient-3.0.jar包 代码如下: /** * 利用HttpClient发起POST请求,并接收返回的响应内容 * * @param url ...

  5. Fiddler插件 --- 解密Elong Mapi请求参数及响应内容

    当前问题: 在我们日常的Web/App测试过程中, Fiddler是一大辅助利器:在我们团队,也经常使用Fiddler进行App抓包测试. 艺龙 App使用的REST(内部称为Mapi)接口,在使用过 ...

  6. 使用FreeCookies 控制浏览器cookies及修改http响应内容

    FreeCookies 插件安装 :您的计算机需要已经安装Fiddler (如未安装,请至官网下载安装 http://docs.telerik.com/fiddler/configure-fiddle ...

  7. nginx替换响应内容

    因为想要将非业务域名内嵌到微信小程序中,所以用到了nginx的反向代理功能来替换域名实现盗站(缘起:http://www.cnblogs.com/kenwar/p/8288882.html),但是替换 ...

  8. node.js学习4--------------------- 根据不同路径来响应内容,以及中文乱码的解决

    /** * http服务器的搭建,相当于php中的Apache或者java中的tomcat服务器 */ // 导包 const http=require("http"); //创建 ...

  9. Django(十一)请求生命周期之响应内容(请求/响应 头/体)

    https://www.cnblogs.com/renpingsheng/p/7534897.html Django请求生命周期之响应内容 http提交数据的方式有"post",& ...

随机推荐

  1. HDU4899 Hero meet devil DP套DP

    陈老师的题QwQ 原题链接 题目大意 有两个字符串\(S\)和\(T\)(都只能由'A','C','G','T'这四个字符组成),\(S\)已知\(T\)未知,还知道\(S\)的长度为\(m\).求满 ...

  2. Daily Codeforces 计划 训练时录

    时间                 场次                             过题数目      补题数目   难易度 2019.4.7      codeforces-1141 ...

  3. Exp2 后门原理与实践

    一.基础问题回答 (注:本实验中在win7上使用的ncat.exe和socat.exe均可在实验指导的附件中下载) 1.例举你能想到的一个后门进入到你系统中的可能方式? 答:非官方网站下载资源时,可能 ...

  4. jvm 字节码执行 (一)方法调用

    “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器.硬件.指令集和操作系统层面上,而虚拟机的执行引擎是 由自己实现的,因此可以自行制定指令集 ...

  5. DirectX11--ComPtr智能指针

    综述 DirectX11 With Windows SDK完整目录 欢迎加入QQ群: 727623616 可以一起探讨DX11,以及有什么问题也可以在这里汇报. IUnknown接口类 DirectX ...

  6. nginx、php-fpm默认配置与性能–TCP socket还是unix domain socket【转】

    原文地址:https://www.cnxct.com/default-configuration-and-performance-of-nginx-phpfpm-and-tcp-socket-or-u ...

  7. 实时通讯系列目录篇之SignalR详解

    一. 简单说几句 最早使用SignalR的时候大约是两年前了,记得当时是一个OA中消息的实时提醒,轮询的方式有点耗资源,WebSocket写起来又比较麻烦,最终选择了SignalR,当时是什么版本已经 ...

  8. Aras简单报表

    1.编辑Report对象类的窗体Report_Tab_Report,将xsl_stylesheet放到窗体上 2.新建报表 3.将编辑好的XSLT复制到xsl_stylesheet中. <xsl ...

  9. JDBC——连接数据库

    JDBC的基本介绍 1.概述:jdbc是使用Java访问各种数据库的一种技术 (1)jdbc工作原理 2.jdbc核心Java类(API) (1)DriverManager类 作用:管理各种数据库的驱 ...

  10. Vue + Element 配置报错

    { test: /\.(eot|svg|ttf|woff|woff2)$/, loader: 'file-loader'}