100 lines
2.5 KiB
Go
100 lines
2.5 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/gin-gonic/gin"
|
|
"net/http"
|
|
)
|
|
|
|
func main() {
|
|
r := gin.Default()
|
|
|
|
// 定义一个处理器函数,用于获取所有的请求头并返回给客户端
|
|
r.GET("/api/getHeaders", func(c *gin.Context) {
|
|
// 获取所有的请求头
|
|
request := c.Request
|
|
headers := request.Header
|
|
clientIP := c.ClientIP()
|
|
|
|
// 将请求头转换为 map[string]string
|
|
headersMap := make(map[string]string)
|
|
for key, value := range headers {
|
|
headersMap[key] = value[0] // 注意,这里假设每个键只有一个值,你可以根据实际情况修改逻辑
|
|
}
|
|
headersMap["platform"] = headers.Get("Sec-CH-UA-Platform")
|
|
headersMap["model"] = headers.Get("Sec-CH-UA-Model")
|
|
|
|
// 返回请求头的 map
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"ip": clientIP,
|
|
"headers": headersMap,
|
|
})
|
|
})
|
|
|
|
// 启动 Gin 服务器
|
|
err := r.Run(":80")
|
|
if err != nil {
|
|
fmt.Print("Error")
|
|
return
|
|
}
|
|
}
|
|
|
|
// package main
|
|
//
|
|
// import (
|
|
// "encoding/base64"
|
|
// "fmt"
|
|
// "log"
|
|
// "regexp"
|
|
// )
|
|
//
|
|
// func decodeGclid(gclid string, splitTimestamp bool) map[int]interface{} {
|
|
// // Base64 URL decode
|
|
// base64Decoded, err := base64.RawURLEncoding.DecodeString(gclid)
|
|
// if err != nil {
|
|
// log.Fatalf("Failed to decode base64 URL: %v", err)
|
|
// }
|
|
//
|
|
// // Regular expression to match the pattern
|
|
// re := regexp.MustCompile(`(?=[\x5\xd\x15\x1d%\-5=EMU\]emu}\x85\x8d\x95\x9d\xa5\xad\xb5\xbd\xc5\xcd\xd5\xd5\xe5\xed\xf5\xfd])([^\x00-\x7f]*[\x00-\x7f])(.{4})|([^\x00-\x7f]*[\x00-\x7f])([^\x80-\xff]*[\x00-\x7f])`)
|
|
// matches := re.FindAllSubmatch(base64Decoded, -1)
|
|
//
|
|
// result := make(map[int]interface{})
|
|
// for _, match := range matches {
|
|
// var key, val int64
|
|
// if len(match[1]) > 0 {
|
|
// for i, c := range match[1] {
|
|
// key += int64(c&0x7f) << (i * 7)
|
|
// }
|
|
// for i, c := range match[2] {
|
|
// val += int64(c) << (i * 8)
|
|
// }
|
|
// } else {
|
|
// for i, c := range match[3] {
|
|
// key += int64(c&0x7f) << (i * 7)
|
|
// }
|
|
// for i, c := range match[4] {
|
|
// val += int64(c&0x7f) << (i * 7)
|
|
// }
|
|
// }
|
|
// result[int(key>>3)] = val
|
|
// }
|
|
//
|
|
// if splitTimestamp {
|
|
// if timestamp, ok := result[1].(int64); ok {
|
|
// seconds := timestamp / 1000000
|
|
// microseconds := timestamp % 1000000
|
|
// result[1] = []int64{seconds, microseconds}
|
|
// }
|
|
// }
|
|
//
|
|
// return result
|
|
// }
|
|
//
|
|
// func main() {
|
|
// gclid := "CKSDxc_qhLkCFQyk4AodO24Arg" // 你的 GCLID 字符串
|
|
//
|
|
// decoded := decodeGclid(gclid, true)
|
|
// fmt.Printf("Decoded GCLID: %+v\n", decoded)
|
|
// }
|