首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Chrome】931- 何从零开始开发一个 Chrome 插件?

必填 } manifest_version:代表了manifest文件版本,浏览器会根据这个去指定该版本拥有的功能。...content-scripts content-scripts能够在合适时机(页面载入前、载入后、空闲时)注入脚本,允许内容脚本更改其JavaScript环境,而不与页面或其他内容脚本发生冲突。.../js/content.js"], // css引入需谨慎,因为可能会影响全局样式,同样也能接收多个css文件,会按顺序插入到页面 "css": ["....3.如果popup和background都监听了content发来消息,两者都能收到监听消息,但是callback只会触发一次,被谁触发取决与谁先发送。...content-scripts、popup、background、inject-scripts拥有的权限不一样,通信方式也不一样,理解各个脚本特点,组合使用

1.8K60

Chrome插件开发

什么是 Chrome 插件​ 如果你用过 Chrome 浏览器的话,也许会用到过一些插件,其中比较知名就是油猴插件,通过这些插件能够帮你例如自动完成一些功能,屏蔽广告,相当于一个浏览器内置脚本。...content.js​ 我们主要向页面注入脚本就依靠这个文件,相当于给页面添加了一个 js 文件,但是content和原始页面共享 DOM,但是不共享 JS,如要访问页面 JS(例如某个 JS 变量)...inject.js​ 上文也说到了content是无法访问页面 JS,可以操作 DOM,但是 DOM 却不能调用它,也就是无法在 DOM 通过绑定事件方式调用content代码(包括直接写onclick...,将对应数据发送到对应文件,主要也就如下四种通信方式: popup 和 background​ popup 可以直接调用 background JS 方法,也可以直接访问 background...我模板​ 关于 Chrome 主要内容也就这些,实际开发如果有个模板就能大大方便开发,在原文章该作者已经分享了有对应源代码,这里放上我自写 Chrome 模板编写过程。

3.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

Chrome扩展开发

"css": ["css/custom.css"], // 代码注入时间,可选: "document_start", "document_end", or "document_idle...": "options.html", // 添加一些默认样式,推荐使用 "chrome_style": true }, // 向地址栏注册一个关键字提供搜索建议,只能设置一个关键字 "...zh_CN", // devtools页面入口,注意只能指向一个HTML文件,不能是JS文件 "devtools_page": "devtools.html" } 注:content_scripts段代码会在页面加载对应阶段..."document_start", “document_end”, or "document_idle"自动注入 但是脚本运行在与页面独立上下文中,无法访问到原页面的脚本上下文资源 如需访问原页面脚本上下文...,可在content_scripts脚本中将web_accessible_resources段声明脚本注入到document 样例: js/content-script.js var temp

82420

【干货】Chrome插件(扩展)开发全攻略

": "options.html", // 添加一些默认样式,推荐使用 "chrome_style": true }, // 向地址栏注册一个关键字提供搜索建议,只能设置一个关键字 "...在权限上,它和background非常类似,它们之间最大不同是生命周期不同,popup可以直接通过chrome.extension.getBackgroundPage()获取background...": ["js/inject.js"], } 至于inject-script如何调用content-script代码,后面我会在专门一个消息通信章节详细介绍。...右键菜单 通过开发Chrome插件可以自定义浏览器右键菜单,主要是通过chrome.contextMenusAPI实现,右键菜单可以出现在不同上下文,比如普通页面、选中文字、图片、链接,等等,如果有同一个插件里面定义了多个菜单...扩展可以替代如下页面: 历史记录:工具菜单上点击历史记录时访问页面,或者地址栏直接输入 chrome://history 新标签页:当创建新标签时候访问页面,或者地址栏直接输入 chrome

11.5K40

【爬虫知识】浏览器开发者工具使用技巧总结

Filter 过滤器 Hide data URLs:data URLs 指一些嵌入到文档小型文件,在请求表里面 data: 开头文件就是,如较为常见 svg 文件。...Breakpoints:可以看到已经埋下断点。 Scope:可以看到当前局部或者全局变量,可对进行修改。 Call Stack:可以看到当前代码调用堆栈信息,代码执行顺序为由下至上。...[24.png] --- 打印 windows 对象 在 console 输入如下代码,如只打印 _$ 开头变量值: for (var p in window) { if (p.substr...也就是这个技术提供了一个入口,能够针对不同消息或者 api 在执行前,先执行我操作。“我操作”就是钩子函数。在开发者工具 chrome 插件方式,在匹配到关键词处插入断点。...创建一个文件夹,文件夹创建一个钩子函数文件 inject.js 以及插件配置文件 manifest.json : [30.ong] 打开 chrome 扩展程序, 打开开发者模式,加载已解压扩展程序

1.4K30

Chrome 百度搜索热点过滤插件 - 开源软件

这些所谓热搜,很多时候是带有娱乐性质!往往会浪费我们太多太多时间!我们重要事情是干什么?是学习!! 在强烈愤怒之下,为了让我专心“科研”!不得不亲自动手,写一个浏览器插件了!!!...超级简单 当你写插件时候,还应该明白:chrome插件js 和 网页本身js 分别运行在两个不同环境之中。但是他们公用同一个DOM。可以使用代码注入方式,使得这两个js环境可以互相调用了。...作者:yaowenxu 时间:2018年12月21日16:59:41 主页:https://github.com/yaowenxu 功能:插件注入JavaScript 脚本...); $("#con-ar").bind('DOMSubtreeModified', function(e) { // 无内容 }); }); // 当节点dom 内容发生变化时候...执行效果:你会发现应该出现搜索热点地方果然不见了! ? 在程序书写过程,由于百度异步刷新机制,我再document上加载dom变化事件监听函数(如下代码所示),完美得解决了问题。

44920

JS逆向技巧分享

如果想保留这个函数,可使用 this.xxx=xxx 方式。之后调用时无需debug到xxx函数,直接使用this.xxx 即可。 5. 修改堆栈参数值 6. 写js代码 7....打印windows对象 在console输入如下代码,如只打印_$开头变量值 8....勾子 chrome插件方式,在匹配到关键词处插入断点 8.1 cookie钩子 用于定位cookie关键参数生成位置 当cookie匹配到了 TSdc75a61a , 则插入断点...包含 Authorization 时,则插入断点 8.4 manifest.json 插件配置文件 使用方法 如图所示,创建一个文件夹,文件夹创建一个钩子函数文件inject.js 及 插件配置文件...那么我们重写这个函数就可以了,在Console 一栏中使用匿名函数给本函数重新赋 ,这样就把 _0x355d23 函数变为了一个空函数,达到了破解无限debugger目的 总结 以上为我做js

62921

如何Webpack迁移到Vite

本文将介绍如何将前端web应用程序 Webpack 升级到 Vite。 Vite 是最新前端开发工具,其受欢迎程度和采用率都在大幅增长。可以查看下图中来自 npm trends 下载。...vite 根据你使用前端框架,你可能还需要安装特定框架插件: npm install –save @vitejs/plugin-react 你还可以更新任何构建脚本使用 Vite 代替 Webpack...DefinePlugin 用于在编译时用分配替换源代码标记。...在 Vite ,你可以使用 vite.config.js define 选项实现同样效果,因此可能不需要插件: export default defineConfig({ define:...也可以考虑探索其他现代工具,如 esbuild 和 Parcel,找到最适合你项目需求工具。 请记住,工具并不是最重要,重要是如何使用它来实现目标。

33110

如何Webpack迁移到Vite

本文将介绍如何将前端web应用程序 Webpack 升级到 Vite。 Vite 是最新前端开发工具,其受欢迎程度和采用率都在大幅增长。可以查看下图中来自 npm trends 下载。...vite 根据你使用前端框架,你可能还需要安装特定框架插件: npm install –save @vitejs/plugin-react 你还可以更新任何构建脚本使用 Vite 代替 Webpack...DefinePlugin 用于在编译时用分配替换源代码标记。...在 Vite ,你可以使用 vite.config.js define 选项实现同样效果,因此可能不需要插件: export default defineConfig({ define:...也可以考虑探索其他现代工具,如 esbuild 和 Parcel,找到最适合你项目需求工具。 请记住,工具并不是最重要,重要是如何使用它来实现目标。

26010

Chrome Extension

HTML文件,点击扩展图标,弹出面板页面(如果在manifest.json配置了default_popup为该文件的话) ├ demo.js //一个或多个js文件,popup面板加载js脚本文件...更高层次来看,我们将使用它来向 Chrome 浏览器声明扩展程序将会做什么,以及为了完成这些任务所需要权限 manifest.json属性非常多,全部属性列表附在文章最后,供大家参考。...//如果需要指定不同 locale 使用不同资源文件, //例如在中国显示中文, 在日本显示为日语等 //则会在根目录添加 `_locale` 文件夹; //若没有 `_locale` 文件夹...text description", //图标可以是1个, 或者多个 //一般来说最好方案是提供3个: //- 128x128: 在从 chrome web store 安装过程需要使用,...执行环境称为 isolated world, 和正常页面 JS 不在相同环境 // 保证不同 script 不会冲突, 也不会和网页本身冲突 // 也说明互相无法访问或使用其中变量或函数

2.8K30

浏览器架构温故知新

在 Chrome 多进程架构引入,满足常见浏览器需求。网络进程独立加载页面网络资源,最初是浏览器进程一个模块,现在作为独立进程运行。...主要目标是将与浏览器(Chrome)相关组件划分为不同服务,这些功能可以在单独进程运行,也可以合并为单个进程。 这种转变背后主要动机是根据不同硬件性能来定制 Chrome 性能。...在强大硬件上,与浏览器进程相关联服务在单独进程运行。在功能不太强大硬件上,这些服务在相同进程运行,有效地减少了内存使用。 2....与之前版本不同,Manifest V3优先考虑资源利用率,解决了人们对 Chrome 历史性高资源利用率担忧。其核心目标是通过扩展来限制系统资源消耗,优化浏览器性能。...每个脚本拥有不同权限,强调了它们之间通信重要性。这种交互对于启用广泛插件功能非常重要。 5.

9310

Chrome扩展开发入门

可以同时在一个页面注入多个脚本,也可以在不同页面注入多个不同脚本。...名字就可以看出来,这是一个运行在浏览器后台脚本文件,其运行生命周期页面无关,浏览器打开多个 Tab 都只会共用同一个 background 脚本。...这段代码是位于“后台脚本一段代码,大概意思就是当扩展安装加载完成之后将 color 变量存储在本地 storage 。...> 下面这段代码是弹窗 popup.js 文件代码,点击按钮之后读取前面 background.js 设置颜色,并设置为 popup.html (扩展弹窗模块)背景色...2)也可以其它渠道获取,然后打开开发者模式,直接加载解压代码包。 这种方式也是我们在开发调试过程使用方式。

3.9K30

我写了个 Chrome 插件,一键下载 Pornhub 视频!

我在想 P 站程序猿不会真的这么傻吧,难道就这样拼接一堆字符串??所以我就去前面找到定义那个变量。 ? 然后在控制台输出这个变量。 ? 我整个人都傻了,P 站程序猿这么直接吗?...要不我写一个Chrome插件来完成这件事?因为本身视频加载之前JS肯定会执行。那么用插件方式也更加方便。插件开发过程,最关键问题就是如何将包含所有视频接口信息变量给提取出来。...一开始我是想到是直接在浏览器全局变量window拿到那个变量,这是最简单办法。...我发现通过注入JS代码用console.log(window)输出全局变量还是没有包含flashvars_*****这个变量,不清楚为什么。...然后在插件渲染生成页面,JS间传主要用到了ChromeAPI。插件开发过程还涉及到很多细节问题,比如ico制作,这些就不提了。

10K60

我写了个 Chrome 插件,一键下载 PornHub 视频!

我在想 P 站程序猿不会真的这么傻吧,难道就这样拼接一堆字符串??所以我就去前面找到定义那个变量。 然后在控制台输出这个变量。 我整个人都傻了,P 站程序猿这么直接吗?...要不我写一个 Chrome 插件来完成这件事?因为本身视频加载之前 JS 肯定会执行。那么用插件方式也更加方便。插件开发过程,最关键问题就是如何将包含所有视频接口信息变量给提取出来。...一开始我是想到是直接在浏览器全局变量 window 拿到那个变量,这是最简单办法。...我发现通过注入 JS 代码用 console.log (window) 输出全局变量还是没有包含 flashvars_***** 这个变量,不清楚为什么。...然后在插件渲染生成页面,JS 间传主要用到了 Chrome API。插件开发过程还涉及到很多细节问题,比如 ico 制作,这些就不提了。

52.2K30

我写了个 Chrome 插件,一键下载 Pornhub 视频!

我在想 P 站程序猿不会真的这么傻吧,难道就这样拼接一堆字符串??所以我就去前面找到定义那个变量。 ? 然后在控制台输出这个变量。 ? 我整个人都傻了,P 站程序猿这么直接吗?...要不我写一个Chrome插件来完成这件事?因为本身视频加载之前JS肯定会执行。那么用插件方式也更加方便。插件开发过程,最关键问题就是如何将包含所有视频接口信息变量给提取出来。...一开始我是想到是直接在浏览器全局变量window拿到那个变量,这是最简单办法。...我发现通过注入JS代码用console.log(window)输出全局变量还是没有包含flashvars_*****这个变量,不清楚为什么。...然后在插件渲染生成页面,JS间传主要用到了ChromeAPI。插件开发过程还涉及到很多细节问题,比如ico制作,这些就不提了。

121.1K212

Canvas指纹隐藏实战

例如Canvas指纹,其实就是由于Web 浏览器使用图像处理引擎、图像导出选项、压缩级别、操作系统字体,抗锯齿和亚像素渲染算法等不同,导致画出来图片在像素级别存在微小但稳定差距。...安装后,找到 crx 安装目录,发现他逻辑主要是在 data/content_script/inject.js ,核心逻辑如下: var inject = function () { const...可以看到他给我计算了一个Canvas指纹(即 canvasHash 变量)。多次打开、清理cookie、使用不同显示器后指纹均能够保持稳定。...于是我尝试将随机性 js 脚本中提取到 python 代码里,保证相同会话无论刷新多少次都是用同一套随机数。结果果然印证了我猜想。...据我所知目前被搞比较多网站大都也都没有做这些检测,毕竟除了Canvas指纹之外,他们也有太多工具可以使用

2.9K11

深入讲解 ASP+ 验证

服务器角度来说,客户端验证只意味着验证控件将不同内容发送到 HTML 。除此之外,其事件序列完全相同。服务器端检查仍然执行。... 默认情况下,脚本文件将安装在 "_aspx" 目录默认根目录下,并使用相对于根脚本 include 指令调用,该指令正斜线开头。...被引用输入元素将修改其客户端事件,以便在每次输入更改时调用验证例程。 脚本代码将在用户使用 tab 键在各字段之间切换时执行。...客户端 API 有一个可以在客户机上使用小型 API,以便在您自己客户端代码实现各种效果。因为某些例程不可能隐藏,所以理论上讲,您可以利用客户端验证脚本所定义所有变量、特性和函数。...修改或创建该元素 change 事件,以便在更改时更新验证器。该函数适合于基于多个输入自定义验证器。 其特殊用途是启用或禁用验证器。

5.3K10

【Java 基础篇】Java 标准输出流详解:输出你程序之美

打印变量 你可以将变量打印到标准输出。例如: int age = 25; System.out.println("我年龄是:" + age); 这将打印出 "我年龄是:25"。...打印多个 你可以使用 print 或 println 来一次打印多个,它们将按顺序打印。...printf 方法允许你指定各种格式,例如小数点位数、日期格式等,满足不同需求。 输出重定向 除了打印到控制台,你还可以将标准输出重定向到文件或其他输出目标。...避免硬编码换行符: 避免在输出硬编码换行符(例如 \n 或 \r\n),因为不同操作系统使用不同换行符。可以使用 System.lineSeparator() 方法来获取系统特定换行符。...此外,我们还介绍了如何将输出重定向到文件或字符串,以及一些处理错误输出方法。 标准输出流对于调试和日志记录非常有用,因此请牢记这些知识,以便在开发 Java 应用程序时能够更好地利用它们。

42420

Redis HyperLogLog命令操作实例

Redis HyperLogLog命令 Redis HyperLogLog是一种使用随机化算法,少量内存提供集合唯一元素数量近似。...这样就可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤读取该答复。 Redis Lua 脚本 功能强大,可以实现事务,管道等功能。并且读取延时更小。...将Redis当做使用LRU算法缓存来使用 大量插入数据 分区(Partitioning):如何将数据分布在多个Redis里面 分区是将数据拆分为多个Redis实例过程,因此每个实例只包含一部分键...假设在上面示例ID 0到ID 10000用户将进入实例R0,而ID 10001到ID 20000用户将进入实例R1,以此类推。...哈希分区 在这种类型分区使用散列函数(例如,模函数)将键转换成数字,然后将数据存储在不同Redis实例

65330

生信自动化流程搭建 07 | 配置文件

配置文件 启动管道脚本时,Nextflow将在当前目录和脚本基本目录(如果与当前目录不同查找一个名为nextflow.config文件。...legacy 使用1.10.x版本开始删除命令行选项(默认:)false。 sudo sudo(默认:)执行Docker run命令false。...20 min 阅读Singularity容器页面了解如何将Nexting与Singularity容器一起使用。...envWhitelist 用逗号分隔要包含在容器环境环境变量名称列表。 温度 将选择路径挂载为/tmp容器目录。auto每次创建容器时,都使用特殊创建一个临时目录。...这必须是共享K8s持久卷路径(默认:)/projects。 荚 允许定义一个或多个pod配置选项,例如环境变量,配置映射,机密等。

5.7K20
领券