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

针对TG新的验证码防泄漏逻辑导致q2tg无法登录的临时解决方案 #80

Closed
ERR0RPR0MPT opened this issue Jan 4, 2023 · 11 comments

Comments

@ERR0RPR0MPT
Copy link

ERR0RPR0MPT commented Jan 4, 2023

一样的问题,更换了两个服务器也无法解决问题。

[2023-01-03T20:20:05.809] [ERROR] SetupService - 0 - RPCError: 400: PHONE_CODE_EXPIRED (caused by auth.SignIn)
    at RPCMessageToError (/app/node_modules/telegram/errors/index.js:28:12)
    at MTProtoSender._handleRPCResult (/app/node_modules/telegram/network/MTProtoSender.js:485:58)
    at MTProtoSender._processMessage (/app/node_modules/telegram/network/MTProtoSender.js:410:15)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async MTProtoSender._recvLoop (/app/node_modules/telegram/network/MTProtoSender.js:386:17) {
  code: 400,
  errorMessage: 'PHONE_CODE_EXPIRED'
}

经过一段时间的研究,发现此问题是 Telegram 对验证码检查做了升级,貌似也会检查目前 q2tg 的使用内联键盘输入验证码的方案?总之,可以通过以下的解决方案临时解决该问题。

临时解决方案

下载修改版本代码

假设 /root/q2tg 为运行目录,将文件解压到 /root/q2tg/SetupService.js

Snipaste_2023-01-04_09-04-06

删除所有已经构建好的容器:docker-compose down

修改 docker-compose.yaml,在 q2tg 的 volumn 中添加一行:

- ./SetupService.js:/app/build/services/SetupService.js

例如:

q2tg:
    ...

    volumes:
          - ./data:/app/data
          - ./SetupService.js:/app/build/services/SetupService.js

使用 docker-compose up -d 构建容器。

成功后,使用 docker exec -it q2tg /bin/sh 进入容器,之后执行 yarn start ,这时不要关闭 Shell 窗口。

此时会弹出 /setup 安装提示,在 Telegram 客户端上按照提示正常登录 QQ,一直到登录 TG UserBot 并需要接收验证码时,

如图所示:

Snipaste_2023-01-04_09-09-35

此时回到 Shell 窗口,输入获取到的验证码,回车。

Snipaste_2023-01-04_09-58-06

之后再输入两次验证密码就可以成功登录了。

Originally posted by @ERR0RPR0MPT in #76 (comment)
#76 #78

@magisk317
Copy link
Contributor

登录确实好使了,想问下这个终端怎么退出呢,总这样挂着会断吧

@Seele-Vollerei32
Copy link

Seele-Vollerei32 commented Jan 15, 2023

登录确实好使了,想问下这个终端怎么退出呢,总这样挂着会断吧

直接退出后docker compose up就好了, 已验证的数据会放到psql的
似乎题主的方法不能让docker shell退出后保持登陆状态, 可以在关闭shell后重新用原来方式登陆, 此时telegram便不需要验证码.

@magisk317
Copy link
Contributor

登录确实好使了,想问下这个终端怎么退出呢,总这样挂着会断吧

~ 直接退出后docker compose up就好了, 已验证的数据会放到psql的 ~ 似乎题主的方法不能让docker shell退出后保持登陆状态, 可以在关闭shell后重新用原来方式登陆, 此时telegram便不需要验证码.

嗯,登录现在没问题了,想问下怎么切换账号啊,好像没有退出机制,除了删除配置文件,还有其他办法吗?

@ccmuyuu
Copy link
Contributor

ccmuyuu commented Jan 18, 2023

在rainbowcat中由于使用nix似乎进不去容器了)
可以使用我修改过的仓库进行以上登录操作
登录操作同上,只需要将上面的docker exec -it main_q2tg /bin/sh改为docker exec -it main_q2tg /nix/store/avi27afmqm6a7494jafnmih4q8fa6bzl-start即可(nix具体路径可通过docker inspect main_q2tg中的cmd项查看)

@ERR0RPR0MPT
Copy link
Author

~ 直接退出后docker compose up就好了, 已验证的数据会放到psql的 ~

我这边在 docker shell 退出之后重启容器就可以保持登录状态,没做其他操作(

@clansty
Copy link
Owner

clansty commented Feb 21, 2023

我今天试了一下,完全没有问题。不知道为什么你们不行

@VEWION
Copy link

VEWION commented Feb 23, 2023

我今天试了一下,完全没有问题。不知道为什么你们不行

完全全新安装依然是不行,是过了QQ登录后到TG验证码这一步才报错,TG直接没收到任何验证码

main_q2tg        | [2023-02-23T17:16:32.472] [INFO] - [Running gramJS version 2.15.0]
main_q2tg        | [2023-02-23T17:16:32.472] [DEBUG] TelegramSession - undefined - Session 不存在,创建
main_q2tg        | [2023-02-23T17:16:35.607] [ERROR] Main - UnhandledException:  Error: Auth key unset
main_q2tg        |     at MTProtoState.encryptMessageData (/nix/store/d51ysfyzxym4lqakl0qch1i3fciwnwaj-q2tg/libexec/q2tg/node_modules/telegram/network/MTProtoState.js:142:19)
main_q2tg        |     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
main_q2tg        |     at async MTProtoSender._sendLoop (/nix/store/d51ysfyzxym4lqakl0qch1i3fciwnwaj-q2tg/libexec/q2tg/node_modules/telegram/network/MTProtoSender.js:327:20)
main_q2tg        | [2023-02-23T17:16:51.361] [ERROR] - [Error: Not connected]
main_q2tg        | [2023-02-23T17:16:51.361] [WARN] - [Connection closed while receiving data...]
main_q2tg        | [2023-02-23T17:16:52.716] [ERROR] - [Error while trying to reconnect]
main_q2tg        | RPCError: 401: AUTH_KEY_UNREGISTERED (caused by users.GetUsers)
main_q2tg        |     at RPCMessageToError (/nix/store/d51ysfyzxym4lqakl0qch1i3fciwnwaj-q2tg/libexec/q2tg/node_modules/telegram/errors/index.js:28:12)
main_q2tg        |     at MTProtoSender._handleRPCResult (/nix/store/d51ysfyzxym4lqakl0qch1i3fciwnwaj-q2tg/libexec/q2tg/node_modules/telegram/network/MTProtoSender.js:517:58)
main_q2tg        |     at MTProtoSender._processMessage (/nix/store/d51ysfyzxym4lqakl0qch1i3fciwnwaj-q2tg/libexec/q2tg/node_modules/telegram/network/MTProtoSender.js:442:15)
main_q2tg        |     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
main_q2tg        |     at async MTProtoSender._recvLoop (/nix/store/d51ysfyzxym4lqakl0qch1i3fciwnwaj-q2tg/libexec/q2tg/node_modules/telegram/network/MTProtoSender.js:418:17) {
main_q2tg        |   code: 401,
main_q2tg        |   errorMessage: 'AUTH_KEY_UNREGISTERED'
main_q2tg        | }

@kpzhao
Copy link

kpzhao commented Mar 2, 2023

新安装依然是不行,是过了QQ登录后到TG验证码这一步才报错,TG直接

同问

@hsabbjkf
Copy link

更换新版本时 未在其他设备上登录Telegram,现在导致无法接收到验证 怎么处理这事情?未在其他地方或设备上登录 ,每次登入提示是代码发其他登入设备上

@clansty
Copy link
Owner

clansty commented Jun 15, 2023 via email

@hsabbjkf
Copy link

那你和 bot 发消息的这个帐号呢 让你登录的就是这个帐号

登录的86手机账号,就是没有短信验证码,说发送至设备上,现在是没有在其他设备上登录,有啥好办法

@clansty clansty closed this as completed Jul 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants