-
Notifications
You must be signed in to change notification settings - Fork 43
/
hijack.go
72 lines (60 loc) · 1.56 KB
/
hijack.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
62
63
64
65
66
67
68
69
70
71
72
// Package crawlerx
// @Author bcy2007 2023/8/1 11:09
package crawlerx
import (
"github.com/go-rod/rod/lib/proto"
"github.com/ysmood/gson"
"net/http"
"net/url"
)
type HijackRequest interface {
Type() proto.NetworkResourceType
Method() string
URL() *url.URL
Header(key string) string
Headers() proto.NetworkHeaders
Body() string
JSONBody() gson.JSON
Req() *http.Request
}
type HijackResponse interface {
Payload() *proto.FetchFulfillRequest
Body() string
Headers() http.Header
}
type TestHijackRequest struct {
resourceType proto.NetworkResourceType
method string
url *url.URL
headers proto.NetworkHeaders
body gson.JSON
req *http.Request
}
func (testHijackRequest *TestHijackRequest) Type() proto.NetworkResourceType {
return testHijackRequest.resourceType
}
func (testHijackRequest *TestHijackRequest) Method() string {
return testHijackRequest.method
}
func (testHijackRequest *TestHijackRequest) URL() *url.URL {
return testHijackRequest.url
}
func (testHijackRequest *TestHijackRequest) Header(key string) string {
item, ok := testHijackRequest.headers[key]
if !ok {
return ""
}
return item.String()
}
func (testHijackRequest *TestHijackRequest) Headers() proto.NetworkHeaders {
return testHijackRequest.headers
}
func (testHijackRequest *TestHijackRequest) Body() string {
return testHijackRequest.body.String()
}
func (testHijackRequest *TestHijackRequest) JSONBody() gson.JSON {
return testHijackRequest.body
}
func (testHijackRequest *TestHijackRequest) Req() *http.Request {
return testHijackRequest.req
}