Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【重要通知】关于账号密码登录以及无法成功获取到uid的问题 #183

Open
sjdy521 opened this issue Jan 8, 2018 · 11 comments
Labels

Comments

@sjdy521
Copy link
Owner

@sjdy521 sjdy521 commented Jan 8, 2018

最新的情况通报:

账号密码登录的方式似乎已经被腾讯封禁了,只能使用二维码的方式登录,但是如果希望获取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代理等方式,然后浏览器通过服务端代理访问,可能需要多访问几天才能最终接触账号的异地登录状态,从而实现账号密码自动登录

@simonsmh
Copy link

@simonsmh simonsmh commented Jan 8, 2018

勘误:

不建议直接把密码写在pl脚本中

介意直接把密码写在pl脚本中

Digest::MD5::md5_hex('你的QQ账号登录密码的32位md5值')

Digest::MD5::md5_hex('你的QQ账号登录密码')

apt-get install libcrypt-opensssl-bignum-perl libcrypt-openssl-rsa-perl

apt-get install libcrypt-openssl-bignum-perl libcrypt-openssl-rsa-perl

@sjdy521
Copy link
Owner Author

@sjdy521 sjdy521 commented Jan 9, 2018

@simonsmh 感谢,均已更正

@sjdy521
Copy link
Owner Author

@sjdy521 sjdy521 commented Jan 9, 2018

@Rain0193 是的 要想获取uid可以参加此issue开头的解决方案
或者你可以用id来发送消息,id可以通过/openqq/get_group_info /openqq/search_group之类的api来获取到

@sjdy521 sjdy521 added the fixed label Jan 15, 2018
@sjdy521 sjdy521 closed this Jan 22, 2018
@sjdy521 sjdy521 changed the title 【通知】关于无法成功获取到uid的问题 【通知】关于账号密码登录以及无法成功获取到uid的问题 Jan 24, 2018
@sjdy521 sjdy521 reopened this Jan 24, 2018
@mind9blowing
Copy link

@mind9blowing mind9blowing commented Jan 26, 2018

@sjdy521 请问是否有更好的方法防止账号被冻结呢

@tusooa
Copy link
Collaborator

@tusooa tusooa commented Jan 26, 2018

给疼逊充钱,注册企业账号。

@tusooa
Copy link
Collaborator

@tusooa tusooa commented Jan 26, 2018

努力提高qq等级,实名认证。。。

@sjdy521 sjdy521 changed the title 【通知】关于账号密码登录以及无法成功获取到uid的问题 【重要通知】关于账号密码登录以及无法成功获取到uid的问题 Feb 9, 2018
@sjdy521 sjdy521 added the important label Jul 20, 2018
@david082321
Copy link

@david082321 david082321 commented Jul 21, 2018

分享一下我的做法,在安装Mojo的VPS上安装SSR,连上SSR之后,开启qun.qq.com,反复登录、退出。大概五次之后,等一阵子。再去登录时,如果不用图形验证,表示成功了。

@ghost
Copy link

@ghost ghost commented Aug 11, 2018

有没有可能通过下载 qun.qq.com 快速安全登录的二维码来回避图片验证呢?我的账号比较奇葩,正常登录也带图片验证(
虽然要下两个二维码也是比较蛋疼就是了

@qjzcj2008
Copy link

@qjzcj2008 qjzcj2008 commented Sep 16, 2018

分享一下我的做法,在安装Mojo的VPS上安装SSR,连上SSR之后,开启qun.qq.com,反复登录、退出。大概五次之后,等一阵子。再去登录时,如果不用图形验证,表示成功了。

想问一下你在安全验证通过之后会不会提示账号或密码错误啊,我连我vps上的酸酸乳似乎没有办法登陆所有腾讯的服务,都会在输入密码通过安全验证后提示“你输入的帐号或密码不正确,请重新输入。

@yuhangrao
Copy link

@yuhangrao yuhangrao commented Oct 14, 2018

执行use Digest::MD5的时候提示use command not found怎么解决啊

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
8 participants
You can’t perform that action at this time.