基于chrome插件的企业应用
一、chrome插件技术介绍
1、chrome插件组件介绍
名称 | 职责 | 访问权限 | DOM访问情况 |
popup | 弹窗页面。即打开形式是通过点击在浏览器右上方的icon,一个弹窗的形式。 注: 展示维度 browser_action:所有页面 page_action:指定页面 | 可访问绝大部分api | 不可以 |
background | 插件运行的环境。插件启动后就常驻后台,只有一个。这类脚本是运行在浏览器后台的,注意它是与当前浏览页面无关的。 | 可访问绝大部分api | 不可以 |
content_scripts | 注入到Web页面的JS文件。可以是多个,也可以对注入条件进行设置,也就是满足什么条件,才会将这些js文件注入到当前web页面中。 | 只能访问extennsion、runtime等部分api 例如不能访问chrome.webRequest、chrome.tabs、chrome.windows | 可以 |
2、chrome组件通信方式介绍
接收方 发起方 | content_scripts | popup | background |
content_scripts | - | Chrome.runtime.sendMessage Chorme.runntime.connect | Chrome.runtime.sendMessage Chorme.runntime.connect |
popup | Chrome.tabs.sendMessage Chorme.tabs.connect | - | Chrome.extension.getBackgroudPage() |
background | Chrome.tabs.sendMessage Chorme.tabs.connect | Chrome.extension.getViews |
二、应用场景介绍
1、网页翻译插件
利用content-scripts渲染网页翻译页面,然后通过dom元素获取网页内容,最后调用翻译接口即可完成插件实现
2、系统数据爬取插件
利用content-scripts渲染数据爬取页面,然后通过background.js传递系统cookie,最后调用后端爬虫接口即可完成插件实现
注:后端爬虫接口通过selenium-java实现
3、应用效果截图分享
三、源代码分享
插件前端源码:assist-chrome-plugin: chrom助手插件(注:UI风格来自iviewui)
插件后端源码数据爬虫核心代码分享
#初始化配置
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("headless");
chromeOptions.addArguments("no-sandbox");
chromeOptions.addArguments("disable-dev-shm-usage");
Map<String, Object> hashMap = new ConcurrentHashMap<>();
hashMap.put("profile.default_content_settings.popups", 0);
//自动爬取系统文件到本地目录
hashMap.put("download.default_directory", "/download");
chromeOptions.setExperimentalOption("prefs", hashMap);
//chromeOptions.setBinary("D:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");#开始爬取
ChromeDriver chromeDriver = new ChromeDriver(chromeOptions);
//cookieList来自前端
for(Cookie cookie:cookieList){chromeDriver.manage().addCookie(cookie);
}
chromeDriver.get(pageUrl);
//fecthDataDom为dom对应的cssSelector标签
String fetchDataJs = "return document.querySelector(\""+fecthDataDom+"\").click()";
Thread.sleep(domLoadTime);//dom的渲染时间
chromeDriver.executeScript(fetchDataJs);
chromeDriver.quit();
相关文章:
基于chrome插件的企业应用
一、chrome插件技术介绍 1、chrome插件组件介绍 名称 职责 访问权限 DOM访问情况 popup 弹窗页面。即打开形式是通过点击在浏览器右上方的icon,一个弹窗的形式。 注: 展示维度 browser_action:所有页面 page_action:指定页面 可访问绝大部分api 不可以 bac…...
unittest框架和pytest框架区别及示例
unittest框架和pytest框架区别及示例 类型unittest框架pytest框架unittest框架示例pytest框架示例安装python内置的一个单元测试框架,标准库,不需要安装第三方单元测试库,需要安装使用时直接引用 import unittest安装命令:pip3 install pyte…...
IDEA性能优化方法解决卡顿
文章目录 前言一、可以采取以下措施:二、VM Options的参数解释1. 内存设置2. 性能调优3. GC(垃圾回收)调优4. 调试和诊断5. 其它设置6.设置 VM Options 的步骤: 总结 前言 我们在使用 IntelliJ IDEA的时候有时候会觉得卡顿&#x…...
Mysql集合转多行
mysql 集合转多行 SELECT substring_index(substring_index(t1.group_ids, ,, n), ,, -1) AS group_id FROM (select 908,909 as group_ids ) t1, (SELECT rownum : rownum 1 AS n FROM ( SELECT rownum : 0 ) r, orders ) t2 WHERE n < ( LENGTH( t1.group_ids ) - LENGT…...
MFC:只允许产生一个应用程序实例的具体实现
在MFC(Microsoft Foundation Class)应用程序中,如果你想限制只允许产生一个应用程序实例,通常会使用互斥体(Mutex)来实现。这可以确保如果用户尝试启动第二个实例时,它会被阻止或将焦点返回到已…...
深入理解TCP/IP协议中的三次握手
👍 个人网站:【洛秋资源小站】 深入理解TCP/IP协议中的三次握手 在计算机网络中,TCP/IP协议是通信的基石。理解TCP/IP协议中的三次握手是掌握网络通信的关键步骤之一。本文将详细解释TCP/IP协议中的三次握手过程,探讨其工作原理&…...
【React】事件绑定、React组件、useState、基础样式
React 教程 目录 事件绑定 1.1. 基础实现 1.2. 使用事件参数 1.3. 传递自定义参数 1.4. 同时传递事件对象和自定义参数 React 组件 2.1. 组件是什么 2.2. 组件基础使用 useState:状态管理 3.1. 基础使用 3.2. 状态的修改规则 3.3. 修改对象状态 基础样式 4.1. 行…...
x264、x265、libaom 编码对比实验
介绍 x264 是一个开源的高性能 H.264/MPEG-4 AVC 编码器,它以其优秀的压缩比和广泛的适用性而闻名。x265 是一种用于将视频流编码成 H.265/MPEG-H HEVC 压缩格式的免费软件库和应用程序,以其下一代压缩能力和卓越的质量而闻名 。作为 x264 的继任者,x265 支持 HEVC 的 Main、…...
c++网络编程实战——开发基于ftp协议的文件传输模块(二) 配置ftp服务与手动执行ftp命令
配置FTP服务 一.前言 博主的环境是阿里云服务器,操作系统版本为 ubuntu20.04,一下所有操作都基于以上环境下进行的操作,同时为了简化操作我将开放同一个云服务器的不同端口,让它同时充当服务端和客户端,大家如果想测试效果更好且…...
Sphinx 安装相关指令解释
安装指令 pip3 install sphinx-autobuildpip3 install sphinx_rtd_themepip3 install sphinx_markdown_tablepip3 install sphinx_markdown_tables pip3 install sphinx-autobuild 功能:安装 sphinx-autobuild 包。作用:sphinx-autobuild 是一个工具&am…...
npm下载包-更改默认缓存目录
npm(Node Package Manager)的缓存目录是npm用于存储已下载包的本地位置,以便在后续安装相同包时能够快速复用,从而节省时间和带宽。npm缓存目录的具体位置会根据操作系统的不同而有所差异。 Windows系统 在Windows系统中&#x…...
PWM再理解(1)
前言 昨天过于劳累,十点睡觉,本来想梳理一下PWM,今天补上。 PWM内涵 PWM全称:Pulse Width Modulation,也就是脉宽调制的意思,字面意思理解就是对脉冲的宽度进行改变。准确就是通过数字输出对模拟电路进行…...
CSPVD 智慧工地安全帽安全背心检测开发包
CSPVD SDK适用于为各种智慧工地应用增加安全防护穿戴合规的检测能力,能够有效检测未戴安全帽和未穿 安全背心的人员,提供Web API和原生API。官方下载:CSPVD工地安全防护检测 1、目录组织 CSPVD开发包的目录组织说明如下: xlpr_…...
给常用Docker命令起别名,提高效率
在日常的开发和运维工作中,Docker是一款非常常用的工具。为了提高工作效率,我们可以为一些常用的Docker命令设置别名,这样可以更快速地执行这些命令。以下是如何给常用Docker命令起别名的详细步骤。 修改/root/.bashrc文件 首先,…...
基于深度学习的草莓成熟度实时检测系统(UI界面+YOLOv8/v7/v6/v5模型+完整代码与数据集)
1. 引言 在农业领域,草莓的成熟度检测是保证果实品质的重要环节。传统的方法依赖于人工经验,不仅耗时费力,还容易出错。本文介绍如何使用YOLO(You Only Look Once)系列模型(YOLOv8/v7/v6/v5)构…...
【devops】ttyd 一个web版本的shell工具 | web版本shell工具 | web shell
一、什么是 TTYD ttyd是在web端一个简单的服务器命令行工具 类似我们在云厂商上直接ssh链接我们的服务器输入指令一样 二、安装ttyd 1、macOS Install with Homebrew: brew install ttydInstall with MacPorts: sudo port install ttyd 2、linux Binary version (recommend…...
Windows环境Apache配置解析PHP,以及配置虚拟主机详解
1. 安装 Apache 和 PHP 确保你已经安装了 Apache Web 服务器和 PHP。你可以从官方网站下载它们的 Windows 版本: Apache HTTP ServerPHP 2. 配置 Apache 配置 httpd.conf 文件 找到你的 Apache 安装目录下的 conf 文件夹中的 httpd.conf 文件,使用文…...
Redis高级篇—分布式缓存
目录 Redis持久化 RDB持久化 AOF持久化 RDB与AOF对比 Redis主从 全量同步 增量同步 Redis哨兵 RedisTemplate集成哨兵实现 Redis分片集群 散列插槽 集群伸缩 故障转移 自动故障转移 手动故障转移 RedisTemplate访问分片集群 Redis持久化 RDB持久化 RDB全称Re…...
c++端的类,作为组件在qml端使用
qml使用c端的类,作为组件在qml端使用 这个类必须继承QObject 这个类必须继承QObject #ifndef COLLISIONALARM_H #define COLLISIONALARM_H#include <QObject>class CollisionAlarm : public QObject {Q_OBJECT//这个宏就叫做反射机制,让qml端直接…...
Android 14 适配之 - 全屏 intent 通知
全屏 intent 通知 在 Android 11(API 级别 30)中,任何应用都可以在手机处于锁定状态时使用 Notification.Builder.setFullScreenIntent 发送全屏 intent。在 AndroidManifest 中声明 USE_FULL_SCREEN_INTENT 权限即可; 全屏 int…...
如何在 Vue 和 JavaScript 中截取视频任意帧图片
大家好!今天我们来聊聊如何在 Vue 和 JavaScript 中截取视频的任意一帧图片。这个功能在很多场景下都非常有用,比如视频编辑、视频预览等。本文将带你一步步实现这个功能,并且会提供详细的代码示例。 准备工作 首先,我们需要一个…...
代码随想录学习 day54 图论 Bellman_ford 队列优化算法(又名SPFA) 学习
Bellman_ford 队列优化算法(又名SPFA) 卡码网:94. 城市间货物运输 I 题目描述 某国为促进城市间经济交流,决定对货物运输提供补贴。共有 n 个编号为 1 到 n 的城市,通过道路网络连接,网络中的道路仅允许从…...
递归遍历树结构,前端传入一整颗树,后端处理这个树,包括生成树的id和pid等信息,
递归逻辑 递归遍历树结构,将树结构转换list集合 并添加到 flowStepTree 集合 // 递归遍历树结构,将树结构转换list集合 并添加到 flowStepTree 集合private static void settingTree(ProductFlowStepVO node, Long parentId, String ancestors, List<…...
Nginx详解(超级详细)
目录 Nginx简介 1. 为什么使用Nginx 2. 安装Nginx Nginx的核心功能 1. Nginx反向代理功能 2. Nginx的负载均衡 3 Nginx动静分离 Nginx简介 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协…...
postman使用旧版本报错version mismatch detected
卸载 postman又重装了别的版本,打开后遇到了这个报错,解决办法如下: 删除缓存文件 C:\Users\Administrator\AppData\Roaming\Postman 下载PostMan 提取码:6k51...
探索数据的隐藏维度:使用Scikit-Learn进行特征交互性预测
探索数据的隐藏维度:使用Scikit-Learn进行特征交互性预测 在机器学习中,特征交互性是指不同特征之间可能存在的复杂关系,这些关系对预测结果有着重要影响。Scikit-Learn(简称sklearn),作为Python中广受欢迎…...
首个WebAgent在线评测框架和流程数据管理平台来了,GPT-4、Qwen登顶闭源和开源榜首!
在当今科技迅速发展的时代,大型语言模型(Large Language Model,LLM)正以前所未有的速度改变着我们与数字世界的互动方式。基于LLM的智能代理(LLM Agent),从简单的信息搜索到复杂的网页操作&…...
UE TSharedPtr
文章目录 概述TSharedPtrTSharedPtr包含2部分 构造,析构,拷贝构造,移动构造构造拷贝构造移动构造 小结 概述 之前写过一篇c的智能指针的,这篇写下ue的。本质上来说是差不多的,可以简单看看。 TSharedPtr 如下图&…...
基于X86+FPGA+AI的远程医疗系统,支持12/13代 Intel Core处理器
工控主板:支持12/13代 Intel Core处理器,适用于远程医疗系统 顺应数字化、网络化、智能化发展趋势,国内医疗产业改革正在积极推进,远程医疗、智慧医疗等新模式新业态创新发展和应用,市场空间不断扩大,而基…...
微信小程序开发入门指南
文章目录 一、微信小程序简介二、微信小程序开发准备三、微信小程序开发框架四、微信小程序开发实例六、微信小程序开发进阶6.1 组件化开发6.2 API调用6.3 云开发 七、微信小程序开发注意事项7.1 遵守规范7.2 注意性能7.3 保护用户隐私 八、总结 大家好,今天将为大家…...
app打包网站开发源码/模板网站建站公司
可靠性建模 编程By Rhea Moutafis瑞亚穆塔菲斯(Rhea Moutafis) Originally published on Aug. 25, 2020, on Hewlett Packard Enterprise’s Enterprise.nxt, publishing insights about the future of technology.最初于2020年8月25日在Hewlett Packard Enterprise的 Enterpr…...
上海市工程质量建设协会网站/b2c有哪些电商平台
SQL 函数 Abs(number) 取得数值的绝对值。 Asc(String) 取得字符串表达式的第一个字符ASCII 码。 Atn(number) 取得一个角度的反正切值。 CallByName (object, procname, usecalltype,[args()]) 执行一个对象的方法、设定或传回对象的属性。 CBool(expression) 转换表达式为Boo…...
短期网页设计培训/长沙seo网站排名优化公司
很多同学都听说过,现代操作系统比如Mac OS X,UNIX,Linux,Windows等,都是支持“多任务”的操作系统。 什么叫“多任务”呢?简单地说,就是操作系统可以同时运行多个任务。打个比方,你…...
公司制作网站费用怎么做分录/如何做网页制作
概述 本文主要介绍下平常可能会使用到的命令:jps、jinfo、jmap、jstat、jstack jps jps主要是查看Java进程号,有个Java进程号后面的命令也才能发挥作用。 jps -help可以列出jps支持的参数,大家可以试一下 jinfo jinfo后面跟jps打出来的…...
手机640的设计稿做网站/站长之家关键词查询
Java 多线程编程 Java给多线程编程提供了内置的支持。一个多线程程序包含两个或多个能并发运行的部分。程序的每一部分都称作一个线程,并且每个线程定义了一个独立的执行路径。 多线程是多任务的一种特别的形式。多线程比多任务需要更小的开销。 这里定义和线程相关…...
qq业务代理网站建设/最新百度快速排名技术
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。解题思路及代码方法一:哈希法基本思路就是遍历单链表的每个结点,将之前没有被访问的结点存入 set,如果某个结点被…...