mirror of
https://github.com/nxtrace/NTrace-core.git
synced 2025-08-12 06:26:39 +00:00
43 lines
1007 B
Go
43 lines
1007 B
Go
package pow
|
||
|
||
import (
|
||
"fmt"
|
||
"github.com/tsosunchia/powclient"
|
||
"github.com/xgadget-lab/nexttrace/util"
|
||
"net/url"
|
||
"os"
|
||
)
|
||
|
||
const (
|
||
baseURL = "/v3/challenge"
|
||
)
|
||
|
||
func GetToken(fastIp string, host string, port string) (string, error) {
|
||
getTokenParams := powclient.NewGetTokenParams()
|
||
u := url.URL{Scheme: "https", Host: fastIp + ":" + port, Path: baseURL}
|
||
getTokenParams.BaseUrl = u.String()
|
||
getTokenParams.SNI = host
|
||
getTokenParams.Host = host
|
||
getTokenParams.UserAgent = util.UserAgent
|
||
proxyUrl := util.GetProxy()
|
||
if proxyUrl != nil {
|
||
getTokenParams.Proxy = proxyUrl
|
||
}
|
||
var err error
|
||
// 尝试三次RetToken,如果都失败了,异常退出
|
||
for i := 0; i < 3; i++ {
|
||
token, err := powclient.RetToken(getTokenParams)
|
||
if err != nil {
|
||
continue
|
||
}
|
||
//fmt.Println("GetToken success", token, getTokenParams.UserAgent)
|
||
return token, nil
|
||
}
|
||
if err != nil {
|
||
fmt.Println(err)
|
||
}
|
||
fmt.Println("RetToken failed 3 times, please try again after a while, exit")
|
||
os.Exit(1)
|
||
return "", nil
|
||
}
|