KonataDev / Konata.Core

Android QQ protocol core implementation written in C#

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[bug report]登录非常困难,往往需要在1~3天内重试10次左右

TeraForce opened this issue · comments

Environment / 环境
Version or commit hash you using.
你所使用的Konata.Core版本或提交哈希
1.3.3

Operating system information.
操作系统相关信息
Windows 10 x64

这个问题在我这里一直存在(指的是登录非常困难),从去年的8月份开始就一直能遇到
如果不去重开bot,那么可以一直不掉线,但是可能因为网络波动有些时候不会自动连上,那么就要重开bot了
重开登录要么是HighRiskEnvironment,要么是Wtlogin failed(不显示前面那个,直接是failed)
通常1到5天里试个10次左右,会有一次成功登陆然后就又可以维持一段时间了
后来发现有个OicqProtocol选项,似乎来回(4个选项)切换有时候能登陆上(不过基本只有当OicqProtocol为AndroidPhone的时候才登录成功),大概尝试个7到8次在1到2天里,不过从上个版本能够显示错误码了之后,这次我试着切换版本,但是都收到了不同的错误显示

当OicqProtocol为AndroidPhone时会显示
Wtlogin failed with code 235. 温馨提示 当前QQ版本过低,请升级至最新版本后再登录。点击进入下载页面 https://im.qq.com
Disconnect, Reason => Wtlogin failed.
Status => OutdatedVersion
Login failed

当OicqProtocol为AndroidPad时会显示
Status => Unknown
Disconnect, Reason => Wtlogin failed.
Wtlogin failed with code 45, Unsupported wtlogin event type received. Unknown OicqRequest received.
Login failed

当OicqProtocol为Watch时会显示
Status => Unknown
Disconnect, Reason => Wtlogin failed.
Wtlogin failed with code 238, Unsupported wtlogin event type received. Unknown OicqRequest received.
Login failed

当OicqProtocol为Ipad时会显示
Status => Unknown
Disconnect, Reason => Wtlogin failed.
Wtlogin failed with code 243, Unsupported wtlogin event type received. Unknown OicqRequest received.
Login failed

以前在尝试登陆的时候,连续尝试的多似乎会从Wtlogin failed变成HighRiskEnvironment,每次尝试都需要完成slider验证码
每次的1~3天反复尝试的期间,如果遇到他在slider之后又出现短信验证码那么这次尝试肯定就能成功登陆
由于1.3.3版本可以显示错误码,我看了这些提示之后不理解,因此在这里开个issue,请求调查一下原因(我更加困惑的是我没看到其他issue说明有我遇到的情况,登录如此困难;我的电脑也没有用任何代理,同时我平时登录自己用的QQ号,或者是在bot无法登录期间登录bot用的QQ号码,在电脑版或者iPhone版都没有任何障碍,我也尝试修改绑定手机开关设备锁之类,以及删除QQ登录中Konata开头的设备记录,同时尝试删除bot用的DeviceToken.json文件,但是bot上遇到QQ那段就是不会出短信验证码的验证,只是出slider)

请求帮助,谢谢!

嘗試刪掉keystore和device, 重新創建一次登錄試試看. 協議最推薦使用AndroidPhone.
另外在最近這段時間内最好不要把bot踢下綫, 盡量使用快速登錄方式上綫.
如果覺得使用AndroidPhone會讓手機查看消息之類比較麻煩的話, 可以在第一次使用AndroidPhone登錄成功之後, 修改協議為AndroidPad再重新啓動, 這樣就不會和手機產生衝突.

關於錯誤碼, 我並不知道所有wtlogin的錯誤碼的含義, 這個只能靠經驗猜.
不過從錯誤代碼235來看, 最近大家好像都是這樣的, 甚至用手機客戶端也是同樣的情況
比較多的傳聞是因爲tlv544的問題, 這個目前除了調api之外似乎沒有什麽解.

我刚才试过删除两个文件再登录,用AndroidPhone,还是一样的错误提示,以前我也试过两个同时删除,也都没效果(能登上去往往是不抱希望的时候试一次登上去了,也许等几天就行,是这种情况)
快速登录是D2Key那个吗,我是用那个尝试的(开关bot是会自动用D2Key那个试一次,基本都可以),但是那个也会失效;有些时候bot断开了也没提示,没有提示任何offline,但是就是已经离线了,这时候重开bot,D2Key也没用,所以才会遇到卡在基础的登录问题上
手机上登录一直是正常的,我试过ipad和iphone上都是没问题的,上面您提到的调api指的是啥呀?

每次断开不是因为踢下线,这个号我不会登上去的平时,我里面也用了bot离线和恢复的事件打印在控制台上,这些断开是没有提示的,有时候网络跳一下,会触发离线然后重新恢复的两条提示,但是这种往往是没有提示,就是控制台上最后一条消息就是几小时前了。一旦这种断开发生,D2Key的那个也会失效只能基础的登录
去年大概10月份左右,在那个号有一次断开之后连续地(也就几次不是非常多次)重开bot尝试登录,但是没有成功,之后我在手机上尝试登录,提示我账号被冻结,原因是使用改动过的QQ客户端啥的,扫脸验证能够立即解冻,然后我解冻了之后再次尝试bot登录,那时候立即就又冻结了(我手机上登又提示冻结)我想可能用不了了,就没解冻也没继续尝试bot登录,然而几天之后(我期间也没有在手机QQ客户端上尝试解冻),直接开了一次bot,直接就登录成功了。(我也没重新生成过bot,在此期间)

我刚才试过删除两个文件再登录,用AndroidPhone,还是一样的错误提示,以前我也试过两个同时删除,也都没效果(能登上去往往是不抱希望的时候试一次登上去了,也许等几天就行,是这种情况) 快速登录是D2Key那个吗,我是用那个尝试的(开关bot是会自动用D2Key那个试一次,基本都可以),但是那个也会失效;有些时候bot断开了也没提示,没有提示任何offline,但是就是已经离线了,这时候重开bot,D2Key也没用,所以才会遇到卡在基础的登录问题上 手机上登录一直是正常的,我试过ipad和iphone上都是没问题的,上面您提到的调api指的是啥呀?

api指的是用來生成tlv544簽名的,就現在而言,wtlogin沒有tlv544就會很容易被風控或者出現版本過低或者乾脆就直接登錄不上去的情況。

每次断开不是因为踢下线,这个号我不会登上去的平时,我里面也用了bot离线和恢复的事件打印在控制台上,这些断开是没有提示的,有时候网络跳一下,会触发离线然后重新恢复的两条提示,但是这种往往是没有提示,就是控制台上最后一条消息就是几小时前了。一旦这种断开发生,D2Key的那个也会失效只能基础的登录 去年大概10月份左右,在那个号有一次断开之后连续地(也就几次不是非常多次)重开bot尝试登录,但是没有成功,之后我在手机上尝试登录,提示我账号被冻结,原因是使用改动过的QQ客户端啥的,扫脸验证能够立即解冻,然后我解冻了之后再次尝试bot登录,那时候立即就又冻结了(我手机上登又提示冻结)我想可能用不了了,就没解冻也没继续尝试bot登录,然而几天之后(我期间也没有在手机QQ客户端上尝试解冻),直接开了一次bot,直接就登录成功了。(我也没重新生成过bot,在此期间)

你提到的這個問題我遇到過,你所指的情況應該是bot在沒有任何徵兆的情況下離綫,並且knt的掉綫檢測完全不起作用並且無法主動恢復socket連結,對吧。
但是因爲這個情況發生的幾率太小且通常都是發生在夜間,所以我一時間也沒能找出來是什麽原因。不過可以把更新keystore的邏輯放到 Bot.OnBotOnline 的事件上來嘗試緩解一下問題。因爲首次登錄時獲取的d2key可能在一段時間後失效,knt每次重新上綫之後的d2key都會刷新,假如此時bot掉綫了,你嘗試去重啓使用舊的d2key上綫,很可能會出現問題。
就像這樣 https://github.com/KonataDev/Kagami/blob/1d346625e22aa82df76dc9623702ece2dec2b3b4/Kagami/Program.cs#L102-L106

我本来就是在botonline事件的时候更新d2key的,似乎那个是最好的地方。
后面提到的那个掉线问题是这样的,我这里好像基本也都是凌晨3点这种时间点,比如最后一次我记得是3:04啥的最后一条消息
掉线一个月最多一次,非常少见,但是每次掉线之后就是我要为了这个登录苦恼的时候了hhh

我前三次登录成功的时候,还用ShadowPlay存了前几分钟的屏幕录像,想以后登不上的时候看下这些成功的有啥共同点,说实话我完全没有找到任何共同点,我也反复看过,包括重新生存改了protocol选项之类的,模拟那个先后顺序,也没有用。这应该是qq的服务器在搞鬼,成功与否是他的事情

我本来就是在botonline事件的时候更新d2key的,似乎那个是最好的地方。 后面提到的那个掉线问题是这样的,我这里好像基本也都是凌晨3点这种时间点,比如最后一次我记得是3:04啥的最后一条消息 掉线一个月最多一次,非常少见,但是每次掉线之后就是我要为了这个登录苦恼的时候了hhh

我會在這幾天嘗試追查一下這個問題。

好的,谢谢啦

嘗試使用最新的develop分支的commit, 看看問題能不能解決

太好了,刚才试了一下,成功登录了,非常感谢!

很抱歉,我尝试了最新版本的Konata.Core,不过现在又遇到了OutdatedVersion,提示版本过低的问题,请求帮助。。

很抱歉,我尝试了最新版本的Konata.Core,不过现在又遇到了OutdatedVersion,提示版本过低的问题,请求帮助。。

是用的最新的develop分支嗎

很抱歉,我尝试了最新版本的Konata.Core,不过现在又遇到了OutdatedVersion,提示版本过低的问题,请求帮助。。

是用的最新的develop分支嗎

是develop分之的最后版本,同时我还试过1.4.0的nuget版本,得到的错误是一样的

很抱歉,我尝试了最新版本的Konata.Core,不过现在又遇到了OutdatedVersion,提示版本过低的问题,请求帮助。。

是用的最新的develop分支嗎

是develop分之的最后版本,同时我还试过1.4.0的nuget版本,得到的错误是一样的

手機能夠登錄嗎,嘗試讓 bot 和手機處於同一個 LAN 下,先手機登錄之後再登錄bot,使用 develop 分支的最新提交版本。

另外請妥善保存 keystore,一般來説只要通過密碼登錄得到 d2key 之後就不會再彈出版本過低等提示。
雖然我不是很清楚爲什麽你的賬號這麽不穩定,我們這邊一口氣挂一兩個月都沒問題的 :think:

很抱歉,我尝试了最新版本的Konata.Core,不过现在又遇到了OutdatedVersion,提示版本过低的问题,请求帮助。。

是用的最新的develop分支嗎

是develop分之的最后版本,同时我还试过1.4.0的nuget版本,得到的错误是一样的

手機能夠登錄嗎,嘗試讓 bot 和手機處於同一個 LAN 下,先手機登錄之後再登錄bot,使用 develop 分支的最新提交版本。

另外請妥善保存 keystore,一般來説只要通過密碼登錄得到 d2key 之後就不會再彈出版本過低等提示。 雖然我不是很清楚爲什麽你的賬號這麽不穩定,我們這邊一口氣挂一兩個月都沒問題的 :think:

不好意思,我是在登录qq邮箱的时候(那个要扫码),把手机上的qq切换到了另外个要登录的账号,然后显示了登录失效,要重新输入密码,输入密码的时候我点的密码窗口,然后选择了苹果的自动密码填充,然后点了登录(没注意到这个自动填充把QQ号也改了。。)然后就登上去把那个踢下线了,就这样了,手机可以登录,所以就踢掉了,是同一个路由器下的

這樣啊,knt 現在被踢下綫了好像確實會這樣,這個是一直沒處理下來的問題。
嘗試一下重新創建一個 device 和 keystore,設備協議盡量選擇和手機不會產生衝突的比如pad。

這樣啊,knt 現在被踢下綫了好像確實會這樣,這個是一直沒處理下來的問題。 嘗試一下重新創建一個 device 和 keystore,設備協議盡量選擇和手機不會產生衝突的比如pad。

哦好了,谢谢您,我这次没试这个方法,因为以前这个方法不凑效,然而这次一次就成功了。。

上次登录成功之后,第二天下午就被踢下线了(不是顶下去的),Reason是ServerKickoff,之后我重复这些操作都没有用,提示的不是之前的outdatedversion,而是
Status => Unknown
Wtlogin failed with code 45, Unsupported wtlogin event type received. Unknown OicqRequest received.
我也试过切换到AndroidPad,也是错误码45,
这几天我每天都试过一次,用的AndroidPhone,都是相同的45错误。
我刚才也试了一下Protocol切换到Ipad和Watch,也都是Unsupported wtlogin event type received. Unknown OicqRequest received.
不过错误码分别是245和238

之前的10多天里,我一直2~3天试一次,每一次都是提示错误码45,今天我换了另外个QQ号试了一下,一次就直接登录上了。。

之前的10多天里,我一直2~3天试一次,每一次都是提示错误码45,今天我换了另外个QQ号试了一下,一次就直接登录上了。。

所以這種問題都沒辦法解決。。:lol:

之前的10多天里,我一直2~3天试一次,每一次都是提示错误码45,今天我换了另外个QQ号试了一下,一次就直接登录上了。。

所以這種問題都沒辦法解決。。:lol:

主要是很奇怪,我手机上重登啥的都没有问题,就是这个号机器人没法登录(每次试都是删了那个devicetoken和重新输入账号和密码)

今天下午第二个号(昨天成功登录上去的号)也遇到了ServerKickOff,之后就是和第一个号一样,每次都是45错误码了,非常奇怪。。