/
passive.go
61 lines (56 loc) · 1.86 KB
/
passive.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package mitmproxy
import (
"github.com/thoas/go-funk"
"github.com/yhy0/Jie/conf"
"github.com/yhy0/Jie/pkg/mitmproxy/go-mitmproxy/proxy"
"github.com/yhy0/Jie/pkg/util"
"path/filepath"
)
/**
@author: yhy
@since: 2023/10/10
@desc: go-mitmproxy 插件,用来获取流量信息
**/
type PassiveAddon struct {
proxy.BaseAddon
done chan bool
}
// Response 对有响应的进行测试
func (pa *PassiveAddon) Response(f *proxy.Flow) {
if f.Request.Method == "CONNECT" {
return
}
// 过滤一些干扰项
if len(conf.GlobalConfig.Mitmproxy.Exclude) > 0 || !(len(conf.GlobalConfig.Mitmproxy.Exclude) == 1 && conf.GlobalConfig.Mitmproxy.Exclude[0] == "") {
if !util.RegexpStr(conf.GlobalConfig.Mitmproxy.Exclude, f.Request.URL.Host) {
judge(f)
}
} else {
judge(f)
}
}
func judge(f *proxy.Flow) {
if len(conf.GlobalConfig.Mitmproxy.Include) > 0 && !(len(conf.GlobalConfig.Mitmproxy.Include) == 1 && conf.GlobalConfig.Mitmproxy.Include[0] == "") {
if util.RegexpStr(conf.GlobalConfig.Mitmproxy.Include, f.Request.URL.Host) {
ext := filepath.Ext(f.Request.URL.Path)
// 过滤一些后缀, 比如 mp4 等,但 .css .js 还是要放过的,要进行敏感信息检测
var flag = false
if ext != "" {
flag = funk.Contains(conf.GlobalConfig.Mitmproxy.FilterSuffix, ext)
}
if !flag {
distribution(f)
}
}
} else {
ext := filepath.Ext(f.Request.URL.Path)
// 过滤一些后缀, 比如 mp4 等,但 .css .js 还是要放过的,要进行敏感信息检测
var flag = false
if ext != "" {
flag = funk.Contains(conf.GlobalConfig.Mitmproxy.FilterSuffix, ext)
}
if !flag {
distribution(f)
}
}
}