简单地说,浏览器插件,可以大大的扩展你的浏览器的功能。包括但不仅限于这些功能:

  • 捕捉特定网页的内容
  • 捕捉HTTP报文
  • 捕捉用户浏览动作,改变浏览器地址栏/起始页/书签/Tab等界面元素的行为
  • 与别的站点通信,修改网页内容……
  • 可以用它来识别一些网站上的广告代码,并直接把这些代码删掉,这样你就不会受到广告的困扰了

  浏览器插件的弊端:会带来一些安全隐患,也可能让你的浏览器变得缓慢甚至不稳定。

插件地址:https://github.com/shengulong/chrome_plugin

1、chrome地址栏输入chrome://extensions/,可以看到当前谷歌浏览器的全部扩展程序

开启开发者模式,可以加载自己制作的扩展程序,或者把自己制作的扩展程序打包

打包第一个扩展程序,生成crx插件和pem密钥,这样别人就可以直接使用安装这个插件了

2、插件制作:

  • 创建一个目录,里面创建2个文件,插件入口文件manifest.json和主程序文件background.js
  • 开发者模式下加载已经解压的扩展程序,选择刚才创建的目录,进行加载,出错会有错误提示

  所有插件都要有manifest.json这个文件,这是插件的配置文件,可看作插件的“入口”,要放在插件的根目录下面

  permissions 属性是一个数组,它定义了扩展需要向 Chrome 申请的权限,比如通过 XMLHttpRequest 跨域请求数据、访问浏览器选项卡(tabs)、获取当前活动选项卡(activeTab)、浏览器通知(notifications)、存储(storage)等,可以根据需要添加。

  background 可以使扩展常驻后台,比较常用的是指定子属性 scripts,表示在扩展启动时自动创建一个包含所有指定脚本的页面。

manifest.json

{
  "manifest_version": 2,   #必须参数,值必须为2
  "name": "Chrome_request_blocking",  #必须参数,插件名字
  "version": "1.0",       #必须参数,插件版本,有格式要求1.x.x
  "background":{"scripts":["js/background.js"]},   #完成插件功能的js脚本路径
   "permissions": [
    "webRequest", "webRequestBlocking", "*://login.tongxue.cn/htdocs/scripts/lib/*"  #拦截url必须允许webRequest和webRequestBlocking.这个设置的意思是插件拦截所有发往"*://login.tongxue.cn/htdocs/scripts/lib/*"的请求
   ]

}

background.js

// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// 'use strict';//监听所有请求
chrome.webRequest.onBeforeRequest.addListener(
        function(details) { return {cancel: true}; },
        {urls: ["https://login.tongdxue.cn/htdocs/scripts/lib/three.min.js"]},  #拦截的url列表
        ["blocking"]
);

注意:html和js要分开执行,也就是说不能在html里放js语句,

      <td>
                    <button id="add" onclick="saveChanges()">增加</button>
                </td>

只能放js引用(<script src="popup.js"></script>)

<!--
      - JavaScript and HTML must be in separate files: see our Content Security
      - Policy documentation[1] for details and explanation.
      -
      - [1]: https://developer.chrome.com/extensions/contentSecurityPolicy
    -->

调试:

在插件的popup.html页面上右键弹出“检查”,然后出现另一个开发者工具界面(这个是插件的开发者工具,有别于网页的开发者工具),然后可以调试popup.html已经popup.html引用的js文件。

background.js是主程序,是看不到的

参考:

1、https://www.jianshu.com/p/2c2a4f497135

2、http://www.voidcn.com/article/p-ffruhaug-pu.html

3、https://segmentfault.com/a/1190000005896962

4、https://www.cnblogs.com/guogangj/p/3235703.html

官网资料:

https://developer.chrome.com/extensions/getstarted

https://developer.chrome.com/extensions/webRequest#event-onBeforeRequest

https://developer.chrome.com/extensions

中午版官网资料:https://crxdoc-zh.appspot.com/extensions/tut_debugging

制作chrome插件/扩展程序,禁止谷歌浏览器访问某些网站的更多相关文章

  1. 【娱乐向】制作Chrome天气预报扩展程序

    1.什么是Chrome扩展程序 Chrome扩展程序是一个用Web技术开发,用来扩展增强浏览器功能的软件.和一般的网页一样,Chrome扩展程序由html.js.css和图片等部分组成.Chrome插 ...

  2. chrome常用扩展程序汇总(程序员版)

    chrome常用扩展程序之程序员版 1.chrome扩展程序 Chrome插件是一个由Web技术开发.用来增强浏览器功能的小程序,其实就是一个由HTML.CSS.JS.图片等静态资源组成的一个.crx ...

  3. Chrome Extension 扩展程序 小白入门

    Chrome Extension 扩展程序 前请说明:本文适用于之前从来没有接触过chrome extension扩展程序的同学~ 编写demo 创建项目文件夹chrome_ext_demo,在项目根 ...

  4. Chrome插件(扩展)

    [干货]Chrome插件(扩展)开发全攻略   写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均 ...

  5. Chrome插件(扩展)开发全攻略

    [干货]Chrome插件(扩展)开发全攻略:https://www.cnblogs.com/liuxianan/p/chrome-plugin-develop.html

  6. 查看Chrome浏览器扩展程序源码的两种方法

    注意:仅在当前最新的版本 55.0.2883.87 m (64-bit)上测试有效 首先获取extensionId: chrome 打开扩展程序页面 chrome://extensions/ 比如我想 ...

  7. 开发chrome插件(扩展)

    官方文档 https://developer.chrome.com/extensions/getstarted.html [干货]Chrome插件(扩展)开发全攻略 http://blog.haoji ...

  8. 16、如何将安装在chrome上的插件(扩展程序)打包成".crx"文件

    1.打开扩展程序: 2.打开开发者模式并选择要打包的插件: 3.打包扩展程序: (1) (2) (3)

  9. 【干货】Chrome插件(扩展)开发全攻略(不点进来看看你肯定后悔)

    写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均在这个demo里面:https://github ...

随机推荐

  1. vsftp为不同用户设置不同的ftp的根目录

    需求 要求ftp登录后的根目录是/var/test/,但是又不能影响其他用户的登录路径,因为有些程序是直接在根目录进行操作的,而没有目录切换的过程.操作过程新建用户 useradd test1user ...

  2. BZOJ3531 [Sdoi2014]旅行 树链剖分 线段树

    原文链接:http://www.cnblogs.com/zhouzhendong/p/8080189.html 题目传送门 - BZOJ3531 题意概括 一棵树,n个节点,每一个节点两个值,一个颜色 ...

  3. Java程序员如何选择未来的职业路线

    一.程序员的特性 技术出身的职场人特性很明显,与做市场.业务出身的职场人区别尤其明显.IT行业中常见的一些职场角色:老板.项目经理.产品经理.需求分析师.设计师.开发工程师.运维工程师等.开发工程师具 ...

  4. 044 SimpleDateFormat的线程安全问题与解决方案

    这个问题,以前好像写过,不过现在这篇文章,有一个重现的过程,还是值得读一读的. URL:SimpleDateFormat的线程安全问题与解决方案

  5. 为表格动态添加一行,miniui组件无效

    想要使用miniui实现这样的功能,点击按钮,在一个<td>中动态添加一个miniui输入框和一个按钮,结果miniui的样式无法渲染,请问这种问题可以怎么解决代码如下: <tr&g ...

  6. 使用Nginx+uwsgi在亚马逊云服务器上部署python+django项目完整版(二)——部署配置及相关知识

    ---恢复内容开始--- 一.前提: 1.django项目文件已放置在云服务器上,配置好运行环境,可正常运行 2.云服务器可正常连接 二.相关知识 1.python manage.py runserv ...

  7. shell 脚本使用记录

    2019-03-26 需求是:因为遇到一些测试偶发性的出现,比如执行了20次会出一次错误,然后就顺手写了一个小脚本,用来判断执行了 n 次,是否出现错误.根据正则来匹配出substring value ...

  8. linux 学习笔记 APACHE安装总结

    #cd /usr/local #mkdir APACHE #tar zxvf /usr/etc/DEV/httpd-2.2.9.tar.gz #mv httpd-2.2.9/* . #rm -rf h ...

  9. AGC 027B.Garbage Collector(贪心)

    题目链接 \(Description\) 坐标轴正半轴上有\(n\)个垃圾,位置分别是\(x_i\).在原点处有一个垃圾桶.一个机器人要从原点出发,将所有垃圾带到垃圾桶(原点)处. 机器人可以在坐标轴 ...

  10. KTV项目之3个ListView的跳转和加载歌手图片

    第一个ListView: 第二个ListView: 第三个ListView: 定义一个KTVUtil类,在里面定义一个静态变量保存歌手图片 //定义一个静态变量保存歌手图片路径 public stat ...