QQ群成员信息获取方法
版本号:2016年7月6日
二、思路:
Q群的人员……
没发言的用户……
嗯……群管理!(小灯泡一只弹出从头上)
Google 之!得 http://qun.qq.com/member.html
。
于是数据有了,还缺个分析工具,如果只是排个序的话……用 Excel 吧!
因为 Excel 可以导入 tab 分割的 .txt 文件,
所以数据只需要输出成 .txt 就行,也是相当简单的。
三、功能、使用方式及代码:
功能:
对于每个成员可以获取的信息有:
-
Q号
、昵称
、Q龄
、性别
-
群名片
、入群时间
、最后发言时间
-
身份
、等级
、积分
-
标记
、标签
当然你得先是群成员。
并且获取到的数据可以在 Excel 中使用
获得的数据能干啥?唔……这个我管不着。。。
使用方法:
-
复制下面的
源代码
。 -
在地址栏打个 “J”。
-
然后粘贴。
-
输入群号
-
效果
-
复制这些数据,粘贴到记事本
-
再从记事本复制出来,粘贴到 Excel
就不上图了。。。
完成!
源代码:
avascript:/* 打开 http://qun.qq.com/member.html 在地址栏打个 "J", 然后粘贴本js代码 */;
/**/qqGroupNumber = window.prompt("输入需要的群号(默认机器学习爱好者群)","464104106");
/**/document.body.innerHTML = "LOADING<style>*{text-align:center; font-size:4em}</style>";
/**/var bkn = (
/**//**/function (skey) {
/**//**//**/var hash = 5381;
/**//**//**/for (var i = 0, len = skey.length; i < len; ++i)
/**//**//**//**/hash += (hash << 5) + skey.charAt(i).charCodeAt();
/**//**//**/return hash & 2147483647;
/**//**/})((document.cookie.split("; ") ).map(
/**//**//**/function(x){
/**//**//**//**/return x.split("=");
/**//**//**/}
/**//**/).filter(
/**//**//**/function(x){
/**//**//**//**/return "skey" == x[0];
/**//**//**/})[0][1]);
/**/var srcQunManage = "http://qun.qq.com/cgi-bin/qun_mgr/search_group_members?st=0&end=2000&gc=" + qqGroupNumber + "&bkn=" + bkn;
/**/var srcQunZone = "http://qun.qzone.qq.com/cgi-bin/get_group_member?groupid=" + qqGroupNumber + "&g_tk=" + bkn;
/**/var get = (function(url) {
/**//**/var xhr = new XMLHttpRequest();
/**//**/xhr.open("get", url, false);
/**//**/xhr.send();
/**//**/return xhr.responseText;
/**/});
/**/var mem1 = JSON.stringify(
/**//**/(JSON.parse(
/**//**//**/get(srcQunManage)
/**//**//**/.replace(/([^{,:])"([^:,}])/gmi, "$1\\\"$2")
/**//**/)
/**//**/)["mems"]);
/**/document.body.innerHTML = (
/**//**/"LOADING<style>*{text-align:center; font-size:4em}</style>" +
/**//**/"<script>\n" +
/**//**//**/"mem1 = " + mem1 + ";\n" +
/**//**//**/"ele = document.body;\n" +
/**//**//**/"_Callback = function(json){\n" +
/**//**//**//**/"var csvCell = function(x){\n" +
/**//**//**//**//**/"if(typeof(x) === \"string\"){\n" +
/**//**//**//**//**//**/ "x = x.replace(/</g, \"<\")\n" +
/**//**//**//**//**//**//**/ " .replace(/>/g, \">\")\n" +
/**//**//**//**//**//**//**/ " .replace(/&/g, \"&\")\n" +
/**//**//**//**//**//**//**/ " .replace(/"/g, '\"')\n" +
/**//**//**//**//**//**//**/ " .replace(/'/g, \"'\");\n" +
/**//**//**//**//**//**/"return \"\\\"\".concat( x.replace(/\"/gmi, \"\\\"\\\"\") ).concat(\"\\\"\")\n" +
/**//**//**//**//**/"}\n" +
/**//**//**//**//**/"return \"\".concat(x)\n" +
/**//**//**//**/"};\n" +
/**//**//**//**/"mem2 = json[\"data\"][\"item\"];\n" +
/**//**//**//**/"mem1 = mem1.sort(function(a, b){return a[\"uin\"] > b[\"uin\"] && 1 ||-1;});\n" +
/**//**//**//**/"mem2 = mem2.sort(function(a, b){return a[\"uin\"] > b[\"uin\"] && 1 ||-1;});\n" +
/**//**//**//**/"output = mem1.map(\n" +
/**//**//**//**//**/"function(x, index){\n" +
/**//**//**//**//**//**/"return (\n" +
/**//**//**//**//**//**//**/"csvCell(x[\"uin\"]) + '\t' +\n" +
/**//**//**//**//**//**//**/"csvCell(x[\"card\"]) + '\t' +\n" +
/**//**//**//**//**//**//**/"csvCell(x[\"flag\"]) + '\t' +\n" +
/**//**//**//**//**//**//**/"csvCell(x[\"g\"]) + '\t' +\n" +
/**//**//**//**//**//**//**/"csvCell(x[\"join_time\"]) + '\t' +\n" +
/**//**//**//**//**//**//**/"csvCell(x[\"last_speak_time\"]) + '\t' +\n" +
/**//**//**//**//**//**//**/"csvCell(x[\"lv\"][\"level\"]) + '\t' +\n" +
/**//**//**//**//**//**//**/"csvCell(x[\"lv\"][\"point\"]) + '\t' +\n" +
/**//**//**//**//**//**//**/"csvCell(x[\"nick\"]) + '\t' +\n" +
/**//**//**//**//**//**//**/"csvCell(x[\"qage\"]) + '\t' +\n" +
/**//**//**//**//**//**//**/"csvCell(x[\"role\"]) + '\t' +\n" +
/**//**//**//**//**//**//**/"csvCell(x[\"tags\"]) + '\t' +\n" +
/**//**//**//**//**//**//**/"csvCell(mem2[index][\"iscreator\"]) + '\t' +\n" +
/**//**//**//**//**//**//**/"csvCell(mem2[index][\"ismanager\"]) + '\t' +\n" +
/**//**//**//**//**//**//**/"csvCell(mem2[index][\"nick\"]) + '\t' +\n" +
/**//**//**//**//**//**//**/"csvCell(mem2[index][\"uin\"])\n" + ");\n" +
/**//**//**//**//**/"}\n" +
/**//**//**//**/").join(\"\\n\");\n" +
/**//**//**//**/"ele.innerHTML = \"<pre>\" + \"Q号\t群名片_短\t标记\t性别\t入群时间\t发言时间\t等级\t积分\t昵称\tQ龄\t身份\t标签\t群主\t管理\t群名片\tQ号_重复<br />\"+ output + \"</pre>\";\n" +
/**//**//**/"};\n" +
/**//**/"</script>\n" +
/**//**/"<script src='" + srcQunZone + "'></script>\n"
/**/); //更新:2016年6月11日
答疑
-
为什么源码里面全是
/**/
因为会有各种原因把多个空格连成一个,破坏缩进
而用了
/**/
之后即使代码的空格被缩减过,也可以准确还原出缩进 -
其他问题?来评论问!
评论
发表评论