Chrome浏览器插件其实已经很强大了,但它不能访问客户端页面的js变量,对客户端的html元素操作有些脆弱(如:对元素绑定事件等)。这些应该是谷歌出于对客户端安全的考虑吧,但这些有没有可能在Chrome浏览器的插件基础上实现呢?答案是肯定的。在编写Chrome浏览器插件的过程中,我发现可以通过使用js动态引入css和js文件到客户端来实现这些,这样ContentScript相当于客户端自身的脚本文件一样了。

有了对Chrome浏览器插件的这项突破,于是我创建了Chrome浏览器插件工具——Chromex,但在这里仅为作为学术研究与分享。Chromex工具与其说是Chrome浏览器插件工具,倒不如说是一个Web应用的小型服务器,当然这个小型服务器就是服务于Chrome浏览器插件的。

下面介绍一下Chromex工具及其操作:

Chromex工具的目录与配置

  • [bin]目录:
    [gencrt.bat]:可用来生成HTTPS协议的证书(注:运行前需先删除[keystore]和[chromex.crt]文件)
  • [conf]目录:
    [config.properties]:程序配置,一般不需要修改,如下:
plugin.encoding=UTF-8
plugin.id=chromex://webapps/app_id/
plugin.js=E("script").attr("src", "{0}").appendTo(document.body);
plugin.css=E("link").attr("rel", "stylesheet").attr("href", "{0}").appendTo(document.head);
plugin.jqLite=\var e=function(a){var b=this;b.el=document.createElement(a);\b.attr=function(c,d){b.el.setAttribute(c,d);return b};\b.appendTo=function(c){c.appendChild(b.el);return b};return b};\var E=function(a){return new e(a)};
plugin.script=;(function()'{'{0}'}')();
plugin.extensions=txt,html,xml,css,js,jsp
plugin.json=conf/webapps.json
jetty.keystore.path=bin/keystore
jetty.keystore.password=OBF:1u9x1vn61z0p1yta1ytc1z051vnw1u9l
jetty.manager.password=OBF:1wtk1xm61zeh1yt21uo71unr1ytk1zet1xn41wuu
jetty.server.url={0}://localhost:{1}/{2}/
jetty.resource=webapps
jetty.timeout=30000

重点关注以下几个配置项:
–plugin.encoding:插件中文件编码,默认为UTF-8编码
–jetty.keystore.password:生成[keystore]文件时的密码
–jetty.manager.password:生成[chromex.crt]文件的密码
以上两项都可以通过[gencrt.bat]运行时生成,仅且HTTPS协议时使用。
–plugin.id:Web应用的URL前缀
–plugin.extensions:支持的扩展名
以上两项用于在打补丁时,替换指定扩展名文件中的[plugin.id]字符串内容。

Chromex工具的启动

注:启动Chromex工具前需安装JDK1.8,并且配置好JAVA_HOME的环境变量(注:JAVA_HOME指向的目录是Java的JDK目录,而不是JRE目录)
可以直接点击[chromex.jar]或[run.bat]启动,如果应用中含有jsp文件,请点击[runjsp.bat]启动
Chromex工具如图:

Chromex工具分为两个面板(三大块):插件与服务器,Web应用管理

给Chrome浏览器插件打补丁

1、编写Chrome浏览器插件,主要是体现在“mainfest.json”中的“content_scripts”结点配置不一样,其他无变化(具体格式详见上篇)。原则上“content_scripts”是Chrome浏览器解析的,但在这里由Chromex工具来处理,它将css和js文件用js动态引入到客户端的页面中,然后将这些文件剪贴到webapps的目录下。(注:这里的文件路径匹配方式使用的是Ant风格);
2、在点击Patch按钮前,选择好[Web Server]使用的协议与端口;
3、在[Chrome Plugin]栏中,在Source框中,选择编Chrome浏览器插件目录,在Target框中,选择打补丁后保存的Chrome浏览器插件目录,然后点击[Patch]即可。

启动与停止Web服务器

1、点击[Start],即可启动Web服务器(首次运行需HTTPS证书[chromex.crt]导入到Chrome浏览器中)
2、打开Chrome浏览器,输入你启动服务器的参数(如:选择[Protocol:HTTP]+[Port:8080],URL即为http://localhost:8080/),可以浏览服务器下的文件,可用于检测文件是否存在或损坏。如图:

3、启动的服务器可以通过点击[Stop]进行停止
4、你可选择不同的协议与端口启动你的Web应用服务

管理小型Web应用程序

Web服务器支持的文件操作与类型:文本、图片和JSP(包括EL表达式、C/FN/FMT/SQL/X标签等),不支持CLASS文件。
打开[Web Applications]面板,可以看到已经加载进来的Web应用。当然你还可以添加、删除和刷新:
[Add]:添加一些简单的Web应用(如:静态页面,可访问服务器的不包含类和JAR包的小应用)
[Delete]:选择一个或多个Web应用进行删除
[Refresh]:刷新webapps目录下的应用列表

注:博客的相关源码、文件和工具可到http://download.csdn.net/detail/kingwtd/9737497上去下载。Chromex工具的实现依赖于SWT的GUI和Jetty的集成,以及Java生成HTTPS协议证书,有兴趣的可以去网上搜索相关内容!

Chrome浏览器 - 抢票插件的制作与插件工具(下)相关推荐

  1. Chrome浏览器 - 抢票插件的制作与插件工具(上)

    关于Chrome浏览器插件的博客有很多,它的应用场景也很多.一般来讲,Chrome浏览器插件分为三大类:ContentScript.Background和Popup,今天来说一下我们都比较关注的一个插 ...

  2. 桔子浏览器抢票专版官方版

    桔子浏览器抢票专版 v1.0.9 官方版 软件大小:1.19MB 软件语言:简体中文 软件类别:网页浏览 软件授权:官方版 更新时间:2014-12-19 应用平台:/Win8/Win7/WinXP ...

  3. Chrome浏览器设置护眼模式(离线安装插件)

    Chrome浏览器设置护眼模式(离线安装插件) 1.下载眼睛护航Care-your-Eyes_v5.1.3.crx插件 https://pan.baidu.com/s/1Xahnt8NQfDxaKid ...

  4. 360浏览器抢票专版官方版

    360浏览器抢票专版 v7.2.0.132 官方版 软件大小:42.3MB 软件语言:简体中文 软件类别:网页浏览 软件授权:官方版 更新时间:2014-12-23 应用平台:/Win8/Win7/W ...

  5. 2014年360浏览器抢票版

    2014年360浏览器抢票版 360se_qiangpiao.part1 360se_qiangpiao.part2 360se_qiangpiao.part3

  6. 详细!来看吧,包你不后悔 亲测7个!chrome浏览器好用的应用扩展程序/插件推荐

    亲测chrome浏览器好用的应用扩展程序/插件推荐 在这个秃头的时间,我竟然在写博客.因为我今天第一次用cdsn写了解决爬虫报错的博客之后有点兴奋了,所以我打算把我今天做的有意义的事情再写出一篇来. ...

  7. chrome浏览器插件开发-在当前网页中嵌入插件页面

    chrome浏览器插件开发-在当前网页中嵌入插件页面 既然想嵌入插件页面就是需要写html和css 在myPlugin中创建contentCss文件夹,里面创建index.css文件 在manifes ...

  8. 昨晚 Chrome 浏览器停用了 The Great Suspender 插件

    Google 已经明显地阻止了 Chrome 的 The Great Suspender 扩展程序,现有用户现在收到一条消息,称其"由于包含恶意软件而被禁用". 它也已从Chrom ...

  9. 使用Chrome浏览器实现网页长截图 无需安装插件

    有些网页比较长,一屏装不下,需要拉动滚动条才行,这种网页我们想截图截取全部内容时就比较困难 如果使用的是Chrome浏览器,可以使用如下方法截图: 打开网页后 按快捷键 F12 打开移动设备预览模式( ...

最新文章

  1. 1、cocos2d-x环境安装
  2. P5825-排列计数【EGF,NTT】
  3. centos写mysql光标移到上一行_python操作mysql——使用pymysql库
  4. asp.net mvc 注册中的邮箱激活功能实现(二)
  5. 如何创建和配置SQL Server代理警报
  6. mysql ndb 测试_Mysql性能2:基于JDBC的MySQL NDB性能测试结果
  7. 转【input type=file 标签禁止让用户手动输入】
  8. 基于小米球(Ngrok)实现内网穿透
  9. 你以为你在利用碎片化时间,实际上你的时间被碎片化了
  10. 计蒜客: 德克萨斯长角牛 (最短路)
  11. Bing(必应)搜索,为什么用户越来越多?
  12. 算法改进有多快?是否比迭代硬件收益更大?这是 MIT 的结论
  13. 什么是指纹浏览器(浏览器指纹7个重要参数)
  14. AlertPay网银
  15. 海尔2020 无复权收盘价
  16. outlook手机端怎么添加账户,怎么登录公司邮箱
  17. STM32软件复位方式
  18. slashdot网站架构:硬件和软件 zz
  19. 485数据传输c语言程序,基于RS485总线的PC与多个单片机通信的C语言程序
  20. 提高博客访问量的方法

热门文章

  1. 实体链指(3)EL:End-to-End
  2. shiro学习--day1
  3. 无线路由dhcp服务器设置,腾达无线路由器之DHCP服务器设置
  4. Docker 常用命令备忘单
  5. 极米上半年营收20.4亿:同比增21% 百度减持套现8亿
  6. (二十四)优秀员工 - 2
  7. 详细:Source Insight 4.0 延长试用期方法,图文教程
  8. JS高阶编程之柯理化函数
  9. 优酷视频基于用户兴趣个性化推荐的挑战和实践
  10. Spring4.x❶ 两大核心之IOC