代码拉取完成,页面将自动刷新
package https
import (
"fmt"
"net/http/cookiejar"
"net/url"
"time"
)
// 请求开始前的钩子操作
func (c *CURL) hookBefore() *CURL {
if c == nil {
c = &CURL{
Error: fmt.Errorf("http实例未正常初始化"),
}
}
c.
headerDefault("accept", _default.AC). // 设置默认请求头 Accept 内容类型
headerDefault("Content-Type", _default.CT). // 设置默认请求头 ContentType 内容类型
headerDefault("accept-language", _default.ACL). // 设置默认请求头 Accept-Language 语言
headerDefault("accept-encoding", "gzip, deflate, br"). // 设置默认请求头 Accept-Encoding 支持的压缩方式
headerDefault("user-agent", _default.UA) // 设置默认请求头 User-Agent 浏览器标识
// 缓存判定,如果存在缓存的话就直接追加响应值,且配置error错误对象
ck, err := url.QueryUnescape(_default.cacheInterface.Get(c.getKey()))
if err == nil && ck != "" {
c.Body = ck
c.option.cacheHit = true
}
return c
}
// 设置header默认值,且配置该值忽略日志记录
//
// k header下标
// v 下标值
func (c *CURL) headerDefault(k, v string) *CURL {
// 追加Header请求头
if _, ok := c.HeaderQuest[k]; !ok {
c.HeaderQuest[k] = v
// 判断忽略参数里有无此head头
for i := 0; i < len(c.option.ignoreHeader); i++ {
if c.option.ignoreHeader[i] == k {
return c
}
}
c.option.ignoreHeader = append(c.option.ignoreHeader, k)
}
return c
}
// 请求结束的钩子操作
func (c *CURL) hookEnd() *CURL {
c.EndTime = time.Now()
// 记录缓存
if c.option.cacheTime > 0 {
// 将Body进行 url.QueryEscape 编码,避免中间出现"导致redis存储失败
_default.cacheInterface.Set(c.getKey(), url.QueryEscape(c.Body), c.option.cacheTime)
}
// 移除忽略的请求头信息
for i := 0; i < len(c.option.ignoreHeader); i++ {
delete(c.HeaderQuest, c.option.ignoreHeader[i])
}
// 如果设置了日志记录并且未命中缓存,则调用日志函数进行对应记录
if !c.option.noLog && !c.option.cacheHit {
// 记录日志
for i := 0; i < len(_default.LogFunc); i++ {
_default.LogFunc[i](c)
}
}
return c
}
// 获取cookie的jar信息
func getJar() *cookiejar.Jar {
if !_default.saveCookie {
return nil
}
if _default.jar != nil {
return _default.jar
}
jar, err := cookiejar.New(nil)
if err != nil {
return nil
}
_default.jar = jar
return jar
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。