免 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 专员(爱好者也可)。
-
有心坚持,并乐于分享。
站长担保
无论何人加入,我们不会干涉其未来发展方向,若成员发展后期考虑自行建站,完全可以自搭并与本站达成友链关系。并申请迁移旧文章并将本站版本作为转载版。这是作为
无偿用爱发电的最大自由!!
共有 0 条评论