mirror of
https://github.com/Mrs4s/go-cqhttp.git
synced 2025-05-05 03:23:49 +08:00
fix silder.
This commit is contained in:
parent
99a68b144b
commit
2baf622b83
@ -64,17 +64,12 @@ func GetBytes(url string) ([]byte, error) {
|
|||||||
return body, nil
|
return body, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetSilderTicket(raw, version string) (string, error) {
|
func GetSilderTicket(raw, id string) (string, error) {
|
||||||
u, err := url.Parse(raw)
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
q := u.Query()
|
|
||||||
var rsp string
|
var rsp string
|
||||||
if err = gout.GET(fmt.Sprintf("https://api.shkong.com/gocqhttpapi/silder/ticket?uin=%v&sid=%v&cap=%v", q["uin"][0], q["sid"][0], q["cap_cd"][0])).
|
if err := gout.POST("https://api.shkong.com/gocqhttpapi/task").SetJSON(gout.H{
|
||||||
SetHeader(gout.H{"User-Agent": "go-cqhttp/" + version}).
|
"id": id,
|
||||||
BindBody(&rsp).
|
"url": raw,
|
||||||
Do(); err != nil {
|
}).SetTimeout(time.Second * 35).BindBody(&rsp).Do(); err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
g := gjson.Parse(rsp)
|
g := gjson.Parse(rsp)
|
||||||
|
@ -5,6 +5,7 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/Mrs4s/MiraiGo/utils"
|
||||||
"github.com/gin-contrib/pprof"
|
"github.com/gin-contrib/pprof"
|
||||||
"image"
|
"image"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
@ -112,6 +113,7 @@ func (s *webServer) Dologin() {
|
|||||||
s.Console = bufio.NewReader(os.Stdin)
|
s.Console = bufio.NewReader(os.Stdin)
|
||||||
readLine := func() (str string) {
|
readLine := func() (str string) {
|
||||||
str, _ = s.Console.ReadString('\n')
|
str, _ = s.Console.ReadString('\n')
|
||||||
|
str = strings.TrimSpace(str)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
conf := GetConf()
|
conf := GetConf()
|
||||||
@ -125,15 +127,33 @@ func (s *webServer) Dologin() {
|
|||||||
if !rsp.Success {
|
if !rsp.Success {
|
||||||
switch rsp.Error {
|
switch rsp.Error {
|
||||||
case client.SliderNeededError:
|
case client.SliderNeededError:
|
||||||
log.Warnf("正在处理滑条验证码, 这可能需要一段时间.")
|
log.Warnf("登录需要滑条验证码, 请选择解决方案: ")
|
||||||
ticket, err := global.GetSilderTicket(rsp.VerifyUrl, coolq.Version)
|
log.Warnf("1. 自行抓包. (推荐)")
|
||||||
if err != nil {
|
log.Warnf("2. 使用Cef自动处理.")
|
||||||
log.Warnf("处理滑条验证码时出现错误: %v 将尝试跳过.", err)
|
log.Warnf("3. 不提交滑块并继续.(可能会导致上网环境异常错误)")
|
||||||
|
log.Warnf("详细信息请参考文档")
|
||||||
|
log.Warn("请输入(1 - 3): ")
|
||||||
|
text = readLine()
|
||||||
|
if strings.Contains(text, "1") {
|
||||||
|
log.Warnf("请用浏览器打开 -> %v <- 并获取Ticket.", rsp.VerifyUrl)
|
||||||
|
log.Warn("请输入Ticket: (Enter 提交)")
|
||||||
|
text = readLine()
|
||||||
|
rsp, err = cli.SubmitTicket(strings.TrimSpace(text))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if strings.Contains(text, "3") {
|
||||||
cli.AllowSlider = false
|
cli.AllowSlider = false
|
||||||
cli.Disconnect()
|
cli.Disconnect()
|
||||||
rsp, err = cli.Login()
|
rsp, err = cli.Login()
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
id := utils.RandomStringRange(6, "0123456789")
|
||||||
|
log.Warnf("滑块ID为 %v 请在30S内处理.", id)
|
||||||
|
ticket, err := global.GetSilderTicket(rsp.VerifyUrl, id)
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf("错误: " + err.Error())
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
rsp, err = cli.SubmitTicket(ticket)
|
rsp, err = cli.SubmitTicket(ticket)
|
||||||
continue
|
continue
|
||||||
case client.NeedCaptcha:
|
case client.NeedCaptcha:
|
||||||
@ -205,7 +225,7 @@ func (s *webServer) Dologin() {
|
|||||||
cli.Disconnect()
|
cli.Disconnect()
|
||||||
rsp, err = cli.Login()
|
rsp, err = cli.Login()
|
||||||
count++
|
count++
|
||||||
log.Warnf("错误: 当前上网环境异常. 将更换服务器并重试. 如果频繁遇到此问题请打开设备锁.")
|
log.Warnf("错误: 当前上网环境异常. 将更换服务器并重试.")
|
||||||
time.Sleep(time.Second)
|
time.Sleep(time.Second)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user