package main import ( "encoding/json" "fmt" "log" "net/http" "time" "github.com/parnurzeal/gorequest" ) // 获取商品模版 func outGetGoodsTplMsgLinux(token, itemId, proxy string) (map[string]interface{}, error) { if token == "" { return nil, fmt.Errorf("请先登录获取Token") } url := fmt.Sprintf("https://seller.kongfz.com/pc/itemInfo/getTplFields?itemId=%s&isClone=1&v=%d", itemId, time.Now().Unix()) log.Printf("请求URL: %s", url) // 创建HTTP客户端 request := gorequest.New() // 设置代理(如果有提供代理URL) if proxy != "" { request.Proxy(proxy) log.Printf("使用代理: %s", proxy) } resp, body, errs := request.Get(url). Set("Cookie", fmt.Sprintf("PHPSESSID=%s", token)). Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"). Set("Accept", "application/json, text/plain, */*"). Set("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8"). Set("Referer", "https://seller.kongfz.com/"). Set("Origin", "https://seller.kongfz.com"). Timeout(30 * time.Second). End() if len(errs) > 0 { return nil, fmt.Errorf("请求失败: %v", errs) } // 检查HTTP状态码 if resp.StatusCode != http.StatusOK { return nil, fmt.Errorf("HTTP错误: %d - %s", resp.StatusCode, resp.Status) } var data map[string]interface{} if err := json.Unmarshal([]byte(body), &data); err != nil { return nil, fmt.Errorf("解析JSON失败: %w", err) } // 检查API响应状态 if val, ok := data["status"].(float64); ok && val == 1 { return data, nil } return nil, fmt.Errorf("API返回错误: %+v", data) } //func main() { // fmt.Println("=== 孔夫子商品模板API服务 ===") // // http.HandleFunc("/api/goodsTemplate", getGoodsTemplateHandler) // port := "8989" // server := &http.Server{ // Addr: ":" + port, // Handler: nil, // } // // 启动服务器 // if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed { // fmt.Printf("服务器启动失败: %v\n", err) // } //} // 获取商品模板接口 func getGoodsTemplateHandler(w http.ResponseWriter, r *http.Request) { // 设置响应头 w.Header().Set("Content-Type", "application/json") // 只处理GET请求 if r.Method != http.MethodGet { w.WriteHeader(http.StatusMethodNotAllowed) json.NewEncoder(w).Encode(map[string]interface{}{ "success": false, "error": "只支持GET请求", }) return } // 获取查询参数 token := r.URL.Query().Get("token") itemId := r.URL.Query().Get("itemId") proxy := r.URL.Query().Get("proxy") // 验证必需参数 if token == "" || itemId == "" { w.WriteHeader(http.StatusBadRequest) json.NewEncoder(w).Encode(map[string]interface{}{ "success": false, "error": "缺少必需参数: token 和 itemid", "usage": map[string]string{ "token": "登录Token (PHPSESSID)", "itemid": "商品ID", "proxy": "代理地址 (可选)", }, "example": "GET /api/goods-template?token=abc123&itemid=123456&proxy=http://proxy:8080", }) return } log.Printf("收到请求 - 商品ID: %s", itemId) // 调用函数获取商品模板 result, err := outGetGoodsTplMsgLinux(token, itemId, proxy) if err != nil { log.Printf("获取商品模板失败: %v", err) w.WriteHeader(http.StatusInternalServerError) json.NewEncoder(w).Encode(map[string]interface{}{ "success": false, "error": err.Error(), }) return } // 返回成功响应 json.NewEncoder(w).Encode(map[string]interface{}{ "success": true, "data": result, }) }