优化golang工具
This commit is contained in:
Binary file not shown.
@@ -1,6 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
@@ -37,15 +38,15 @@ func isValidIP(ip string) bool {
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
var (
|
var (
|
||||||
|
err error
|
||||||
IP_ADDR string
|
IP_ADDR string
|
||||||
URL_ADDR string
|
URL_ADDR string
|
||||||
err error
|
|
||||||
|
|
||||||
HTTP_RESP *http.Response
|
HTTP_RESP *http.Response
|
||||||
HTTP_BODY []byte
|
HTTP_Request *http.Request
|
||||||
HTTP_CLIENT *http.Client
|
HTTP_BODY []byte
|
||||||
|
HTTP_CLIENT *http.Client
|
||||||
HTPP_JSON JSON
|
HTPP_JSON JSON
|
||||||
)
|
)
|
||||||
|
|
||||||
if len(os.Args) < 2 {
|
if len(os.Args) < 2 {
|
||||||
@@ -61,34 +62,34 @@ func main() {
|
|||||||
URL_ADDR = "https://qifu.baidu.com/ip/geo/v1/district?ip=" + IP_ADDR
|
URL_ADDR = "https://qifu.baidu.com/ip/geo/v1/district?ip=" + IP_ADDR
|
||||||
|
|
||||||
// 创建 HTTP 请求
|
// 创建 HTTP 请求
|
||||||
req, err := http.NewRequest("GET", URL_ADDR, nil)
|
HTTP_Request, err = http.NewRequest("GET", URL_ADDR, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("创建请求时出错: %v", err)
|
log.Fatalf("创建请求时出错: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置请求头
|
// 设置请求头
|
||||||
req.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("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")
|
||||||
req.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")
|
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")
|
||||||
req.Header.Set("Accept-Encoding", "gzip, deflate, br, zstd")
|
HTTP_Request.Header.Set("Accept-Encoding", "gzip, deflate, br, zstd")
|
||||||
req.Header.Set("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8")
|
HTTP_Request.Header.Set("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8")
|
||||||
req.Header.Set("Cache-Control", "max-age=0")
|
HTTP_Request.Header.Set("Cache-Control", "max-age=0")
|
||||||
req.Header.Set("Connection", "keep-alive")
|
HTTP_Request.Header.Set("Connection", "keep-alive")
|
||||||
req.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("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")
|
||||||
req.Header.Set("Host", "qifu.baidu.com")
|
HTTP_Request.Header.Set("Host", "qifu.baidu.com")
|
||||||
req.Header.Set("Sec-Ch-Ua", `"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"`)
|
HTTP_Request.Header.Set("Sec-Ch-Ua", `"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"`)
|
||||||
req.Header.Set("Sec-Ch-Ua-Mobile", "?1")
|
HTTP_Request.Header.Set("Sec-Ch-Ua-Mobile", "?1")
|
||||||
req.Header.Set("Sec-Ch-Ua-Platform", `"Android"`)
|
HTTP_Request.Header.Set("Sec-Ch-Ua-Platform", `"Android"`)
|
||||||
req.Header.Set("Sec-Fetch-Dest", "document")
|
HTTP_Request.Header.Set("Sec-Fetch-Dest", "document")
|
||||||
req.Header.Set("Sec-Fetch-Mode", "navigate")
|
HTTP_Request.Header.Set("Sec-Fetch-Mode", "navigate")
|
||||||
req.Header.Set("Sec-Fetch-Site", "none")
|
HTTP_Request.Header.Set("Sec-Fetch-Site", "none")
|
||||||
req.Header.Set("Sec-Fetch-User", "?1")
|
HTTP_Request.Header.Set("Sec-Fetch-User", "?1")
|
||||||
req.Header.Set("Upgrade-Insecure-Requests", "1")
|
HTTP_Request.Header.Set("Upgrade-Insecure-Requests", "1")
|
||||||
|
|
||||||
// 创建 HTTP 客户端并设置超时时间
|
// 创建 HTTP 客户端并设置超时时间
|
||||||
HTTP_CLIENT = &http.Client{Timeout: 10 * time.Second}
|
HTTP_CLIENT = &http.Client{Timeout: 10 * time.Second}
|
||||||
|
|
||||||
// 发送请求
|
// 发送请求
|
||||||
HTTP_RESP, err = HTTP_CLIENT.Do(req)
|
HTTP_RESP, err = HTTP_CLIENT.Do(HTTP_Request)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("发送请求时出错: %v", err)
|
log.Fatalf("发送请求时出错: %v", err)
|
||||||
}
|
}
|
||||||
@@ -104,6 +105,11 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("读取响应体时出错: %v", err)
|
log.Fatalf("读取响应体时出错: %v", err)
|
||||||
}
|
}
|
||||||
|
// 使用 bytes.Buffer 拼接 []byte 和字符串
|
||||||
|
var buffer bytes.Buffer
|
||||||
|
buffer.Write(HTTP_BODY)
|
||||||
|
buffer.WriteString("\n")
|
||||||
|
SaveBytesToFile(buffer.Bytes(), "response.json")
|
||||||
|
|
||||||
// 解析 JSON 数据
|
// 解析 JSON 数据
|
||||||
err = json.Unmarshal(HTTP_BODY, &HTPP_JSON)
|
err = json.Unmarshal(HTTP_BODY, &HTPP_JSON)
|
||||||
@@ -118,3 +124,24 @@ func main() {
|
|||||||
fmt.Printf("Error!\n")
|
fmt.Printf("Error!\n")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SaveBytesToFile(data []byte, filename string) error {
|
||||||
|
file, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to open file: %w", err)
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
_, err = file.Write(data)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to write to file: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果你想要在每次写入后立即同步数据到磁盘(可选)
|
||||||
|
err = file.Sync()
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to sync data to disk: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
6
IP_region_query/response.json
Normal file
6
IP_region_query/response.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{"code":"Success","data":{"continent":"北美洲","country":"美国","zipcode":"","owner":"","isp":"Cloudflare, Inc.","adcode":"","prov":"","city":"","district":""},"ip":"1.1.1.1"}
|
||||||
|
{"code":"Success","data":{"continent":"北美洲","country":"美国","zipcode":"","owner":"","isp":"Cloudflare, Inc.","adcode":"","prov":"","city":"","district":""},"ip":"1.1.1.2"}
|
||||||
|
{"code":"Success","data":{"continent":"北美洲","country":"美国","zipcode":"","owner":"","isp":"Cloudflare, Inc.","adcode":"","prov":"","city":"","district":""},"ip":"1.1.1.3"}
|
||||||
|
{"code":"Success","data":{"continent":"北美洲","country":"美国","zipcode":"","owner":"","isp":"Cloudflare, Inc.","adcode":"","prov":"","city":"","district":""},"ip":"1.1.1.4"}
|
||||||
|
{"code":"Success","data":{"continent":"北美洲","country":"美国","zipcode":"","owner":"","isp":"Cloudflare, Inc.","adcode":"","prov":"","city":"","district":""},"ip":"1.1.1.5"}
|
||||||
|
{"code":"Success","data":{"continent":"北美洲","country":"美国","zipcode":"","owner":"","isp":"Cloudflare, Inc.","adcode":"","prov":"","city":"","district":""},"ip":"1.1.1.6"}
|
||||||
Reference in New Issue
Block a user