chrome浏览器扩展
QQ群查看器--chrome浏览器扩展
源码及程序下载地址:http://pan.baidu.com/share/link?shareid=3636190804&uk=1678089569
关于如何创建一个最基本的 chrome扩展,就不细说了。可以参考:
360极速浏览器扩展开发文档:http://open.chrome.360.cn/extension_dev/overview.html
Chome浏览器扩展开发官方文档:https://developer.chrome.com/extensions/getstarted.html
下面说一下关键代码:
//popup.js
chrome.windows.getCurrent( function(currentWindow) {
chrome.tabs.query({active: true, windowId: currentWindow.id},
function(activeTabs){
chrome.tabs.executeScript(activeTabs[0].id, {file: "./get_group_list.js", allFrames: false});
});
});
}
这段代码在扩展页面加载将会执行。作用是获取当前窗口下的活动标签页面,注入javascript代码,执行。
chrome.windows.getCurrent() 获取当前活动浏览器窗口,一个浏览器窗口包含多个标签页,详细参数及用法参考: https://developer.chrome.com/extensions/windows.html#method-getCurrent
chrome.tabs.query() 根据参数查询标签页。详细参数及用法参考:
https://developer.chrome.com/extensions/tabs.html#method-query
由于获取QQ群列表需要在QQ页面执行 Javascript 代码,所以就需要向QQ页面注入Javascript代码并执行。Chome提供了一个chrome.tabs.executescript() 方法动态地向页面注入JavaScript脚本并执行。详细参数及用法参考:
https://developer.chrome.com/extensions/tabs.html#method-executeScript
用于在QQ页面执行码在get_group_list.js中,在此之前,我们还需要知道,如何获取用户所加的QQ群。当然,QQ用户需要先加入几个群,总得有群才能获取吧。呵呵。随便打开一个QQ群空间。在页面顶端就可以查看到用户所加的群。用Fiddler http调试工具抓取http包。分析得到
http://qun.qzone.qq.com/cgi-bin/get_group_list?callbackFun=_GetGroup&uin=453867443&random=0.18549695408314274&g_tk=1705493508
服务器返回json格式的数据,包含了用户所加的群信息。上面的地址中g_tk是一个关键的参数,没有这个参数获取不到数据。计算这个参数的代码在QQ群空间的页面中。
计算g_tk时需要一个Cookie (skey),下面的的代码是获取一个Cookie
var r = new RegExp("(?:^|;+|\\s+)"+name+"=([^;]*)");
var m=document.cookie.match(r);
return(!m?"":m[1]);
}
计算 g_tk
var hash=5381;
str = get_cookie("skey");
for( var i=0, len=str.length; i < len; ++i){
hash+=(hash<<5)+str.charCodeAt(i);
}
return hash&0x7fffffff;
}
这两段代码都可以在QQ群空间页面中查到,我把它提取了出来,稍作了修改。
有了这些就可以通过 ajax向腾讯服务查询QQ群了
// 定义一个回调函数
function _GetGroup_Callback(obj) {
// 向扩展送一个请求。
chrome.extension.sendRequest(obj);
}
var get_group_list_url = "http://qun.qzone.qq.com/cgi-bin/get_group_list?callbackFun=_GetGroup&uin=" + get_login_uin() +"&random=0.18549695408314274&g_tk=" + get_gtk();
xhr = new XMLHttpRequest();
xhr.open("GET", get_group_list_url);
xhr.onreadystatechange = function() {
if(xhr.readyState == 4) {
eval(xhr.responseText);
}
}
xhr.send();
由于返回的数据有一个回调函数,所以需要定义一个回调用,并用 eval 进行调用。
获取到了数据之后,就要把数据传回给扩展了,chrome提供了一个chrome.extension.sendRequest() 方法,可以向扩展发送消息。详细参数及用法参考:
在扩展中需要定义一个监听器,以便监听页面发来的消息。
chrome.extension.onRequest.addListener( function(obj){
// 显示群列表
show_group_list(obj);
});
显示获取到的数据就很简单了,会点html,css,javascript都会做的。不再说了。程序有个缺陷,只能在打开的QQ空间,QQ群空间,WebQQ页面下才能获取到数据,具体是因为需要用的这些页面的Cookie。
运行截图:
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
chrome浏览器扩展相关推荐
- Chrome浏览器扩展开发系列之五:Page Action类型的Chrome浏览器扩展
Page Action类型的Google Chrome浏览器扩展程序,通常也会有一个图标,但这个图标位于Chrome浏览器的地址栏内右端.而且这个图标并非始终出现,而是当某指定的页面打开时才会出现.也 ...
- Chrome 浏览器扩展 - Dark Web - Dark Theme for Chrome
Jerry 之前的文章 Chrome 浏览器扩展 - Night Eye ,介绍的 Night Eye 这款 Chrome 浏览器扩展,只有三个月的试用期.因此我又在网上找到了另一款完全免费的 Chr ...
- Chrome 浏览器扩展 - Night Eye
我以前一直使用一款叫做 Care your Eyes 的 Chrome 浏览器扩展,能将任何网站背景设置成黑色. 最近我的 Chrome 升级到下列这个版本后,发现这个扩展无法工作了: Version ...
- Chrome浏览器扩展程序的本地备份
由于众所周知的原因,有些朋友可能很难在线下载Chrome扩展程序.一种选择是可以让朋友把他成功安装的Chrome扩展程序导出成本地文件,然后让朋友发送给自己,在自己本地电脑上报这些本地文件直接拖到Ch ...
- Chrome浏览器扩展学习之 - 添加书签
今天做了个简单的Chrome浏览器扩展: 添加书签! 就是仿照官方文档中的例子, 在书签管理器中添加一个文件夹, 但是, 但是, 但是... 都怪偶, 要搞什么规范命名, 起了个方法名叫 addbk( ...
- 编写一个 Chrome 浏览器扩展程序
浏览器扩展允许我们编写程序来实现对浏览器元素(书签.导航等)以及对网页元素的交互, 甚至从 web 服务器获取数据,以 Chrome 浏览器扩展为例,扩展文件包括: 一个manifest文件(主文件, ...
- Chrome浏览器扩展开发之自动化操作页面
Chrome浏览器支持扩展(Extension)开发,来定制扩展现有的功能,如:自动登录,定时刷新,抢票等功能,本文以一个简单的小例子,简述Google Chrome 扩展开发的基本步骤,仅供学习分享 ...
- Chrome浏览器扩展的写法
Chrome浏览器扩展写法 1.写在前面 2.前言 2.1. 什么是Chrome插件 2.2. 学习Chrome插件开发有什么意义 2.3. 为什么是Chrome插件而不是Firefox插件 3.开发 ...
- Chrome浏览器扩展插件指南:从MV2迁移到Manifest V3
Chrome Web Store于2021年1月已经开始接受Manifest V3扩展的提交.如果你还在使用MV2版本,那么一定要在官方弃用之前,尽快更新到MV3版本. Chrome浏览器从88版本开 ...
最新文章
- 我在中关村给不了你国贸的爱
- Microsoft Dynamics CRM 2013升级2015(二)正式安装升级 2015及 Reporting Extensions安装
- 【Android RTMP】RTMP 数据格式 ( FLV 视频格式分析 | 文件头 Header 分析 | 标签 Tag 分析 | 视频标签 Tag 数据分析 )
- centos内核参数优化
- CSS 文字垂直居中自适应 - 代码篇
- 【RMQ问题】求数组区间最大值,NYOJ-1185-最大最小值
- 学习linux/unix编程方法的建议-转
- Oracle flashback之传统恢复vs.重现数据库
- Android设计模式(1)----单例模式
- mysql 语句 简书_MySQL基本语句
- python gdbm_linux下python安装
- android截屏方法是黑屏,Android截屏表面视图显示黑屏
- 软考每日一练||网络工程师
- 图像坐标球面投影_C/C++ 图像处理(7)------图像の球面投影算法
- 计算机域 用户怎么设置,电脑怎么加域设置
- 如何突破思维局限去思考世界,去读读以下三个理论
- javascript history对象详解
- 学会计学java_我只是一个初中毕业的,现在很想学会计,我不知道从何学起?...
- 遍历文件夹打印所有文件名
- [BZOJ1123][POI2008]BLO(tarjan求点双+树形dp)
热门文章
- CPU速度慢了,怎么办?
- css特效开发,7款吸引人眼球的jQuery/CSS3特效实例分享
- 论文计算机的教学方法,对于计算机教学方法的探讨论文原稿
- there is no getter for property named 错误
- android系统读写速度,Android 通过adb测试机器读写速度(rk)
- 中小型企业如何实现数字化转型?看完这5点你就明白了
- H3C构建一个中小型企业局域网
- java-php-python-ssm校园闲置物品交易系统计算机毕业设计
- 第5章 uin-app本地主机数据跨域(Cors)数据交互实现
- 面试官再问你优先级队列,请把这篇文章丢给他