免 IDKEY 跳转(加) QQ 群-Python 实现方案

瞎扯

最近站长在研发一套关于 QQ 的各种跳转的 PHP 项目『forceQ』,名虽有“强制”之意,但受限于越来越严格的制度,现在的跳转特别『温柔』——反而受跳转目标影响。

这个项目作为副站长推荐的练手项目,也是我入坑 PHP 的第一个像样的程序,我应对比较认真,连名字也简短有力!

开发进程较快,但是最近受到一个问题的阻挠——正是今天要讨论的『免 IDKEY 跳转(加) QQ 群』。

正文

要实现这个功能,我们首先需要了解 QQ 群推广链接的组成,一般是跳转接口 + IDKEY。只是现在新版链接里没有 IDKEY 这个参数。。

遂上网搜索相关内容,不过网上相关资源真的少,有的都是五年前的文章。但是根据文章亲手操作,发现旧链接组成方式(带 IDKEY)还可继续使用(还能用多久就不知道了)。

Reference

JAVA——根据QQ群号得到idkey以及QQ群加群链接[网页版本]解决方案_Starzkg的博客-CSDN博客_qq群key怎么获取

实现方式

具体所用操作参考上面的链接,Java 程序和 PHP 程序也可参考上面。只是 Python 作为我入门入了三年(还没进入实践阶段)的语言,加上其在爬虫邻域强大的地位,我很轻松就用 Python 写出来了。

导入模块

访问那个 IDKEY 查询链接需要带上时间戳,所以眼咪咪就

import time

爬虫需要发送网络请求,所以请在确保安装第三方库 requests 的情况下通过下面代码导入它(若没有请通过以下命令安装 pip install requests):

import requests

接下来需要跳转浏览器打开链接,所以也得导入:

import webbrowser

查询 IDKEY

跳转 QQ 群的链接需要 idkey 参数,那怎么可能省略呢?只是这里我们交给机器处理罢了。

首先是所需链接和必要头部信息。

query_api = "https://qun.qq.com/proxy/domain/shang.qq.com/wpa/g_wpa_get"
headers = {"referer": "https://qun.qq.com/proxy.html?callback=1&id=1"}  # 头部信息(溯源为必要)

根据浏览器开发者工具,该链接需要带上参数 QQ 群列表字符串,同时还需带上当前时间戳 * 1000 后取整(不是四舍五入)的值。

group_list = [824697580]  # 群列表
group_list = [str(i) for i in group_list]  # 将所有元素转换为字符串形式
groups = "%2C".join(group_list)  # 将列表元素通过 url 转码的英文逗号串连

# 要求的时间戳为包括小数点后三位的整数
t = str(int(time.time()*1000))

最终需要发起 GET 请求的查询链接如下:

query_url = query_api + "?guin=" + groups + "&t=" + t  # 拼接查询地址
resp = requests.get(query_url, headers=headers)
data = resp.json()  # 获取到返回数据

接下来就是最后一步——跳转浏览器打开拼接好的链接,给予浏览器跳转打开外部应用的权限就大功告成了:

# 下面就是跳转接口和 QQ 群 idkey 所在索引,其中的数字索引可改(若传入多个 QQ 群)
group_url = "http://shang.qq.com/wpa/qunwpa?idkey="+data['result']['data'][0]['key']
webbrowser.open(group_url)  # 跳转浏览器打开链接

END

上面的代码拼凑一下,运行或调试可以触发以下效果:编译器一秒不到就获取到了 IDKEY 并跳转浏览器(等待你手动启动 QQ)并打开相应窗口。但是还有一个前提是不能查询太频繁,若正常网络下出现需等待三秒以上,那么基本需要重来(等几秒)。

附:完整代码

为了吸引一波 GitHub 关注和 Stars ,这里还是放上 GitHub 地址吧!

https://github.com/gkcoll/forceQ/blob/main/forceQ_qqgroup.py

能改 bug 的,fork me!


来自站长的求助

站长最近开发项目 forceQ 需要用到以上代码的 PHP 版本,有能力者别走!站长正在绝望地向你挥舞求救之手!

另外,作为一个运行一年快半的网站,一直只有站长和副站长打理不是很好,更新效率过慢,这里欢迎对各种网络技术感兴趣、有能力/技术、有资源的伙伴加入。

要求:

  • 熟悉并掌握 Markdown 标记语言(本站的文章排版就是用 Markdown,当然编辑器插件提供了类似富文本的用法)

  • 精通/掌握/入门至少一门编程语言(不限标记语言(MD 除外,此外说明标记语言不是编程语言)/脚本语言/开发语言/汇编语言)且会灵活使用各种开发(guà)工具(如各种 AI)。

  • 招无偿贡献的『劳动力』,如翻译等人才(帮忙翻译文档到非简体中文语言)或 SEO 专员(爱好者也可)。

  • 有心坚持,并乐于分享。

站长担保

无论何人加入,我们不会干涉其未来发展方向,若成员发展后期考虑自行建站,完全可以自搭并与本站达成友链关系。并申请迁移旧文章并将本站版本作为转载版。这是作为无偿用爱发电的最大自由!!

版权声明:
作者:灰尘疾客
链接:https://www.gkcoll.xyz/446.html
来源:极客藏源
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>