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

news/2024/5/20 6:32:14 标签: rpa, 自动化, chrome浏览器

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.niftyadmin.cn/n/5459662.html

相关文章

GT收发器第四篇_QPLL和CPLL工作原理

文章目录 前言一、CPLL工作原理二、QPLL工作原理 前言 每个channel的时钟结构如图&#xff1a; Transceiver内部时钟来源可以是QPLL也可以是自己的CPLL。其内部TX 和 RX 时钟分频器可以单独从 QPLL 或 CPLL 中选择时钟&#xff0c;允许 TX和 RX 数据通道使用不同的参考时钟输入…

GIMP - GNU 图像处理程序 - 工具栏窗口 (Toolbox) 显示

GIMP - GNU 图像处理程序 - 工具栏窗口 [Toolbox] 显示 1. File -> Open2. GIMP 主面板里&#xff0c;右击弹出菜单 -> Tools -> New Toolbox3. Windows -> Dockable Dialogs -> Tool Options4. 工具选项拖动到工具箱里面5. Always On TopReferences GIMP 是跨平…

python爬虫基础----元组高级、字典高级和切片(第八天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

vitess insert 代码分析

一、总统流程 二、源码分析 1.计划器 构建计划入口&#xff0c;每个操作&#xff0c;都有一个单独函数进行计划构建 func createInstructionFor(query string, stmt sqlparser.Statement, reservedVars *sqlparser.ReservedVars, vschema plancontext.VSchema, enableOnlineD…

Python3:ModuleNotFoundError: No module named ‘elftools‘

问题背景 问题 ModuleNotFoundError: No module named ‘elftools’ 解决方法 pip3 install pyelftools 成功&#xff01;&#xff01;&#xff01;

警惕.360勒索病毒:如何预防.360勒索病毒攻击

导言&#xff1a; 在网络安全领域&#xff0c;勒索病毒是一种非常危险的恶意软件&#xff0c;它以其独特的加密方式和高昂的赎金要求&#xff0c;给个人和企业带来了严重的损失。.360勒索病毒便是其中之一&#xff0c;它属于BeijingCrypt勒索病毒家族&#xff0c;具有高度的隐…

vue3-pinia使用(末尾有彩蛋)

什么是 pinia Pinia 是 Vue 的专属状态管理库&#xff0c;它允许你跨组件或页面共享状态。 之前用的是 vuex&#xff0c;后面 vue 官方团队不维护了&#xff0c;推荐使用 pinia 安装 yarn add pinia # 或者使用 npm npm install piniapnpm install piniaStore 是什么&#xf…

【Java常用的API】JDK8相关时间类

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …