85 lines
1.8 KiB
Go
85 lines
1.8 KiB
Go
package business
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
"ocean/utils"
|
|
)
|
|
|
|
const getQrcodeUrl = "https://sso.oceanengine.com/get_qrcode/?fp&aid=1402&language=zh&account_sdk_source=we"
|
|
|
|
type getQrcodeResponse struct {
|
|
Data struct {
|
|
AppName string `json:"app_name"`
|
|
IsFrontier bool `json:"is_frontier"`
|
|
Qrcode string `json:"qrcode"`
|
|
QrcodeIndexURL string `json:"qrcode_index_url"`
|
|
Token string `json:"token"`
|
|
WebName string `json:"web_name"`
|
|
} `json:"data"`
|
|
Description string `json:"description"`
|
|
ErrorCode int `json:"error_code"`
|
|
Message string `json:"message"`
|
|
}
|
|
|
|
type FormatQrcodeRespone struct {
|
|
Url string `json:"url"`
|
|
Token string `json:"token"`
|
|
Qrcode string `json:"qrcode"`
|
|
XBogus string `json:"X-Bogus"`
|
|
MsToken string `json:"msToken"`
|
|
}
|
|
|
|
func (c *Client) GetQrcode(ua string) (data *FormatQrcodeRespone, err error) {
|
|
|
|
sign, err := utils.XbogusSign(getQrcodeUrl, ua)
|
|
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
msToken := utils.XbogusMsToken()
|
|
|
|
url := fmt.Sprintf("%s&X-Bogus=%s&msToken=%s", getQrcodeUrl, sign, msToken)
|
|
|
|
header := map[string]string{
|
|
"Origin": "https://business.oceanengine.com",
|
|
"Referer": "https://business.oceanengine.com",
|
|
}
|
|
|
|
resp, cookies, err := utils.Get(url, header)
|
|
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
result := &getQrcodeResponse{}
|
|
|
|
err = json.Unmarshal(resp, result)
|
|
|
|
if err != nil || result.ErrorCode != 0 {
|
|
return nil, errors.New(result.Description)
|
|
}
|
|
|
|
for _, cookie := range cookies {
|
|
if cookie.Name == "passport_csrf_token" {
|
|
c.ctx.BusinessCookie[cookie.Name] = cookie.Value
|
|
}
|
|
|
|
if cookie.Name == "passport_csrf_token_default" {
|
|
c.ctx.BusinessCookie[cookie.Name] = cookie.Value
|
|
}
|
|
}
|
|
|
|
format := &FormatQrcodeRespone{
|
|
Url: url,
|
|
MsToken: msToken,
|
|
Qrcode: result.Data.Qrcode,
|
|
Token: result.Data.Token,
|
|
XBogus: sign,
|
|
}
|
|
|
|
return format, nil
|
|
}
|