refactor(curl): 更新 JSON 响应结构和请求 URL
- 修改了 `Response` 结构体,添加了 `Message`, `TraceID`, 和 `Error` 字段,并将 `Code` 类型从 `string` 改为 `int`。 - 更新了 `Data` 结构体字段,以匹配新的 API 返回格式。 - 更改了目标 URL 为 `https://qifu.baidu.com/api/v1/ip-portrait/brief-info?ip=`。 - 添加了 `Referer` 请求头。 - 移除了不再需要的 `Cookie` 头。 - 调整了错误处理逻辑,根据 `Message` 字段判断返回数据是否符合预期。
This commit is contained in:
48
curl.go
48
curl.go
@@ -11,24 +11,27 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// Response 结构体用于存储整个JSON响应
|
||||
// Response 结构体用于存储整个 JSON 响应
|
||||
type JSON struct {
|
||||
Code string `json:"code"`
|
||||
Data Data `json:"data"`
|
||||
IP string `json:"ip"`
|
||||
Code int `json:"code"`
|
||||
Message string `json:"message"`
|
||||
Data Data `json:"data"`
|
||||
TraceID string `json:"traceId"`
|
||||
Error any `json:"error"`
|
||||
}
|
||||
|
||||
// Data 结构体用于存储"data"字段下的详细信息
|
||||
// Data 结构体对应 JSON 里的 "data"
|
||||
type Data struct {
|
||||
Continent string `json:"continent"`
|
||||
Country string `json:"country"`
|
||||
Zipcode string `json:"zipcode"`
|
||||
Owner string `json:"owner"`
|
||||
Isp string `json:"isp"`
|
||||
Adcode string `json:"adcode"`
|
||||
Prov string `json:"prov"`
|
||||
City string `json:"city"`
|
||||
District string `json:"district"`
|
||||
Country string `json:"country"`
|
||||
Province string `json:"province"`
|
||||
City string `json:"city"`
|
||||
ISP string `json:"isp"`
|
||||
Scene string `json:"scene"`
|
||||
Company string `json:"company"`
|
||||
RiskScore string `json:"risk_score"`
|
||||
HitRiskNum int `json:"hit_risk_num"`
|
||||
QueryIP string `json:"query_ip"`
|
||||
Version string `json:"version"`
|
||||
}
|
||||
|
||||
func isValidIP(ip string) bool {
|
||||
@@ -78,8 +81,7 @@ func curl_(IP_ADDR string) (string, error) {
|
||||
}
|
||||
|
||||
// 目标 URL
|
||||
//URL_ADDR = "https://qifu.baidu.com/ip/geo/v1/district?ip=" + IP_ADDR
|
||||
URL_ADDR = "https://qifu-api.baidubce.com/ip/geo/v1/district?ip=" + IP_ADDR
|
||||
URL_ADDR = "https://qifu.baidu.com/api/v1/ip-portrait/brief-info?ip=" + IP_ADDR
|
||||
|
||||
// 创建 HTTP 请求
|
||||
HTTP_Request, err = http.NewRequest("GET", URL_ADDR, nil)
|
||||
@@ -87,6 +89,8 @@ func curl_(IP_ADDR string) (string, error) {
|
||||
log.Printf("创建请求时出错: %v", err)
|
||||
}
|
||||
|
||||
Referer := "https://qifu.baidu.com/?activeKey=SEARCH_IP&trace=apistore_ip_aladdin&activeId=SEARCH_IP_ADDRESS&ip=" + IP_ADDR
|
||||
|
||||
// 设置请求头
|
||||
HTTP_Request.Header.Set("User-Agent", "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Mobile Safari/537.36")
|
||||
HTTP_Request.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7")
|
||||
@@ -94,8 +98,7 @@ func curl_(IP_ADDR string) (string, error) {
|
||||
HTTP_Request.Header.Set("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8")
|
||||
HTTP_Request.Header.Set("Cache-Control", "max-age=0")
|
||||
HTTP_Request.Header.Set("Connection", "keep-alive")
|
||||
HTTP_Request.Header.Set("Cookie", "BIDUPSID=04922F7E0DDC6A5B7E0BA15C33FD2176; PSTM=1722408897; BAIDUID=8313999060289847CAE0A6F34A9C4206:FG=1; Hm_lvt_edc762f9f8f5f525fad4770a32b5edda=1724987641; Hm_lvt_28a17f66627d87f1d046eae152a1c93d=1724987645; AGL_USER_ID=186badbd-dd36-4d39-89f4-8d2aa7a01414; BDUSS=1pvWmdhYThIelRSS1NuQkJESHNYV0REcG9teXMxOW9VaURTU2tyRlZTZ3Z4dmhtRVFBQUFBJCQAAAAAAAAAAAEAAADGRkRexaPT8cHrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC850WYvOdFmM")
|
||||
HTTP_Request.Header.Set("Host", "qifu-api.baidubce.com")
|
||||
HTTP_Request.Header.Set("Host", "qifu.baidu.com")
|
||||
HTTP_Request.Header.Set("Sec-Ch-Ua", `"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"`)
|
||||
HTTP_Request.Header.Set("Sec-Ch-Ua-Mobile", "?1")
|
||||
HTTP_Request.Header.Set("Sec-Ch-Ua-Platform", `"Android"`)
|
||||
@@ -104,6 +107,7 @@ func curl_(IP_ADDR string) (string, error) {
|
||||
HTTP_Request.Header.Set("Sec-Fetch-Site", "none")
|
||||
HTTP_Request.Header.Set("Sec-Fetch-User", "?1")
|
||||
HTTP_Request.Header.Set("Upgrade-Insecure-Requests", "1")
|
||||
HTTP_Request.Header.Set("Referer", Referer)
|
||||
|
||||
// 创建 HTTP 客户端并设置超时时间
|
||||
HTTP_CLIENT = &http.Client{Timeout: 10 * time.Second}
|
||||
@@ -142,10 +146,10 @@ func curl_(IP_ADDR string) (string, error) {
|
||||
}
|
||||
|
||||
// 确保数据有效
|
||||
if HTPP_JSON.Code != "Success" {
|
||||
log.Printf("返回数据不符合预期: %s", HTPP_JSON.Code)
|
||||
return "", fmt.Errorf("返回数据不符合预期: %s", HTPP_JSON.Code)
|
||||
if HTPP_JSON.Message != "success" {
|
||||
log.Printf("返回数据不符合预期: %d", HTPP_JSON.Code)
|
||||
return "", fmt.Errorf("返回数据不符合预期: %d", HTPP_JSON.Code)
|
||||
}
|
||||
|
||||
return fmt.Sprintf("%s%s", HTPP_JSON.Data.Continent, HTPP_JSON.Data.Country), err
|
||||
return fmt.Sprintf("%s%s", HTPP_JSON.Data.Country, HTPP_JSON.Data.Province), err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user