()
| 45 | } |
| 46 | |
| 47 | func (c *QQClient) GetSkey() (string, error) { |
| 48 | if time.Now().Before(c.ticket.sKey.expireTime) { |
| 49 | return c.ticket.sKey.key, nil |
| 50 | } |
| 51 | clientKey, err := c.FetchClientKey() |
| 52 | if err != nil { |
| 53 | return "", err |
| 54 | } |
| 55 | jump := "https%3A%2F%2Fh5.qzone.qq.com%2Fqqnt%2Fqzoneinpcqq%2Ffriend%3Frefresh%3D0%26clientuin%3D0%26darkMode%3D0&keyindex=19&random=2599" |
| 56 | u, _ := url.Parse(fmt.Sprintf("https://ssl.ptlogin2.qq.com/jump?ptlang=1033&clientuin=%d&clientkey=%s&u1=%s", |
| 57 | c.Uin, clientKey, jump)) |
| 58 | resp, err := c.ticket.client.Get(u.String()) |
| 59 | if err != nil { |
| 60 | return "", err |
| 61 | } |
| 62 | resp.Body.Close() |
| 63 | for _, cookie := range c.ticket.client.Jar.Cookies(u) { |
| 64 | if cookie.Name == "skey" { |
| 65 | c.ticket.sKey.key = cookie.Value |
| 66 | c.ticket.sKey.expireTime = time.Now().Add(24 * time.Hour) |
| 67 | break |
| 68 | } |
| 69 | } |
| 70 | return c.ticket.sKey.key, nil |
| 71 | } |
| 72 | |
| 73 | func (c *QQClient) GetCsrfToken() (int, error) { |
| 74 | skey, err := c.GetSkey() |
no test coverage detected