perf: intercept optimization

This commit is contained in:
putyy
2025-06-08 11:20:56 +08:00
parent 7a07456b2f
commit deb3e83082
2 changed files with 18 additions and 9 deletions

View File

@@ -122,13 +122,6 @@ func (p *QqPlugin) handleWechatRequest(r *http.Request, ctx *goproxy.ProxyCtx) (
return r, p.buildEmptyResponse(r) return r, p.buildEmptyResponse(r)
} }
isAll, _ := p.bridge.GetResType("all")
isClassify, _ := p.bridge.GetResType("video")
if !isAll && !isClassify {
return r, p.buildEmptyResponse(r)
}
go p.handleMedia(body) go p.handleMedia(body)
return r, p.buildEmptyResponse(r) return r, p.buildEmptyResponse(r)
@@ -188,6 +181,17 @@ func (p *QqPlugin) handleMedia(body []byte) {
res.ContentType = "image/png" res.ContentType = "image/png"
} }
isAll, _ := p.bridge.GetResType("all")
isImage, _ := p.bridge.GetResType("image")
if res.Classify == "image" && !isImage && !isAll {
return
}
isVideo, _ := p.bridge.GetResType("video")
if res.Classify == "video" && !isVideo && !isAll {
return
}
if urlToken, ok := firstMedia["urlToken"].(string); ok { if urlToken, ok := firstMedia["urlToken"].(string); ok {
res.Url += urlToken res.Url += urlToken
} }

View File

@@ -59,8 +59,8 @@ func (r *Resource) markMedia(key string) {
func (r *Resource) getResType(key string) (bool, bool) { func (r *Resource) getResType(key string) (bool, bool) {
r.resTypeMux.RLock() r.resTypeMux.RLock()
defer r.resTypeMux.RUnlock()
value, ok := r.resType[key] value, ok := r.resType[key]
r.resTypeMux.RUnlock()
return value, ok return value, ok
} }
@@ -233,10 +233,15 @@ func (r *Resource) decodeWxFile(fileName, decodeStr string) error {
byteCount := len(decodedBytes) byteCount := len(decodedBytes)
fileBytes := make([]byte, byteCount) fileBytes := make([]byte, byteCount)
_, err = file.Read(fileBytes) n, err := file.Read(fileBytes)
if err != nil && err != io.EOF { if err != nil && err != io.EOF {
return err return err
} }
if n < byteCount {
byteCount = n
}
xorResult := make([]byte, byteCount) xorResult := make([]byte, byteCount)
for i := 0; i < byteCount; i++ { for i := 0; i < byteCount; i++ {
xorResult[i] = decodedBytes[i] ^ fileBytes[i] xorResult[i] = decodedBytes[i] ^ fileBytes[i]