save
This commit is contained in:
parent
f2fe449880
commit
c28147be31
@ -9,6 +9,7 @@ import (
|
||||
"net/url"
|
||||
"os"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"474420502.top/eson/requests"
|
||||
@ -23,7 +24,10 @@ type CURL struct {
|
||||
Cookies []*http.Cookie
|
||||
Body *requests.Body
|
||||
Auth *requests.BasicAuth
|
||||
Timeout int // second
|
||||
Insecure bool
|
||||
|
||||
CallBack string
|
||||
}
|
||||
|
||||
// NewCURL new 一个 curl 出来
|
||||
@ -35,6 +39,7 @@ func NewCURL() *CURL {
|
||||
u.Header = make(http.Header)
|
||||
u.CookieJar, _ = cookiejar.New(nil)
|
||||
u.Body = requests.NewBody()
|
||||
u.Timeout = 30
|
||||
|
||||
return u
|
||||
}
|
||||
@ -52,6 +57,7 @@ func (curl *CURL) CreateSession() *requests.Session {
|
||||
ses := requests.NewSession()
|
||||
ses.SetHeader(curl.Header)
|
||||
ses.SetCookies(curl.ParsedURL, curl.Cookies)
|
||||
ses.SetConfig(requests.CRequestTimeout, curl.Timeout)
|
||||
|
||||
if curl.Auth != nil {
|
||||
ses.SetConfig(requests.CBasicAuth, curl.Auth)
|
||||
@ -206,6 +212,9 @@ func parseLongOption(u *CURL, soption string) *parseFunction {
|
||||
|
||||
case regexp.MustCompile("^--header").MatchString(soption):
|
||||
return &parseFunction{ParamCURL: u, ParamData: soption, ExecuteFunction: parseHeader, Prioty: 10}
|
||||
case regexp.MustCompile("^--call").MatchString(soption):
|
||||
data := extractData("^--call +(.+)", soption)
|
||||
return &parseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseCallBack, Prioty: 10}
|
||||
case regexp.MustCompile("^--user-agent").MatchString(soption):
|
||||
data := extractData("^--user-agent +(.+)", soption)
|
||||
return &parseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseUserAgent, Prioty: 15}
|
||||
@ -214,6 +223,9 @@ func parseLongOption(u *CURL, soption string) *parseFunction {
|
||||
return &parseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseUser, Prioty: 15}
|
||||
case regexp.MustCompile("^--insecure").MatchString(soption):
|
||||
return &parseFunction{ParamCURL: u, ParamData: soption, ExecuteFunction: parseInsecure, Prioty: 15}
|
||||
case regexp.MustCompile("^--connect-timeout").MatchString(soption):
|
||||
data := extractData("^--connect-timeout +(.+)", soption)
|
||||
return &parseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseTimeout, Prioty: 15}
|
||||
}
|
||||
|
||||
log.Println("can't parseOption", soption)
|
||||
@ -225,6 +237,18 @@ func extractData(re, soption string) string {
|
||||
return strings.Trim(datas[1], "'")
|
||||
}
|
||||
|
||||
func parseCallBack(u *CURL, value string) {
|
||||
u.CallBack = value
|
||||
}
|
||||
|
||||
func parseTimeout(u *CURL, value string) {
|
||||
timeout, err := strconv.Atoi(value)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
u.Timeout = timeout
|
||||
}
|
||||
|
||||
func parseInsecure(u *CURL, soption string) {
|
||||
u.Insecure = true
|
||||
}
|
||||
|
@ -51,7 +51,7 @@ func TestTouTiaoCURL(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestErrorCurl(t *testing.T) {
|
||||
scurl := `curl 'https://re.csdn.net/csdnbi' -H 'Origin: https://blog.csdn.net' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: zh' -H 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1' -H 'Content-Type: text/plain;charset=UTF-8' -H 'Accept: */*' -H 'Referer: https://blog.csdn.net/levon2018/article/details/80558108' -H 'Cookie: uuid_tt_dd=10_30744014340-1533110459408-320601; smidV2=2018082914272667751d1cac24793525732f74f62cbe9a0099f94a08e9b7de0; dc_session_id=10_1536825785870.531052; ARK_ID=JSa3a7b5f009df2bf82fa457adf0741aaaa3a7; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1538100545,1538118577,1538119202,1538121038; dc_tos=pfrclv; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1538124692' -H 'Connection: keep-alive' --data-binary '[{"headers":{"component":"enterprise","datatype":"re","version":"v1"},"body":"{\"re\":\"uid=-&ref=&pid=blog&mod=popu_36&con=%2Chttps%3A%2F%2Fblog.csdn.net%2Fxixi880928%2Farticle%2Fdetails%2F78339157%2CBlogCommendFromBaidu_2&ck=-&curl=https%3A%2F%2Fblog.csdn.net%2Flevon2018%2Farticle%2Fdetails%2F80558108&session_id=10_1536825785870.531052&type=view\"}"},{"headers":{"component":"enterprise","datatype":"re","version":"v1"},"body":"{\"re\":\"uid=-&ref=&pid=blog&mod=popu_36&con=%2Chttps%3A%2F%2Fblog.csdn.net%2Fchaowanghn%2Farticle%2Fdetails%2F54601024%2CBlogCommendFromBaidu_3&ck=-&curl=https%3A%2F%2Fblog.csdn.net%2Flevon2018%2Farticle%2Fdetails%2F80558108&session_id=10_1536825785870.531052&type=view\"}"},{"headers":{"component":"enterprise","datatype":"re","version":"v1"},"body":"{\"re\":\"uid=-&ref=&pid=blog&mod=popu_36&con=%2Chttps%3A%2F%2Fblog.csdn.net%2Flanchunhui%2Farticle%2Fdetails%2F78877514%2CBlogCommendFromBaidu_4&ck=-&curl=https%3A%2F%2Fblog.csdn.net%2Flevon2018%2Farticle%2Fdetails%2F80558108&session_id=10_1536825785870.531052&type=view\"}"},{"headers":{"component":"enterprise","datatype":"re","version":"v1"},"body":"{\"re\":\"uid=-&ref=&pid=blog&mod=popu_36&con=%2Chttps%3A%2F%2Fblog.csdn.net%2Fsaw1990%2Farticle%2Fdetails%2F39287631%2CBlogCommendFromBaidu_5&ck=-&curl=https%3A%2F%2Fblog.csdn.net%2Flevon2018%2Farticle%2Fdetails%2F80558108&session_id=10_1536825785870.531052&type=view\"}"},{"headers":{"component":"enterprise","datatype":"re","version":"v1"},"body":"{\"re\":\"uid=-&ref=&pid=blog&mod=popu_36&con=%2Chttps%3A%2F%2Fblog.csdn.net%2Fu011044684%2Farticle%2Fdetails%2F45287575%2CBlogCommendFromBaidu_6&ck=-&curl=https%3A%2F%2Fblog.csdn.net%2Flevon2018%2Farticle%2Fdetails%2F80558108&session_id=10_1536825785870.531052&type=view\"}"},{"headers":{"component":"enterprise","datatype":"re","version":"v1"},"body":"{\"re\":\"uid=-&ref=&pid=blog&mod=popu_36&con=%2Chttps%3A%2F%2Fblog.csdn.net%2Fnimade511%2Farticle%2Fdetails%2F52540437%2CBlogCommendFromBaidu_7&ck=-&curl=https%3A%2F%2Fblog.csdn.net%2Flevon2018%2Farticle%2Fdetails%2F80558108&session_id=10_1536825785870.531052&type=view\"}"},{"headers":{"component":"enterprise","datatype":"re","version":"v1"},"body":"{\"re\":\"uid=-&ref=&pid=blog&mod=popu_36&con=%2Chttps%3A%2F%2Fblog.csdn.net%2Fpipisorry%2Farticle%2Fdetails%2F47948065%2CBlogCommendFromBaidu_8&ck=-&curl=https%3A%2F%2Fblog.csdn.net%2Flevon2018%2Farticle%2Fdetails%2F80558108&session_id=10_1536825785870.531052&type=view\"}"},{"headers":{"component":"enterprise","datatype":"re","version":"v1"},"body":"{\"re\":\"uid=-&ref=&pid=blog&mod=popu_36&con=%2Chttps%3A%2F%2Fblog.csdn.net%2Fyudiyanwang%2Farticle%2Fdetails%2F71843633%2CBlogCommendFromBaidu_9&ck=-&curl=https%3A%2F%2Fblog.csdn.net%2Flevon2018%2Farticle%2Fdetails%2F80558108&session_id=10_1536825785870.531052&type=view\"}"}]'`
|
||||
scurl := `curl 'https://appgrowing.cn/'-H 'authority: appgrowing.cn' -H 'cache-control: max-age=0' -H 'upgrade-insecure-requests: 1' -H 'user-agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1' -H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' -H 'accept-encoding: gzip, deflate, br' -H 'accept-language: zh' -H 'cookie: _ga=GA1.2.1371058419.1533104518; _gid=GA1.2.896241740.1543307916; _gat_gtag_UA_4002880_19=1' -H 'if-none-match: W/"5bf7a0a9-ca6"' -H 'if-modified-since: Fri, 23 Nov 2018 06:39:37 GMT'`
|
||||
curl, err := ParseRawCURL(scurl)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
@ -65,3 +65,18 @@ func TestErrorCurl(t *testing.T) {
|
||||
}
|
||||
t.Log("Content:\n", resp.Content(), reflect.TypeOf(curl.Body.GetIOBody()))
|
||||
}
|
||||
|
||||
func TestCurlTimeout(t *testing.T) {
|
||||
scurl := `curl 'https://javtc.com/' --connect-timeout 1 -H 'authority: appgrowing.cn' -H 'cache-control: max-age=0' -H 'upgrade-insecure-requests: 1' -H 'user-agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1' -H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' -H 'accept-encoding: gzip, deflate, br' -H 'accept-language: zh' -H 'cookie: _ga=GA1.2.1371058419.1533104518; _gid=GA1.2.896241740.1543307916; _gat_gtag_UA_4002880_19=1' -H 'if-none-match: W/"5bf7a0a9-ca6"' -H 'if-modified-since: Fri, 23 Nov 2018 06:39:37 GMT'`
|
||||
curl, err := ParseRawCURL(scurl)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
ses := curl.CreateSession()
|
||||
wf := curl.CreateWorkflow(ses)
|
||||
_, err = wf.Execute()
|
||||
if err == nil {
|
||||
t.Error("not timeout")
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user