-
Notifications
You must be signed in to change notification settings - Fork 317
Description
最新的情况通报:
账号密码登录的方式似乎已经被腾讯封禁了,只能使用二维码的方式登录,但是如果希望获取uid等信息,仍然需要提供账号,密码信息,所以需要这样设置
use Digest::MD5;
Mojo::Webqq->new(login_type=>"qrlogin",account=>'你的QQ账号', pwd=>Digest::MD5::md5_hex('你的QQ账号登录密码'));
-------------------------------旧的讨论------------------------------------------
写在开头:
程序当前获取uid的方式并不完美,如果存在昵称相同的好友,或者一个群里存在昵称相同的群成员,这相同昵称的好友或者群成员都无法获取到uid
所以,如果你获取uid的目的只是为了调用api接口发送消息,那么直接使用昵称来发送更为简单,不需要账号密码登录,也不需要获取uid,比如:
http://127.0.0.1:5000/openqq/send_group_message?name=test&content=hello(中文要做urlencode)
发送消息接口详见:https://github.com/sjdy521/Mojo-Webqq/blob/master/API.md
唯一的差别就是uid不会变化,但是昵称可能会被用户修改,但是一般修改昵称的频率也不会很高
注意: 原生的SmartQQ是不支持账号密码登录的
程序实际上是通过 http://qun.qq.com 页面账号密码登录
然后和SmartQQ共享登录状态,从而实现账号密码登录以及获取uid(QQ号)的扩展信息
所以,账号密码的登录方式并不稳定,一旦失败,程序会再次自动尝试使用二维码扫描登录
并且请关闭帐号的密保功能,不支持密保登录
首先,Mojo::Webqq 需要至少升级到v2.1.8版本
扩展信息(uid)的获取是从腾讯官方的 http://qun.qq.com 获取的,但是这个页面获取数据需要先进行账号密码登录
登录过程涉及到复杂的RSA加密,因此除了Mojo::Webqq,你还需要再安装一个新的模块 Webqq::Encryption
Webqq::Encryption 安装过程参考:https://github.com/sjdy521/Webqq-Encryption
然后在你的pl脚本中增加login_type、account和pwd参数,如下:
Mojo::Webqq->new(login_type=>"login",account=>'你的QQ账号', pwd=>'你的QQ账号登录密码的32位md5值');
shell下可以通过 echo -n xxxxxxx|md5sum 生成md5值
如果你不介意直接把密码写在pl脚本中,可以直接调用perl的md5函数来直接计算md5,如下:
use Digest::MD5;
Mojo::Webqq->new(login_type=>"login",account=>'你的QQ账号', pwd=>Digest::MD5::md5_hex('你的QQ账号登录密码'));
如果你登录过程中碰到如下异常:
[18/01/08 17:21:28] [warn] 更群扩展信息授权失败: 可能因为登录环境变化引起
可能的原因是,基于账号密码的登录方式,一旦登录所在地发生较大变化,则腾讯服务器可能需要你输入图片验证码,这样就很难实现自动化操作,为了避免这种情况,你需要尽量在pl脚本所在的网络中用浏览器多登录一下 http://qun.qq.com 让腾讯服务器消除登录异常的判断
你可以在服务端搭建ssh隧道,socks5代理,支持SSL转发(CONNECT方法)的http代理等方式,然后浏览器通过服务端代理访问,可能需要多访问几天才能最终接触账号的异地登录状态,从而实现账号密码自动登录