package cnblogs_api import ( "io" "log" "net/http" "os" "strings" ) var USER_AGENT = "SaveTheWebProject cnblogs-preserve/0.1 (+saveweb@saveweb.org) and not Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0" var Logger = log.New(os.Stdout, "[cnblogs_api] ", log.Ldate|log.Ltime|log.Lmsgprefix) func EnsureConnection(client http.Client) { req, err := http.NewRequest("GET", "https://www.cnblogs.com/robots.txt", nil) if err != nil { panic(err) } req.Header.Add("User-Agent", USER_AGENT) resp, err := client.Do(req) if err != nil { panic(err) } defer resp.Body.Close() body, err := io.ReadAll(resp.Body) if err != nil { panic(err) } text := string(body) Logger.Println(text) if !strings.Contains(text, "User-Agent") { panic("NotImplementedError: " + text) } } func GetRSSHeadHeaders(client http.Client, blogID string) (http.Header, int, int64) { req, err := http.NewRequest("HEAD", "https://feed.cnblogs.com/blog/u/"+blogID+"/rss/", nil) if err != nil { panic(err) } headers := map[string][]string{ "User-Agent": {USER_AGENT}, } for k, v := range headers { req.Header[k] = v } resp, err := client.Do(req) if err != nil { panic(err) } defer resp.Body.Close() _, err = io.ReadAll(resp.Body) if err != nil { panic(err) } return resp.Header, resp.StatusCode, resp.ContentLength }