开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 538|回复: 7
收起左侧

[分享] 不申请实现QQ和VX登录

[复制链接]
结帖率:56% (10/18)
发表于 3 天前 | 显示全部楼层 |阅读模式   山东省青岛市
本帖最后由 万象梦境 于 2025-11-5 16:56 编辑



众所周知,想要在自己的软件或者网站里添加QQ或微信登录,需要取QQ微信互联里申请开发者,比较麻烦,所以可以通过一些奇技淫巧的手段,通过已经存在的网站进行验证QQ登录与微信登录,,实际上是利用官方的oauth2.0获取网站的用户Cookie。
这里我通过QQ音乐示例

准备:浏览框组件(如:Miniblink、精易WEB浏览框、exui 浏览框ex)
我因为界面用的exui绘制的,所以用的exui库的浏览框ex


第一步:用户登录
进入QQ或微信登录页面,让用户登录自己的账号
QQ登录的url
[XML] 纯文本查看 复制代码
https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=100497308&redirect_uri=https%3A%2F%2Fy.qq.com%2Fportal%2Fwx_redirect.html%3Flogin_type%3D1%26surl%3Dhttps%253A%252F%252Fy.qq.com%252F&state=state&display=pc&scope=get_user_info%2Cget_app_friends


微信登录url
[XML] 纯文本查看 复制代码
https://open.weixin.qq.com/connect/qrconnect?appid=wx48db31d50e334801&redirect_uri=https%3A%2F%2Fy.qq.com%2Fportal%2Fwx_redirect.html%3Flogin_type%3D2%26surl%3Dhttps%253A%252F%252Fy.qq.com%252F&response_type=code&scope=snsapi_login&state=STATE&href=https%3A%2F%2Fy.qq.com%2Fmediastyle%2Fmusic_v17%2Fsrc%2Fcss%2Fpopup_wechat.css%23wechat_redirect


其中,redirect_uri是回调地址,直接从QQ音乐网页版通过抓包可以抓到这个网页,QQ登录页是嵌入到QQ音乐网页里的
其他的都是固定的信息,不要改,回调地址页没必要改,实际上是不会跳转到回调地址的


第二步:判断用户是否登录


无论是QQ登录还是微信登录,无论是扫码还是账号密码以及快捷登录,登录成功后都会载入到一个新的url
这是个回调URL,在这个url中,我们需要的信息,也就是登录凭证之类的东西,这个url的页面是个空白页,其中有js逻辑,咱们不需要,手搓请求就行,所以也不需要让它加载,浏览框就用不到了,保存下url和cookie后就可以隐藏或者销毁了。
我用的EXUI的浏览框EX,回调页似乎不会执行里面的js,所以我直接隐藏了,如果能执行,建议直接拦截或者销毁,不要让浏览框上报,否则可能会直接登录成功跳转到QQ音乐网站或者其他所用的网站中。

接下来只需要模拟网络请求就行。

登录完毕的url:
[JavaScript] 纯文本查看 复制代码
https://y.qq.com/portal/wx_redirect.html

这个url后面还有参数,是不固定的,所以只需要判断"?"前面的固定url就行。

示例:
[JavaScript] 纯文本查看 复制代码
https://y.qq.com/portal/wx_redirect.html?login_type=1&surl=https%3A%2F%2Fy.qq.com%2F&code=96D2401666666666666868F96E0E27B8&state=state&

浏览器当前cookie:_qpsvr_localtk=0.05000670121253681; RK=jVuEkT/vuj; ptcz=bf9332baaf3fdb9c25cd1bd210c5925e2c19689721f69366024e3cfce4f2a4b6
(cookie的内容无所谓,不用在乎是不是与我一样)

其中URL中:
login_type=登录类型,1=QQ,2=微信
surl=回调地址,无用
code=登录凭证
得到cookie和回调url

得到这些信息后,就代表用户登录了,就可以进行下一步了。

第三步:上报QQ音乐服务器
实际上就是告诉qq音乐,用户使用QQ还是微信登录了,登录的凭证是多少,让它把用户的cookie吐出来。
QQ音乐上报登录凭证的接口有三个,分为三条节点,分别为
主节点: u.y.qq.com
深圳备用节点:szu.y.qq.com
上海备用节点:shu.y.qq.com

三个接点的机制是一样的,请求完全一样,可以先尝试u.y.qq.com,不行的话就尝试szu.y.qq.com,再不行就shu.y.qq.com
是为了防止网络问题的。

完整的上报apiURL:https://[节点]/cgi-bin/musicu.fcg
如:
[JavaScript] 纯文本查看 复制代码
https://u.y.qq.com/cgi-bin/musicu.fcg


上报第一步:构建Cookie


在第二步中,我们保存下来的网站cookie,其中可能有login_type,也可以没有,需要替换或添加上新的login_type。
新的login_type就在第二步中回调URL的参数中,login_type=1或2
示例新cookie:
login_type=1;ptcz=bf9332baaf3fdb9c25cd1bd210c5925e2c19689721f69366024e3cfce4f2a4b6; RK=jVuEkT/vuj; _qpsvr_localtk=0.5121557709349729
其他的不用管,login_type正确就行,这个代表QQ登录或者微信登录
上报第二步:构建提交信息
QQ登录,也就是login_type=1的提交信息为
{"comm":{"g_tk":5381,"platform":"yqq","ct":24,"cv":0},"req":{"module":"QQConnectLogin.LoginServer","method":"QQLogin","param":{"code":"[code]"}}}

微信登录,也就是login_type=2的提交信息为
{"comm":{"tmeAppID":"qqmusic","tmeLoginType":"1","g_tk":5381,"platform":"yqq","ct":24,"cv":0},"req":{"module":"music.login.LoginServer","method":"Login","param":{"strAppid":"wx48db31d50e334801","code":"[code]"}}}

其中,[code]需要替换成回调url中的code参数
示例QQ登录提交信息:
{"comm":{"g_tk":5381,"platform":"yqq","ct":24,"cv":0},"req":{"module":"QQConnectLogin.LoginServer","method":"QQLogin","param":{"code":"96D2401666666666666868F96E0E27B8"}}}

我们可以看到,微信登录中有个名为g_tk的值,这个不用在意,只要将浏览框设置成禁用Cookie,那么g_tk就是固定的值5381
g_tk是通过指定的几个Cookie值计算而来,只要没有指定的几个Cookie,g_tk就不会变
避免出现的Cookie:qqmusic_key、p_skey、skey、p_lskey、lskey

上报第二步:提交信息
提交信息构建完了,就可以上报了。
上报url在上面已经提了,有一个主节点,两个备用节点。
我用主节点做示例,三个接点用法一样。
请求方式:POST

url:
[JavaScript] 纯文本查看 复制代码
https://u.y.qq.com/cgi-bin/musicu.fcg

提交Cookie为上报第二步构建的提交信息
还需要接收响应Cookie

我用的这里我用的精易模块中的 网页_访问()
示例:UTF8到文本(网页_访问 (“https://u.y.qq.com/cgi-bin/musicu.fcg”, 1, 提交信息, Cookie, set_Cookie, , , , , , , , , ))
接口响应的是个json,其中包含一些账号的信息,比如登录账号,QQ是QQ号,微信貌似是个ID,不过这个不重要,因为set_Cookie就是QQ音乐登录成功的用户Cookie

至此,成功得到了用户Cookie,有了这个Cookie就可以实现验证是否登录,登录是否有效等功能。


问:如何验证Cookie是否有效
这个问题很简单。抓一下需要用户Cookie才能获取到信息的接口,附带上Cookie,提交看看结果就行。
示例还是QQ音乐。
接口:Get
[JavaScript] 纯文本查看 复制代码
https://c6.y.qq.com/rsc/fcgi-bin/fcg_get_profile_homepage.fcg?reqfrom=1&cid=205360838

这个接口是用来获取用户信息的,比如用户名,头像啥的,如果没登录,肯定获取不到。
不同的网站有不同的接口可以用来获取。

补充
至此,给自己的软件加上QQ与微信登录完毕。
有了Cookie,但不要用于违法用途,奇技淫巧用用就行了,还是建议去QQ和微信里申请个**开发者
源码我就不放了,懒得再写一份单纯登录的源码了。





1.png
3.png
结帖率:91% (63/69)

签到天数: 5 天

发表于 昨天 17:32 | 显示全部楼层   四川省成都市
牛儿逼之
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 4 天

发表于 前天 01:07 | 显示全部楼层   美国
牛逼!!!!!!
回复 支持 反对

使用道具 举报

结帖率:55% (6/11)

签到天数: 6 天

发表于 3 天前 | 显示全部楼层   浙江省金华市
有没有写好的例子 哪位大哥帮忙分享一下
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 3 天前 | 显示全部楼层   河南省许昌市
niubi牛逼看不懂!
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 3 天前 | 显示全部楼层   湖南省常德市
想要在自己的软件或者网站里添加QQ或VX登录
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 6 天

发表于 3 天前 | 显示全部楼层   四川省成都市
666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:56% (10/18)

签到天数: 6 天

 楼主| 发表于 3 天前 | 显示全部楼层   山东省青岛市
我有一问。为什么论坛上传图片总是显示上传取消。有张图上传不上去
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

关闭

精易论坛 - 有你更精彩上一条 /2 下一条

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表