WebView2简单试用(九)—— Dev Protocol

摘要:
注入JavaScript的常用方法已不能满足我们的要求。此时,我们可以使用Chromium提供的更高级的API ChromeDevProtocol。使用Chrome快速抓取数据(I)——使用Chrome快速获取数据概述(II)——编写爬虫类库的协议——(II)准备简单地说,本文只是介绍了在WebView 2中使用DevProtocol的方法。

有的时候,我们需要实现一些更为高级的操作,以提供更个性化的功能。常用的注入JavaScript的方式已经不能满足我们的要求,此时可以使用Chromium提供的更为高级的API——Chrome Dev Protocol

关于Dev Protocol,我之前写过几篇文章介绍过:

简单的来讲,通过F12调出的DevTool里能实现的功能它都能实现,网上也有大量的文章介绍它,我这里就不重复介绍了。本文这里只是介绍下WebView2中使用DevProtocol的方式。

在WebView2中,我们可以和前面的文章中介绍的一样,通过--remote-debugging-port参数开放调试端口,用websocket的方式来驱动。

    var env = await CoreWebView2Environment
                  .CreateAsync(options:new CoreWebView2EnvironmentOptions(
                                "--remote-debugging-port=9222"));
    await webView.EnsureCoreWebView2Async(env);

除此之外,WebView2也提供了无需通过WebSocket作为中介,直接访问的方法:

  • CoreWebView2.CallDevToolsProtocolMethodAsync
  • CoreWebView2.GetDevToolsProtocolEventReceiver

 基本上从名称中就可以看出使用方法,执行命令和注册回调。一个简单的示例如下:

    await webView.CoreWebView2.CallDevToolsProtocolMethodAsync("Network.enable""{}");
    var eventRecieiver = webView.CoreWebView2.GetDevToolsProtocolEventReceiver("Network.requestWillBeSent");
    eventRecieiver.DevToolsProtocolEventReceived += (se) =>
    {
        Console.WriteLine(e.ParameterObjectAsJson" ");
    };

示例进行了两步操作:1. 执行命令Network.enable,启用Network事件回调,2. 注册Network.requestWillBeSent回调,命令执行完后,再访问任何页面时,即可获取当前发送的所有请求信息:

WebView2简单试用(九)—— Dev Protocol第1张

免责声明:文章转载自《WebView2简单试用(九)—— Dev Protocol》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SpringBoot文件分片上传char *内容输出下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SAP HTTP调用其他系统接口

1业务说明 ABAP系统通过HTTP方式调用其他系统发布的接口 2代码实现 2.1认证接口 根据访问的URL创建HTTP客户端 设置访问方式,并调用SEND和接收函数 有时需要专门验证用户名密码 获取返回的HTTP访问状态和状态描述,并关闭接口 其中定义的接收内表需要按照JSON结构来定义 2.2具体接口 当获取TOKEN成功之后,就可以...

RocketMQ系列:使用systemd管理nameserver和broker

背景 前面RocketMQ系列中分享了如何在机器上搭建rocketmq,其中nameserver和broker都是以nohup的方式启动。在实际运维过程中,这种启动存在一个比较麻烦的问题:比如机器宕机后,重新启动机器,broker和namserver服务无法自动随开机拉起,还需要我们登陆到每台机器上去操作启动服务。又没有比较好的方式管理启动脚本和停止脚本呢...

Linux命令(一)

一、cd  切换文件夹   绝对路径(以/根目录开头的路径)   相对路径(基于某个跟目录下的路径,不以/根目录开头)   cd /home  绝对路径(以根目录开头)   cd admin  相对路径(不以根目录开头)   cd ..  返回上级目录   cd ~  返回到自己的家目录(/home/admin)   cd -  回放功能  pwd  查看...

gin是怎么传参数

gin 源码阅读系列文章列表: gin 源码阅读(1) - gin 与 net/http 的关系gin 源码阅读(2) - http请求是如何流入gin的?gin 源码阅读(3) - gin 路由的实现剖析 hi,大家好,我是 haohongfan。 通过 gin 的路由,已经把请求分配到具体的函数里面里面了,下面就要开始处理具体的业务逻辑了。 这里就进入...

Web上传文件

  客户端      相对于FTP文件上传,Web文件上传速度慢一些,但使用方便,不需要客户端,而且权限比FTP容易控制。 Web文件上传采用POST方式,上传文件需要设置FORM的entype属性为multipart/form-data。由于上传的文件会比较大,需要设置该参数指定浏览器使用二进制上传。否则enctype属性默认为application/x...

批量插入数据(基于Mybatis的实现-Oracle)

前言:做一个数据同步项目,要求:同步数据不丢失的情况下,提高插入性能。 项目DB框架:Mybatis。DataBase:Oracle。 ---------------------------------------------------------------------------- 批量插入数据方式: 一、Mybatis 全局设置批处理; 二、Myb...