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

window.onload =  function() {
         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

function get_cookie(name){
     var r =  new RegExp("(?:^|;+|\\s+)"+name+"=([^;]*)");
     var m=document.cookie.match(r);
     return(!m?"":m[1]);
}

计算 g_tk

function get_gtk(){
     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群了

// get_group_list.js
// 定义一个回调函数
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() 方法,可以向扩展发送消息。详细参数及用法参考:

在扩展中需要定义一个监听器,以便监听页面发来的消息。

// popup.js
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浏览器扩展相关推荐

  1. Chrome浏览器扩展开发系列之五:Page Action类型的Chrome浏览器扩展

    Page Action类型的Google Chrome浏览器扩展程序,通常也会有一个图标,但这个图标位于Chrome浏览器的地址栏内右端.而且这个图标并非始终出现,而是当某指定的页面打开时才会出现.也 ...

  2. Chrome 浏览器扩展 - Dark Web - Dark Theme for Chrome

    Jerry 之前的文章 Chrome 浏览器扩展 - Night Eye ,介绍的 Night Eye 这款 Chrome 浏览器扩展,只有三个月的试用期.因此我又在网上找到了另一款完全免费的 Chr ...

  3. Chrome 浏览器扩展 - Night Eye

    我以前一直使用一款叫做 Care your Eyes 的 Chrome 浏览器扩展,能将任何网站背景设置成黑色. 最近我的 Chrome 升级到下列这个版本后,发现这个扩展无法工作了: Version ...

  4. Chrome浏览器扩展程序的本地备份

    由于众所周知的原因,有些朋友可能很难在线下载Chrome扩展程序.一种选择是可以让朋友把他成功安装的Chrome扩展程序导出成本地文件,然后让朋友发送给自己,在自己本地电脑上报这些本地文件直接拖到Ch ...

  5. Chrome浏览器扩展学习之 - 添加书签

    今天做了个简单的Chrome浏览器扩展: 添加书签! 就是仿照官方文档中的例子, 在书签管理器中添加一个文件夹, 但是, 但是, 但是... 都怪偶, 要搞什么规范命名, 起了个方法名叫 addbk( ...

  6. 编写一个 Chrome 浏览器扩展程序

    浏览器扩展允许我们编写程序来实现对浏览器元素(书签.导航等)以及对网页元素的交互, 甚至从 web 服务器获取数据,以 Chrome 浏览器扩展为例,扩展文件包括: 一个manifest文件(主文件, ...

  7. Chrome浏览器扩展开发之自动化操作页面

    Chrome浏览器支持扩展(Extension)开发,来定制扩展现有的功能,如:自动登录,定时刷新,抢票等功能,本文以一个简单的小例子,简述Google Chrome 扩展开发的基本步骤,仅供学习分享 ...

  8. Chrome浏览器扩展的写法

    Chrome浏览器扩展写法 1.写在前面 2.前言 2.1. 什么是Chrome插件 2.2. 学习Chrome插件开发有什么意义 2.3. 为什么是Chrome插件而不是Firefox插件 3.开发 ...

  9. Chrome浏览器扩展插件指南:从MV2迁移到Manifest V3

    Chrome Web Store于2021年1月已经开始接受Manifest V3扩展的提交.如果你还在使用MV2版本,那么一定要在官方弃用之前,尽快更新到MV3版本. Chrome浏览器从88版本开 ...

最新文章

  1. Nervos 双周报第 3 期:佛系新年之后的开工大吉!
  2. ALV中下拉列表列的实现
  3. iOS用户设计指南-特别说明
  4. 当我们谈高性能时,我们谈些什么?(送书活动)
  5. SQL 字符 数字 转换字母
  6. javascript 获取上一页的url
  7. C语言 extern “C” - C语言零基础入门教程
  8. Prototype使用$()函数
  9. 【IAST安全左移最佳工具】
  10. MIMIC-iv官方SQL查询标注(简单基础篇)
  11. Python | 蓝桥杯进阶第四卷——图论
  12. 42所双一流高校,都是如何处理学术不端行为的?
  13. java 批注框_Java 回复Word批注
  14. 数字平原CG场景搭建制作流程解析
  15. 九万字图文讲透彻 Linux 电源管理及实例分析
  16. java获取字典所有的key_java字典,多层字典,斗地主发牌,实例展示
  17. 激活锁忘记了id和密码怎么办?记住这几步,很有用!
  18. 总有你值得一试的python开源项目
  19. 提高移动电子商务销售的交互设计模式
  20. Win10与Ubuntu双系统设置开机启动项

热门文章

  1. 最新NVIDIA Ada Lovelace架构 和 RTX 40系列详解
  2. MacOS 如何选择鼠标不飘滚动平滑
  3. 计算机网络翻译,COMPUTERNETWORK_计算机网络(英语论文翻译)
  4. android 浏览器 useragent,各种浏览器UserAgent一览表(桌面+移动)
  5. 服务器运维的日常维护工作
  6. steam服务器维修,Steam 停机及服务器维护 - Steam Support
  7. 后台管理系统模板 - zhadminvue
  8. 25组-四象限法进行功能分析
  9. 今日所学(一) [当日学习内容检查,如果有误,望大家赐教]
  10. 世界睡眠医学杂志世界睡眠医学杂志杂志社世界睡眠医学杂志编辑部2023年第2期目录