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