67 lines
1.5 KiB
Go
67 lines
1.5 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"io/ioutil"
|
||
|
"net/http"
|
||
|
"net/url"
|
||
|
"time"
|
||
|
"math/rand"
|
||
|
"strconv"
|
||
|
"crypto/sha1"
|
||
|
"crypto/hmac"
|
||
|
"encoding/base64"
|
||
|
)
|
||
|
|
||
|
/*
|
||
|
* keyStr 密钥
|
||
|
* value 消息内容
|
||
|
*/
|
||
|
func HMACSHA1(keyStr, value string) string{
|
||
|
|
||
|
key := []byte(keyStr)
|
||
|
mac := hmac.New(sha1.New, key)
|
||
|
mac.Write([]byte(value))
|
||
|
//进行base64编码
|
||
|
res := base64.StdEncoding.EncodeToString(mac.Sum(nil))
|
||
|
|
||
|
return res
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
curUTC := time.Now().UTC().Format("2006-01-02T15:04:05Z")
|
||
|
signature := rand.New(rand.NewSource(time.Now().Unix())).Int63()
|
||
|
httpMethod :=
|
||
|
"AccessKeyId=LTAILUL4ts0XZgY5" +
|
||
|
"&Action=CheckDomain" +
|
||
|
"&DomainName=abc.com" +
|
||
|
"&Format=JSON" +
|
||
|
"&SignatureMethod=HMAC-SHA1" +
|
||
|
"&SignatureNonce=" + strconv.Itoa(int(signature)) +
|
||
|
"&SignatureVersion=1.0" +
|
||
|
"&Timestamp=" + url.QueryEscape(curUTC) +
|
||
|
"&Version=2016-05-11"
|
||
|
StringToSign :=
|
||
|
"GET&"+url.QueryEscape("/") + "&" + url.QueryEscape(httpMethod)
|
||
|
url :=
|
||
|
"http://domain.aliyuncs.com/?" +
|
||
|
httpMethod +
|
||
|
"&Signature=" + HMACSHA1("LTAILUL4ts0XZgY5&", StringToSign)
|
||
|
fmt.Println("url:", url)
|
||
|
fmt.Println("curUTC:", curUTC)
|
||
|
fmt.Println("signature:",signature)
|
||
|
fmt.Println("StringToSign",StringToSign)
|
||
|
resp, err := http.Get(url)
|
||
|
if err != nil {
|
||
|
fmt.Println(err)
|
||
|
return
|
||
|
}
|
||
|
defer resp.Body.Close()
|
||
|
body, err := ioutil.ReadAll(resp.Body)
|
||
|
fmt.Println(string(body))
|
||
|
fmt.Println(resp.StatusCode)
|
||
|
if resp.StatusCode == 200 {
|
||
|
fmt.Println("ok")
|
||
|
}
|
||
|
}
|