65 lines
1.3 KiB
Go
65 lines
1.3 KiB
Go
|
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
|
||
|
|
||
|
}
|