mirror of
https://github.com/Mrs4s/go-cqhttp.git
synced 2025-05-06 03:53:50 +08:00
feat: another way to bypass device-lock slider & non-input login support.
This commit is contained in:
parent
3c8bb18a94
commit
2dd2a935c3
51
login.go
51
login.go
@ -25,6 +25,22 @@ var readLine = func() (str string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var readLineTimeout = func(t time.Duration, de string) (str string) {
|
||||||
|
r := make(chan string)
|
||||||
|
go func() {
|
||||||
|
select {
|
||||||
|
case r <- readLine():
|
||||||
|
case <-time.After(t):
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
str = de
|
||||||
|
select {
|
||||||
|
case str = <-r:
|
||||||
|
case <-time.After(t):
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
var cli *client.QQClient
|
var cli *client.QQClient
|
||||||
|
|
||||||
// ErrSMSRequestError SMS请求出错
|
// ErrSMSRequestError SMS请求出错
|
||||||
@ -99,14 +115,21 @@ func loginResponseProcessor(res *client.LoginResponse) error {
|
|||||||
switch res.Error {
|
switch res.Error {
|
||||||
case client.SliderNeededError:
|
case client.SliderNeededError:
|
||||||
log.Warnf("登录需要滑条验证码. ")
|
log.Warnf("登录需要滑条验证码. ")
|
||||||
log.Warnf("请参考文档 -> https://github.com/Mrs4s/go-cqhttp/blob/master/docs/slider.md <- 抓包获取 Ticket")
|
log.Warnf("请参考文档 -> https://github.com/Mrs4s/go-cqhttp/blob/master/docs/slider.md <- 进行处理")
|
||||||
println()
|
log.Warnf("1. 自行抓包并获取 Ticket 输入.")
|
||||||
log.Warnf("请用浏览器打开 -> %v <- 并获取Ticket.", res.VerifyUrl)
|
log.Warnf("2. 使用手机QQ扫描二维码登入. (推荐)")
|
||||||
println()
|
log.Warn("请输入(1 - 2) (将在10秒后自动选择2):")
|
||||||
log.Warn("请输入Ticket: (Enter 提交)")
|
text = readLineTimeout(time.Second*10, "2")
|
||||||
text = readLine()
|
if strings.Contains(text, "1") {
|
||||||
res, err = cli.SubmitTicket(text)
|
println()
|
||||||
continue
|
log.Warnf("请用浏览器打开 -> %v <- 并获取Ticket.", res.VerifyUrl)
|
||||||
|
println()
|
||||||
|
log.Warn("请输入Ticket: (Enter 提交)")
|
||||||
|
text = readLine()
|
||||||
|
res, err = cli.SubmitTicket(text)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
return qrcodeLogin()
|
||||||
case client.NeedCaptcha:
|
case client.NeedCaptcha:
|
||||||
log.Warnf("登录需要验证码.")
|
log.Warnf("登录需要验证码.")
|
||||||
_ = ioutil.WriteFile("captcha.jpg", res.CaptchaImage, 0644)
|
_ = ioutil.WriteFile("captcha.jpg", res.CaptchaImage, 0644)
|
||||||
@ -130,8 +153,8 @@ func loginResponseProcessor(res *client.LoginResponse) error {
|
|||||||
log.Warnf("账号已开启设备锁,请选择验证方式:")
|
log.Warnf("账号已开启设备锁,请选择验证方式:")
|
||||||
log.Warnf("1. 向手机 %v 发送短信验证码", res.SMSPhone)
|
log.Warnf("1. 向手机 %v 发送短信验证码", res.SMSPhone)
|
||||||
log.Warnf("2. 使用手机QQ扫码验证.")
|
log.Warnf("2. 使用手机QQ扫码验证.")
|
||||||
log.Warn("请输入(1 - 2):")
|
log.Warn("请输入(1 - 2) (将在10秒后自动选择2):")
|
||||||
text = readLine()
|
text = readLineTimeout(time.Second*10, "2")
|
||||||
if strings.Contains(text, "1") {
|
if strings.Contains(text, "1") {
|
||||||
if !cli.RequestSMS() {
|
if !cli.RequestSMS() {
|
||||||
log.Warnf("发送验证码失败,可能是请求过于频繁.")
|
log.Warnf("发送验证码失败,可能是请求过于频繁.")
|
||||||
@ -145,8 +168,8 @@ func loginResponseProcessor(res *client.LoginResponse) error {
|
|||||||
fallthrough
|
fallthrough
|
||||||
case client.UnsafeDeviceError:
|
case client.UnsafeDeviceError:
|
||||||
log.Warnf("账号已开启设备锁,请前往 -> %v <- 验证后重启Bot.", res.VerifyUrl)
|
log.Warnf("账号已开启设备锁,请前往 -> %v <- 验证后重启Bot.", res.VerifyUrl)
|
||||||
log.Infof("按 Enter 继续....")
|
log.Infof("按 Enter 或等待 5s 后继续....")
|
||||||
readLine()
|
readLineTimeout(time.Second*5, "")
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
case client.OtherLoginError, client.UnknownLoginError, client.TooManySMSRequestError:
|
case client.OtherLoginError, client.UnknownLoginError, client.TooManySMSRequestError:
|
||||||
msg := res.ErrorMessage
|
msg := res.ErrorMessage
|
||||||
@ -157,8 +180,8 @@ func loginResponseProcessor(res *client.LoginResponse) error {
|
|||||||
log.Fatalf("账号被冻结")
|
log.Fatalf("账号被冻结")
|
||||||
}
|
}
|
||||||
log.Warnf("登录失败: %v", msg)
|
log.Warnf("登录失败: %v", msg)
|
||||||
log.Infof("按 Enter 继续....")
|
log.Infof("按 Enter 或等待 5s 后继续....")
|
||||||
readLine()
|
readLineTimeout(time.Second*5, "")
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user