当前位置: 首页 > news >正文

基于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();

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Spark内核的设计原理
  • 1.1 OpenCV __ Introduction
  • 【Drone】drone编译web端 防墙策略 | 如何在被墙的状态drone顺利编译npm
  • Air780EP-AT开发-HTTP应用指南
  • RabbitMQ的学习和模拟实现|sqlite轻量级数据库的介绍和简单使用
  • Zabbix监控系统:zabbix服务部署+基于Proxy分布式部署+zabbix主动与被动监控模式
  • 在Linux、Windows和macOS上释放IP地址并重新获取新IP地址的方法
  • 探索Mojo模型的超参数优化:自定义搜索策略全解析
  • Anaconda下安装配置Jupyter
  • 如何给7Z分卷文件设置密码?简单几步给文件加上安全锁
  • Python 全栈体系【三阶】(三)
  • 道可云元宇宙每日资讯|国家数据局:积极探索区块链创新应用
  • 站在资本投资领域如何看待分布式光纤传感行业?
  • 运行 npm install 报错-4048
  • 大模型学习笔记十三:工作流
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【mysql】环境安装、服务启动、密码设置
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 【个人向】《HTTP图解》阅后小结
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • avalon2.2的VM生成过程
  • isset在php5.6-和php7.0+的一些差异
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • scrapy学习之路4(itemloder的使用)
  • swift基础之_对象 实例方法 对象方法。
  • vue2.0项目引入element-ui
  • 测试开发系类之接口自动化测试
  • 程序员最讨厌的9句话,你可有补充?
  • 类orAPI - 收藏集 - 掘金
  • 使用API自动生成工具优化前端工作流
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 以太坊客户端Geth命令参数详解
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • puppet连载22:define用法
  • ​一些不规范的GTID使用场景
  • #Linux(Source Insight安装及工程建立)
  • #前后端分离# 头条发布系统
  • $refs 、$nextTic、动态组件、name的使用
  • (Python) SOAP Web Service (HTTP POST)
  • (void) (_x == _y)的作用
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)ssm码农论坛 毕业设计 231126
  • (十六)一篇文章学会Java的常用API
  • (数据大屏)(Hadoop)基于SSM框架的学院校友管理系统的设计与实现+文档
  • (四)模仿学习-完成后台管理页面查询
  • (转)原始图像数据和PDF中的图像数据
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET 8 跨平台高性能边缘采集网关
  • .Net core 6.0 升8.0
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET 表达式计算:Expression Evaluator