RPA使用Native Messaging协议实现浏览器自动化

RPA 即机器人流程自动化,是一种利用软件机器人或人工智能来自动化业务流程中规则性、重复性任务的技术。RPA 技术可以模拟和执行人类在计算机上的交互操作,从而实现自动化处理数据、处理交易、触发通知等任务。帮助企业或个人实现业务流程的自动化和优化,提升生产力和效率。

在RPA中自动化通常分为两大块:桌面自动化、浏览器自动化。所谓浏览器自动化就是通过RPA软件控制浏览器执行自动化任务,比如自动打开网页,自动填写网页中的输入框等等。

当时在研发RPA软件时,我实现了一种常用的控制方式:通过进程间通信 + JavaScript代码,来控制浏览器。当时使用Chrome浏览器验证技术链路,其他浏览器大同小异,原理相同。其他控制浏览器的方式还有模拟键鼠操作、WebDriver等,以后分享出来。

技术原理

使用 RPA Chrome插件 + Native Messaging 协议 + Native Messaging Host进程,从而实现本地应用(如RPA软件)与Chrome之间的互相通信、互相控制。

RPA Chrome插件:实际上是通过浏览器插件的方式告诉Chrome浏览器,Native Messaging Host进程所在位置。并且RPA插件解析从RPA进程发来的数据,作为JS代码在浏览器中运行控制网页行为。

Native Messaging(NM)协议:Chrome浏览器与Native Messaging Host通信的协议(传输UTF8 JSON数据,数据格式为 4字节头 + 实际数据,数据头表示后面实际数据的字节数),建立在stdio通信之上。

Native Messaging Host(NM Host)进程:RPA提供的与浏览器通信的桥梁进程,Chrome浏览器打开时,会把Native Messaging Host作为子进程启动。

Chrome浏览器插件有两个核心文件background.js与content.js。background运行在背景页,content与web页面(或tab页)交互。如果使用 Native Messaging 协议,background.js上端负责与content.js通信,下端负责与NM Host进程通信。控制端(RPA软件)与NM Host通信,整个链路就通了:RPA进程 <==byIPC==> NM Host <==> Chrome进程 <==> Chrome插件 <==> 浏览器网页

详细原理图如下:

执行过程

  1. RPA进程的打开浏览器指令打开Chrome浏览器进程,通过系统中已安装Chrome的位置,就能打开浏览器进程。
  2. Chrome进程打开后,随之打开NM Host进程(如上图),并与NM Host进程用NM协议通信。
  3. RPA进程找到NM Host进程,并与之进程间通信(stdio)。
  4. RPA进程只要发送正确的JS代码给NM Host进程(通过NM协议),NM Host把数据给浏览器,浏览器的RPA插件收到的数据,解析为JS代码执行,从而控制浏览器行为(如控制网页,打开关闭tab页等)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/778461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【绝对有用】“利用ChatGPT赋能学术写作:技巧、方法与创新策略“

为了帮助读者利用ChatGPT进行学术写作&#xff0c;我以一种引人入胜的信息图表形式&#xff0c;概括了以下步骤和技巧&#xff1a; 使用英文提问&#xff1a;用英文提出问题&#xff0c;可以获得更准确的回答。生成大纲&#xff1a;通过创建文章大纲&#xff0c;为写作提供清晰…

leetcode热题100.柱状图中最大的矩形

Problem: 84. 柱状图中最大的矩形 文章目录 题目思路复杂度Code 题目 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 1: 输入&#xff1a;hei…

按需自动加载 Element Plus 实测

按需加载是一种优化策略&#xff0c;可以提高前端应用程序的性能、用户体验和可维护性。在使用 Element UI 或其他大型 UI 组件库时&#xff0c;通过按需加载可以最大程度地发挥其优势&#xff0c;确保应用程序的性能和可扩展性得到有效的管理&#xff1b;其优势有&#xff1a;…

MySQL安装环境配置,工具(超详细讲解)

一、什么是MySQL MySQL与SQL server一样都是关系型数据库管理系统&#xff0c;起初它是由瑞典的MySQL AB公司开发的&#xff0c;该公司于2008年被Sun公司收购。之后&#xff0c;Sun公司在2009年被Oracle公司收购。现在MySQL是Oracle公司的重要产品之一。 1、MySQL版本 针对不…

python实战之基础篇(二)

一. 定义函数 二. 调用函数 1. 使用位置参数调用函数 2. 使用关键字参数调用函数 三. 参数的默认值 四. 可变参数 1. 基于元组的可变参数 2. 基于字典的可变参数 五. 函数中变量的作用域 global 可以将局部变量提升为全局变量 六. 过滤函数filter() 七. 映射函数map() 八. la…

Elasticsearch 和 Kibana 8.13:简化 kNN 和改进查询并行化

作者&#xff1a;Gilad Gal, Tyler Perkins, Srikanth Manvi, Aris Papadopoulos, Trevor Blackford 在 8.13 版本中&#xff0c;Elastic 引入了向量搜索的重大增强&#xff0c;并将 Cohere 嵌入集成到其统一 inference API 中。这些更新简化了将大型语言模型&#xff08;LLM&a…

【阿里近100人+花27.1万造的】中文医学数据集 ChineseBLUE 分析

中文医学数据集 ChineseBLUE 分析 基本介绍数据集分类构造成本 论文&#xff1a;https://arxiv.org/pdf/2106.08087v5.pdf 链接&#xff1a;https://github.com/alibaba-research/ChineseBLUE 基本介绍 需要注意的是&#xff0c;中文生物医学文本在语言上与英文不同&#xf…

基于Echarts的超市销售可视化分析系统(数据+程序+论文)

本论文旨在研究Python技术和ECharts可视化技术在超市销售数据分析系统中的应用。本系统通过对超市销售数据进行分析和可视化展示&#xff0c;帮助决策层更好地了解销售情况和趋势&#xff0c;进而做出更有针对性的决策。本系统主要包括数据处理、数据可视化和系统测试三个模块。…

ES学习日记(一)-------单节点安装启动

基于ES7.4.1编写,其实一开始用的最新的8.1,但是问题太多了!!!!不稳定,降到7.4 下载好的安装包上传到服务器或虚拟机,创建ES目录,命令mkdir -p /路径xxxx 复制安装包到指定路径并解压: tar zxvf elasticsearch-8.1.0-linux-x86_64.tar.gz -C /usr/local/es/ 进入bin目录安装,命…

工业智能物联网关如何助力工业防震减灾

地震灾害难以预料&#xff0c;一旦发生往往就损失重大。对于工业领域而言&#xff0c;地震灾害的影响不仅仅是对人员安全的威胁&#xff0c;还包括对生产设施的破坏、生产进程的中断以及伴生的持续性经济损失。 随着5G、大数据、物联网技术的发展&#xff0c;面向工业领域构建一…

高效批量管理文件,轻松实现文件批量复制并覆盖相同文件名,轻松管理文件

亲爱的用户们&#xff0c;您是否在批量复制文件时常常被相同文件名困扰&#xff0c;手动一个个改名繁琐又费时&#xff1f;现在&#xff0c;我们为您推出一款智能的文件批量改名工具&#xff0c;帮助您轻松处理复制时的相同文件名&#xff0c;让文件管理更从容&#xff01; 首…

洗车行业在线预约提前下单小程序源码系统 带完整的安装代码包以及搭建教程

随着人们生活水平的提高&#xff0c;汽车保有量不断增加&#xff0c;洗车服务市场需求也日益旺盛。然而&#xff0c;传统的洗车服务方式往往存在排队等待时间长、服务质量不稳定等问题&#xff0c;给消费者带来了不便。因此&#xff0c;开发一款在线预约提前下单小程序&#xf…

基于java+springboot+vue实现的宠物美容机构CRM系统(文末源码+Lw+ppt)23-364

摘要 随着网络科技的不断发展以及人们经济水平的逐步提高&#xff0c;网络技术如今已成为人们生活中不可缺少的一部分&#xff0c;而信息管理系统是通过计算机技术&#xff0c;针对用户需求开发与设计&#xff0c;该技术尤其在各行业领域发挥了巨大的作用&#xff0c;有效地促…

C语言--编译和链接

1.翻译环境 计算机能够执行二进制指令&#xff0c;我们的电脑不会直接执行C语言代码&#xff0c;编译器把代码转换成二进制的指令&#xff1b; 我们在VS上面写下printf("hello world");这行代码的时候&#xff0c;经过翻译环境&#xff0c;生成可执行的exe文件&…

PetaLinux安装详解(Xilinx , linux, zynq, zynqMP)

1 概述 PetaLinux 工具提供在 Xilinx 处理系统上定制、构建和调配嵌入式 Linux 解决方案所需的所有组件。该解决方案旨在提升设计生产力&#xff0c;可与 Xilinx 硬件设计工具配合使用&#xff0c;以简化针对 Versal、Zynq™ UltraScale™ MPSoC、Zynq™ 7000 SoC、和 MicroBl…

【机器学习】包裹式特征选择之序列后向选择法

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

jvm(虚拟机)运行时数据区域介绍

Java虚拟机&#xff08;JVM&#xff09;运行时数据区域是Java程序在运行过程中使用的内存区域&#xff0c;它主要包括以下几个部分&#xff1a; 程序计数器&#xff08;Program Counter Register&#xff09;&#xff1a; 程序计数器是一块较小的内存区域&#xff0c;是线程私有…

uniapp 中引入第三方组件后,更改组件的样式 -使用/deep/不生效

在我们使用Vue搭建项目的时候&#xff0c;我们经常会用到一些UI框架&#xff0c;如Element&#xff0c;iView&#xff0c;但是有时候我们又想去修改Ul框架的样式&#xff0c;当我们修改样式失败的时候&#xff0c;可以尝试一下/deep/&#xff0c;亲测有效。 那失败的原因是什么…

STM32 串口 DMA 接收不定长数据的一种方法

1. 前言 使用串口接收不定长数据时&#xff0c;可以有多种方法&#xff0c;比如最常见的有额外使能一个定时器&#xff0c;在超过定时范围未收到后续的字节时&#xff0c;认为此帧结束&#xff1b;或者利用 IDLE 中断&#xff0c;当数据空闲时&#xff0c;自动产生中断&#x…

SpringCloud实用篇(一)

1.SpringCloud SpringCloud是目前国内使用最广泛的微服务框架。官网地址&#xff1a;Spring Cloud SpringCloud集成了各种微服务功能组件&#xff0c;并基于SpringBoot实现了这些组件的自动装配&#xff0c;从而提供了良好的开箱即用体验&#xff1a; SpringCloud与SpringBoo…