53 lines
1006 B
Go
53 lines
1006 B
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
)
|
|
|
|
type IPInfo struct {
|
|
Code string `json:"code"`
|
|
Data struct {
|
|
Continent string `json:"continent"`
|
|
Country string `json:"country"`
|
|
} `json:"data"`
|
|
IP string `json:"ip"`
|
|
Msg string `json:"msg"`
|
|
}
|
|
|
|
func main() {
|
|
if len(os.Args) < 2 {
|
|
log.Fatalf("Usage: %s <IP>", os.Args[0])
|
|
}
|
|
|
|
// 目标 URL
|
|
url := "https://qifu.baidu.com/ip/geo/v1/district?ip=" + os.Args[1]
|
|
|
|
// 发送 GET 请求
|
|
resp, err := http.Get(url)
|
|
if err != nil {
|
|
log.Fatalf("Error making GET request: %v", err)
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
// 读取响应体
|
|
body, err := ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
log.Fatalf("Error reading response body: %v", err)
|
|
}
|
|
|
|
// 解析 JSON 数据
|
|
var ipInfo IPInfo
|
|
if err := json.Unmarshal(body, &ipInfo); err != nil {
|
|
log.Fatalf("Error parsing JSON: %v", err)
|
|
}
|
|
|
|
// 提取并打印 continent 和 country 字段
|
|
fmt.Printf("%s%s\n", ipInfo.Data.Continent, ipInfo.Data.Country)
|
|
|
|
}
|