概述:
這段Go代碼使用 https://api.52an.fun/wx/?url={url} 接口批量檢查多個微信域名是否被封。接口返回的JSON格式中,status 字段為 1 表示域名正常,status 為 0 表示域名被封禁,message 字段會提供封禁的具體信息。程序會根據返回結果輸出每個域名的狀態。
Go代碼示例:
package main
import (
"encoding/json"
"fmt"
"net/http"
"time"
)
type CheckResult struct {
Status int `json:"status"`
Message string `json:"message"`
}
var urls = []string{
"https://mp.weixin.qq.com", // 示例1
"https://someblockedwechat.com", // 示例2
"https://anotherwechatdomain.com", // 示例3
// 可以繼續添加更多的域名
}
const apiURL = "https://api.52an.fun/wx/?url="
func main() {
// 批量檢查域名狀態
for _, url := range urls {
status := checkDomainStatus(url)
fmt.Printf("域名: %s, 狀態: %s\n", url, status)
}
}
// 請求接口檢查域名狀態
func checkDomainStatus(url string) string {
// 創建請求URL
requestURL := apiURL + url
client := &http.Client{Timeout: 10 * time.Second}
// 發起GET請求
resp, err := client.Get(requestURL)
if err != nil {
return fmt.Sprintf("請求失敗: %v", err)
}
defer resp.Body.Close()
// 解析返回的JSON
var result CheckResult
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
return fmt.Sprintf("JSON解析失敗: %v", err)
}
// 根據返回的狀態判斷
if result.Status == 1 {
return "正常"
} else if result.Status == 0 {
return "被封禁,原因:" + result.Message
}
return "未知狀態"
}
代碼介紹:
- 請求接口:代碼通過
http.Get方法發送GET請求,查詢微信域名的狀態。URL 需要傳入要檢查的域名。 - 數據解析:響應的數據格式為JSON,代碼使用
json.NewDecoder方法解析響應數據,映射到CheckResult結構體中。結構體中包含了status和message字段。 - 批量檢查:程序定義了一個
urls列表,存儲需要檢查的微信域名。通過循環遍歷urls,代碼會批量請求每個域名的狀態。 - 結果輸出:根據返回的
status字段,代碼輸出每個域名的狀態。如果status為1,表示域名正常;如果status為0,表示域名被封禁,並且會顯示封禁原因。 - 錯誤處理:如果請求失敗(如網絡問題、接口錯誤),程序會捕獲並輸出錯誤信息。同時,如果JSON解析失敗,也會顯示相應的錯誤。
使用方法:
- 依賴:該代碼不依賴於任何外部庫,Go語言內置了HTTP請求和JSON解析功能。
- 運行程序:在Go環境下,直接將上述代碼保存到文件中(例如
main.go),然後運行程序。程序會輸出每個域名的狀態。
示例輸出:
域名: https://mp.weixin.qq.com, 狀態: 正常
域名: https://someblockedwechat.com, 狀態: 被封禁,原因:域名不允許訪問
域名: https://anotherwechatdomain.com, 狀態: 正常
擴展功能:
- 多線程支持:為提高批量檢查效率,可以使用Go的併發機制(如 goroutines)來並行檢查多個域名的狀態。
- 日誌記錄:可以將每次檢查的結果記錄到日誌文件中,便於後續查看和分析。