|
1 | 1 | package Function
|
2 | 2 |
|
3 | 3 | import (
|
| 4 | + "ShiroKeyCheck/GlobalVar" |
4 | 5 | "crypto/tls"
|
| 6 | + "errors" |
5 | 7 | "fmt"
|
6 | 8 | "net/http"
|
7 | 9 | "net/url"
|
8 | 10 | "os"
|
9 | 11 | "strings"
|
10 | 12 | "time"
|
11 |
| - |
12 |
| - "ShiroKeyCheck/GlobalVar" |
13 | 13 | )
|
14 | 14 |
|
15 | 15 | func HttpRequset(RememberMe string) bool {
|
@@ -42,19 +42,88 @@ func HttpRequset(RememberMe string) bool {
|
42 | 42 | req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
43 | 43 | }
|
44 | 44 | req.Header.Set("User-Agent", GlobalVar.UserAgent)
|
45 |
| - req.Header.Set("Cookie", "rememberMe="+RememberMe) |
| 45 | + req.Header.Set("Cookie", GlobalVar.ReqHeader+"="+RememberMe) |
46 | 46 | resp, err := client.Do(req)
|
| 47 | + if err != nil { |
| 48 | + var e *url.Error |
| 49 | + errors.As(err, &e) |
| 50 | + if e.Timeout() { |
| 51 | + fmt.Println("[Error] The request timed out, please check the network! ") |
| 52 | + os.Exit(1) |
| 53 | + } else { |
| 54 | + fmt.Println(err) |
| 55 | + os.Exit(1) |
| 56 | + } |
| 57 | + } |
| 58 | + defer resp.Body.Close() |
| 59 | + //判断rememberMe=deleteMe;是否在响应头中 |
| 60 | + var SetCookieAll string |
| 61 | + for i := range resp.Header["Set-Cookie"] { |
| 62 | + SetCookieAll += resp.Header["Set-Cookie"][i] |
| 63 | + } |
| 64 | + if !strings.Contains(SetCookieAll, GlobalVar.RespHeader+"=deleteMe;") { |
| 65 | + return true //内容中不包含rememberMe |
| 66 | + } else { |
| 67 | + return false |
| 68 | + } |
| 69 | +} |
| 70 | +func HttpRequset2(RememberMe string, Shirokeys string, Mode string) bool { |
| 71 | + //设置跳过https证书验证,超时和代理 |
| 72 | + var tr *http.Transport |
| 73 | + if GlobalVar.HttpProxy != "" { |
| 74 | + uri, _ := url.Parse(GlobalVar.HttpProxy) |
| 75 | + tr = &http.Transport{ |
| 76 | + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, |
| 77 | + Proxy: http.ProxyURL(uri), |
| 78 | + } |
| 79 | + } else { |
| 80 | + tr = &http.Transport{ |
| 81 | + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, |
| 82 | + } |
| 83 | + } |
| 84 | + client := &http.Client{ |
| 85 | + Timeout: time.Duration(GlobalVar.Timeout) * time.Second, |
| 86 | + Transport: tr, |
| 87 | + CheckRedirect: func(req *http.Request, via []*http.Request) error { |
| 88 | + return http.ErrUseLastResponse //不允许跳转 |
| 89 | + }} |
| 90 | + req, err := http.NewRequest(strings.ToUpper(GlobalVar.Method), GlobalVar.Url, strings.NewReader(GlobalVar.PostContent)) |
47 | 91 | if err != nil {
|
48 | 92 | fmt.Println(err)
|
49 | 93 | os.Exit(1)
|
50 | 94 | }
|
| 95 | + //设置请求头 |
| 96 | + if strings.ToUpper(GlobalVar.Method) == "POST" { |
| 97 | + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") |
| 98 | + } |
| 99 | + req.Header.Set("User-Agent", GlobalVar.UserAgent) |
| 100 | + req.Header.Set("Cookie", GlobalVar.ReqHeader+"="+RememberMe) |
| 101 | + resp, err := client.Do(req) |
| 102 | + if err != nil { |
| 103 | + var e *url.Error |
| 104 | + errors.As(err, &e) |
| 105 | + if e.Timeout() { |
| 106 | + fmt.Printf("[Error] Request TimeOut! Key is %s ,Mode: %s ,Please test manually: \nrememberMe= %s\n", Shirokeys, Mode, RememberMe) |
| 107 | + GlobalVar.Timeoutcount++ |
| 108 | + if GlobalVar.Timeoutcount >= 3 { |
| 109 | + fmt.Println("\n[Error] Request Timeout 3 times in a row, please check the network and try again! \n") |
| 110 | + os.Exit(1) |
| 111 | + } |
| 112 | + return false |
| 113 | + } else { |
| 114 | + fmt.Println(err) |
| 115 | + os.Exit(1) |
| 116 | + } |
| 117 | + } else { |
| 118 | + GlobalVar.Timeoutcount = 0 |
| 119 | + } |
51 | 120 | defer resp.Body.Close()
|
52 | 121 | //判断rememberMe=deleteMe;是否在响应头中
|
53 | 122 | var SetCookieAll string
|
54 | 123 | for i := range resp.Header["Set-Cookie"] {
|
55 | 124 | SetCookieAll += resp.Header["Set-Cookie"][i]
|
56 | 125 | }
|
57 |
| - if !strings.Contains(SetCookieAll, "rememberMe=deleteMe;") { |
| 126 | + if !strings.Contains(SetCookieAll, GlobalVar.RespHeader+"=deleteMe;") { |
58 | 127 | return true //内容中不包含rememberMe
|
59 | 128 | } else {
|
60 | 129 | return false
|
|
0 commit comments