Documentation
¶
Index ¶
- Variables
- func BuildRequest(i interface{}, opts ...PocConfig) []byte
- func Do(method string, urlStr string, opts ...PocConfig) (rspInst *lowhttp.LowhttpResponse, reqInst *http.Request, err error)
- func DoDELETE(urlStr string, opts ...PocConfig) (rspInst *lowhttp.LowhttpResponse, reqInst *http.Request, err error)
- func DoGET(urlStr string, opts ...PocConfig) (rspInst *lowhttp.LowhttpResponse, reqInst *http.Request, err error)
- func DoHEAD(urlStr string, opts ...PocConfig) (rspInst *lowhttp.LowhttpResponse, reqInst *http.Request, err error)
- func DoOPTIONS(urlStr string, opts ...PocConfig) (rspInst *lowhttp.LowhttpResponse, reqInst *http.Request, err error)
- func DoPOST(urlStr string, opts ...PocConfig) (rspInst *lowhttp.LowhttpResponse, reqInst *http.Request, err error)
- func DoWebSocket(raw interface{}, opts ...PocConfig) (rsp []byte, req []byte, err error)
- func HTTP(i interface{}, opts ...PocConfig) (rsp []byte, req []byte, err error)
- func HTTPEx(i interface{}, opts ...PocConfig) (rspInst *lowhttp.LowhttpResponse, reqInst *http.Request, err error)
- func NewDefaultPoCConfig() *_pocConfig
- type PocConfig
- func WithAppendCookie(key, value string) PocConfig
- func WithAppendHeader(key, value string) PocConfig
- func WithAppendHeaderIfNotExist(key, value string) PocConfig
- func WithAppendHeaders(headers map[string]string) PocConfig
- func WithAppendHttpPacketFormEncoded(key, value string) PocConfig
- func WithAppendHttpPacketPath(path string) PocConfig
- func WithAppendHttpPacketUploadFile(fieldName, fileName string, fileContent interface{}, contentType ...string) PocConfig
- func WithAppendPostParam(key, value string) PocConfig
- func WithAppendQueryParam(key, value string) PocConfig
- func WithDeleteCookie(key string) PocConfig
- func WithDeleteForm(key string) PocConfig
- func WithDeleteHeader(key string) PocConfig
- func WithDeletePostParam(key string) PocConfig
- func WithDeleteQueryParam(key string) PocConfig
- func WithForceHTTP2(isHttp2 bool) PocConfig
- func WithForceHTTPS(isHttps bool) PocConfig
- func WithFromPlugin(b string) PocConfig
- func WithHost(h string) PocConfig
- func WithJSRedirect(b bool) PocConfig
- func WithNoFixContentLength(b bool) PocConfig
- func WithNoRedirect(b bool) PocConfig
- func WithParams(i interface{}) PocConfig
- func WithPort(port int) PocConfig
- func WithProxy(proxies ...string) PocConfig
- func WithRedirectHandler(i func(isHttps bool, req, rsp []byte) bool) PocConfig
- func WithRedirectTimes(t int) PocConfig
- func WithReplaceAllHttpPacketPostParams(values map[string]string) PocConfig
- func WithReplaceAllHttpPacketQueryParams(values map[string]string) PocConfig
- func WithReplaceHttpPacketBasicAuth(username, password string) PocConfig
- func WithReplaceHttpPacketBody(body []byte, chunk bool) PocConfig
- func WithReplaceHttpPacketCookie(key, value string) PocConfig
- func WithReplaceHttpPacketFirstLine(firstLine string) PocConfig
- func WithReplaceHttpPacketHeader(key, value string) PocConfig
- func WithReplaceHttpPacketHost(host string) PocConfig
- func WithReplaceHttpPacketMethod(method string) PocConfig
- func WithReplaceHttpPacketPath(path string) PocConfig
- func WithReplaceHttpPacketPostParam(key, value string) PocConfig
- func WithReplaceHttpPacketQueryParam(key, value string) PocConfig
- func WithReplaceHttpPacketQueryParamRaw(rawQuery string) PocConfig
- func WithRetryInStatusCode(codes ...int) PocConfig
- func WithRetryMaxWaitTime(f float64) PocConfig
- func WithRetryNotInStausCode(codes ...int) PocConfig
- func WithRetryTimes(t int) PocConfig
- func WithRetryWaitTime(f float64) PocConfig
- func WithRuntimeId(r string) PocConfig
- func WithSave(i bool) PocConfig
- func WithSession(i interface{}) PocConfig
- func WithSource(i string) PocConfig
- func WithTimeout(f float64) PocConfig
- func WithWebsocket(w bool) PocConfig
- func WithWebsocketClientHandler(w func(c *lowhttp.WebsocketClient)) PocConfig
- func WithWebsocketHandler(w func(i []byte, cancel func())) PocConfig
Constants ¶
This section is empty.
Variables ¶
var ( PoCOptWithSource = WithSource PoCOptWithRuntimeId = WithRuntimeId PoCOptWithFromPlugin = WithFromPlugin PoCOptWithSaveHTTPFlow = WithSave PoCOptWithProxy = WithProxy )
for export
var PoCExports = map[string]interface{}{}/* 116 elements not displayed */
Functions ¶
func BuildRequest ¶
BuildRequest 是一个用于辅助构建请求报文的工具函数,它第一个参数可以接收[]byte, string, http.Request结构体,接下来可以接收零个到多个请求选项,修改请求报文的选项将被作用,最后返回构建好的请求报文 Example: ``` raw = poc.BuildRequest(poc.BasicRequest(), poc.https(true), poc.replaceHost("yaklang.com"), poc.replacePath("/docs/api/poc")) // 构建一个基础GET请求,修改其Host为yaklang.com,访问的URI路径为/docs/api/poc // raw = b"GET /docs/api/poc HTTP/1.1\r\nHost: www.yaklang.com\r\n\r\n" ```
func Do ¶
func Do(method string, urlStr string, opts ...PocConfig) (rspInst *lowhttp.LowhttpResponse, reqInst *http.Request, err error)
关于结构体中的可用字段和方法可以使用desc函数进行查看 Example: ``` poc.Do("GET","https://yaklang.com", poc.https(true)) // 向yaklang.com发送一个基于HTTPS协议的GET请求 desc(rsp) // 查看响应结构体中的可用字段 ```
func DoDELETE ¶
func DoDELETE(urlStr string, opts ...PocConfig) (rspInst *lowhttp.LowhttpResponse, reqInst *http.Request, err error)
Delete 向指定URL发送DELETE请求并且返回响应结构体,请求结构体以及错误,它的第一个参数是URL字符串,接下来可以接收零个到多个请求选项,用于对此次请求进行配置,例如对设置超时时间,或者修改请求报文等 关于结构体中的可用字段和方法可以使用desc函数进行查看 Example: ``` poc.Delete("https://yaklang.com", poc.https(true)) // 向yaklang.com发送一个基于HTTPS协议的DELETE请求 desc(rsp) // 查看响应结构体中的可用字段 ```
func DoGET ¶
func DoGET(urlStr string, opts ...PocConfig) (rspInst *lowhttp.LowhttpResponse, reqInst *http.Request, err error)
Get 向指定URL发送GET请求并且返回响应结构体,请求结构体以及错误,它的第一个参数是URL字符串,接下来可以接收零个到多个请求选项,用于对此次请求进行配置,例如对设置超时时间,或者修改请求报文等 关于结构体中的可用字段和方法可以使用desc函数进行查看 Example: ``` poc.Get("https://yaklang.com", poc.https(true)) // 向yaklang.com发送一个基于HTTPS协议的GET请求 desc(rsp) // 查看响应结构体中的可用字段 ```
func DoHEAD ¶
func DoHEAD(urlStr string, opts ...PocConfig) (rspInst *lowhttp.LowhttpResponse, reqInst *http.Request, err error)
Head 向指定URL发送HEAD请求并且返回响应结构体,请求结构体以及错误,它的第一个参数是URL字符串,接下来可以接收零个到多个请求选项,用于对此次请求进行配置,例如对设置超时时间,或者修改请求报文等 关于结构体中的可用字段和方法可以使用desc函数进行查看 Example: ``` poc.Head("https://yaklang.com", poc.https(true)) // 向yaklang.com发送一个基于HTTPS协议的HEAD请求 desc(rsp) // 查看响应结构体中的可用字段 ```
func DoOPTIONS ¶
func DoOPTIONS(urlStr string, opts ...PocConfig) (rspInst *lowhttp.LowhttpResponse, reqInst *http.Request, err error)
Options 向指定URL发送OPTIONS请求并且返回响应结构体,请求结构体以及错误,它的第一个参数是URL字符串,接下来可以接收零个到多个请求选项,用于对此次请求进行配置,例如对设置超时时间,或者修改请求报文等 关于结构体中的可用字段和方法可以使用desc函数进行查看 Example: ``` poc.Options("https://yaklang.com", poc.https(true)) // 向yaklang.com发送一个基于HTTPS协议的Options请求 desc(rsp) // 查看响应结构体中的可用字段 ```
func DoPOST ¶
func DoPOST(urlStr string, opts ...PocConfig) (rspInst *lowhttp.LowhttpResponse, reqInst *http.Request, err error)
Post 向指定URL发送POST请求并且返回响应结构体,请求结构体以及错误,它的第一个参数是URL字符串,接下来可以接收零个到多个请求选项,用于对此次请求进行配置,例如对设置超时时间,或者修改请求报文等 关于结构体中的可用字段和方法可以使用desc函数进行查看 Example: ``` poc.Post("https://yaklang.com", poc.https(true)) // 向yaklang.com发送一个基于HTTPS协议的POST请求 desc(rsp) // 查看响应结构体中的可用字段 ```
func DoWebSocket ¶
Websocket 实际上等价于`poc.HTTP(..., poc.websocket(true))`,用于快速发送请求并建立websocket连接并且返回原始响应报文,原始请求报文以及错误 Example: ``` rsp, req, err = poc.Websocket(`GET / HTTP/1.1 Connection: Upgrade Upgrade: websocket Sec-Websocket-Version: 13 Sec-Websocket-Extensions: permessage-deflate; client_max_window_bits Host: echo.websocket.events Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-US;q=0.7 Sec-Websocket-Key: L31R1As+71fwuXqhwhABuA==`,
poc.proxy("http://127.0.0.1:7890"), poc.websocketFromServer(func(rsp, cancel) { dump(rsp) }), poc.websocketOnClient(func(c) { c.WriteText("123") })
) time.Sleep(100) ```
func HTTP ¶
HTTP 发送请求并且返回原始响应报文,原始请求报文以及错误,它的第一个参数可以接收[]byte, string, http.Request结构体,接下来可以接收零个到多个请求选项,用于对此次请求进行配置,例如对设置超时时间,或者修改请求报文等 Example: ``` poc.HTTP("GET / HTTP/1.1\r\nHost: www.yaklang.com\r\n\r\n", poc.https(true), poc.replaceHeader("AAA", "BBB")) // yaklang.com发送一个基于HTTPS协议的GET请求,并且添加一个请求头AAA,它的值为BBB ```
func HTTPEx ¶
func HTTPEx(i interface{}, opts ...PocConfig) (rspInst *lowhttp.LowhttpResponse, reqInst *http.Request, err error)
HTTPEx 与HTTP类似,它发送请求并且返回响应结构体,请求结构体以及错误,它的第一个参数可以接收[]byte, string, http.Request结构体,接下来可以接收零个到多个请求选项,用于对此次请求进行配置,例如对设置超时时间,或者修改请求报文等 关于结构体中的可用字段和方法可以使用desc函数进行查看 Example: ``` rsp, req, err = poc.HTTPEx(`GET / HTTP/1.1\r\nHost: www.yaklang.com\r\n\r\n`, poc.https(true), poc.replaceHeader("AAA", "BBB")) // 向yaklang.com发送一个基于HTTPS协议的GET请求,并且添加一个请求头AAA,它的值为BBB desc(rsp) // 查看响应结构体中的可用字段 ```
func NewDefaultPoCConfig ¶
func NewDefaultPoCConfig() *_pocConfig
Types ¶
type PocConfig ¶
type PocConfig func(c *_pocConfig)
func WithAppendCookie ¶
appendCookie 是一个请求选项参数,用于改变请求报文,添加Cookie请求头中的值 Example: ``` poc.Get("https://pie.dev/get", poc.appendCookie("aaa", "bbb")) // 向 pie.dev 发起请求,添加cookie键值对aaa:bbb ```
func WithAppendHeader ¶
appendHeader 是一个请求选项参数,用于改变请求报文,添加请求头 Example: ``` poc.Post("https://pie.dev/post", poc.appendHeader("AAA", "BBB")) // 向 pie.dev 发起请求,添加AAA请求头的值为BBB ```
func WithAppendHeaders ¶
appendHeaders 是一个请求选项参数,用于改变请求报文,添加请求头 Example: ``` poc.Post("https://pie.dev/post", poc.appendHeaders({"AAA": "BBB","CCC": "DDD"})) // 向 pie.dev 发起请求,添加AAA请求头的值为BBB ```
func WithAppendHttpPacketFormEncoded ¶
appendFormEncoded 是一个请求选项参数,用于改变请求报文,添加请求体中的表单 Example: ``` poc.Post("https://pie.dev/post", poc.appendFormEncoded("aaa", "bbb")) // 向 pie.dev 发起请求,添加POST请求表单,其中aaa为键,bbb为值 ```
func WithAppendHttpPacketPath ¶
appendPath 是一个请求选项参数,用于改变请求报文,在现有请求路径后添加请求路径 Example: ``` poc.Get("https://yaklang.com/docs", poc.appendPath("/api/poc")) // 向 yaklang.com 发起请求,实际上请求路径为/docs/api/poc ```
func WithAppendHttpPacketUploadFile ¶
func WithAppendHttpPacketUploadFile(fieldName, fileName string, fileContent interface{}, contentType ...string) PocConfig
appendUploadFile 是一个请求选项参数,用于改变请求报文,添加请求体中的上传的文件,其中第一个参数为表单名,第二个参数为文件名,第三个参数为文件内容,第四个参数是可选参数,为文件类型(Content-Type) Example: ``` poc.Post("https://pie.dev/post", poc.appendUploadFile("file", "phpinfo.php", "<?php phpinfo(); ?>", "image/jpeg"))// 向 pie.dev 发起请求,添加POST请求表单,其文件名为phpinfo.php,内容为<?php phpinfo(); ?>,文件类型为image/jpeg ```
func WithAppendPostParam ¶
appendPostParam 是一个请求选项参数,用于改变请求报文,添加POST请求参数 Example: ``` poc.Post("https://pie.dev/post", poc.appendPostParam("a", "b")) // 向 pie.dev 发起请求,添加POST请求参数a,值为b ```
func WithAppendQueryParam ¶
appendQueryParam 是一个请求选项参数,用于改变请求报文,添加GET请求参数 Example: ``` poc.Get("https://pie.dev/get", poc.appendQueryParam("a", "b")) // 向 pie.dev 发起请求,添加GET请求参数a,值为b ```
func WithDeleteCookie ¶
deleteCookie 是一个请求选项参数,用于改变请求报文,删除Cookie中的值 Example: ``` poc.HTTP(`GET /get HTTP/1.1 Content-Type: application/json Cookie: aaa=bbb; ccc=ddd Host: pie.dev
`, poc.deleteCookie("aaa"))// 向 pie.dev 发起请求,删除Cookie中的aaa ```
func WithDeleteForm ¶
deleteForm 是一个请求选项参数,用于改变请求报文,删除POST请求表单 Example: ``` poc.HTTP(`POST /post HTTP/1.1 Host: pie.dev Content-Type: multipart/form-data; boundary=------------------------OFHnlKtUimimGcXvRSxgCZlIMAyDkuqsxeppbIFm Content-Length: 308
--------------------------OFHnlKtUimimGcXvRSxgCZlIMAyDkuqsxeppbIFm Content-Disposition: form-data; name="aaa"
bbb --------------------------OFHnlKtUimimGcXvRSxgCZlIMAyDkuqsxeppbIFm Content-Disposition: form-data; name="ccc"
ddd --------------------------OFHnlKtUimimGcXvRSxgCZlIMAyDkuqsxeppbIFm--`, poc.deleteForm("aaa")) // 向 pie.dev 发起请求,删除POST请求表单aaa ```
func WithDeleteHeader ¶
deleteHeader 是一个请求选项参数,用于改变请求报文,删除请求头 Example: ``` poc.HTTP(`GET /get HTTP/1.1 Content-Type: application/json AAA: BBB Host: pie.dev
`, poc.deleteHeader("AAA"))// 向 pie.dev 发起请求,删除AAA请求头 ```
func WithDeletePostParam ¶
deletePostParam 是一个请求选项参数,用于改变请求报文,删除POST请求参数 Example: ``` poc.HTTP(`POST /post HTTP/1.1 Content-Type: application/json Content-Length: 7 Host: pie.dev
a=b&c=d`, poc.deletePostParam("a")) // 向 pie.dev 发起请求,删除POST请求参数a ```
func WithDeleteQueryParam ¶
deleteQueryParam 是一个请求选项参数,用于改变请求报文,删除GET请求参数 Example: ``` poc.HTTP(`GET /get?a=b&c=d HTTP/1.1 Content-Type: application/json Host: pie.dev
`, poc.deleteQueryParam("a")) // 向 pie.dev 发起请求,删除GET请求参数a ```
func WithForceHTTP2 ¶
http2 是一个请求选项参数,用于指定是否使用http2协议,默认为false即使用http1协议 Example: ``` poc.Get("https://www.example.com", poc.http2(true), poc.https(true)) // 向 www.example.com 发起请求,使用 http2 协议 ```
func WithForceHTTPS ¶
https 是一个请求选项参数,用于指定是否使用https协议,默认为false即使用http协议 Example: ``` poc.HTTP(poc.BasicRequest(), poc.https(true)) // 向 example.com 发起请求,使用 https 协议 ```
func WithFromPlugin ¶
func WithHost ¶
host 是一个请求选项参数,用于指定实际请求的 host,如果没有设置该请求选项,则会依据原始请求报文中的Host字段来确定实际请求的host Example: ``` poc.HTTP(poc.BasicRequest(), poc.host("yaklang.com")) // 实际上请求 yaklang.com ```
func WithJSRedirect ¶
jsRedirect 是一个请求选项参数,用于指定是否跟踪JS重定向,默认为false即不会自动跟踪JS重定向 Example: ``` poc.HTTP(poc.BasicRequest(), poc.redirectTimes(5), poc.jsRedirect(true)) // 向 www.baidu.com 发起请求,如果响应重定向到其他链接也会自动跟踪JS重定向,最多进行5次重定向 ```
func WithNoFixContentLength ¶
noFixContentLength 是一个请求选项参数,用于指定是否修复响应报文中的Content-Length字段,默认为false即会自动修复Content-Length字段 Example: ``` poc.HTTP(poc.BasicRequest(), poc.noFixContentLength()) // 向 example.com 发起请求,如果响应报文中的Content-Length字段不正确或不存在 也不会自动修复 ```
func WithNoRedirect ¶
noRedirect 是一个请求选项参数,用于指定是否跟踪重定向,默认为false即会自动跟踪重定向 Example: ``` poc.HTTP(poc.BasicRequest(), poc.noRedirect()) // 向 example.com 发起请求,如果响应重定向到其他链接也不会自动跟踪重定向 ```
func WithParams ¶
func WithParams(i interface{}) PocConfig
params 是一个请求选项参数,用于在请求时使用传入的值,需要注意的是,它可以很方便地使用str.f()代替 Example: rsp, req, err = poc.HTTP(x`POST /post HTTP/1.1 Content-Type: application/json Host: pie.dev
{"key": "{{params(a)}}"}`, poc.params({"a":"bbb"})) // 实际上发送的POST参数为{"key": "bbb"}
func WithPort ¶
port 是一个请求选项参数,用于指定实际请求的 port,如果没有设置该请求选项,则会依据原始请求报文中的Host字段来确定实际请求的port Example: ``` poc.HTTP(poc.BasicRequest(), poc.host("yaklang.com"), poc.port(443), poc.https(true)) // 实际上请求 yaklang.com 的443端口 ```
func WithProxy ¶
proxy 是一个请求选项参数,用于指定请求使用的代理,可以指定多个代理,默认会使用系统代理 Example: ``` poc.HTTP(poc.BasicRequest(), poc.proxy("http://127.0.0.1:7890")) // 向 example.com 发起请求,使用 http://127.0.0.1:7890 代理 ```
func WithRedirectHandler ¶
redirectHandler 是一个请求选项参数,用于作为重定向处理函数,如果设置了该选项,则会在重定向时调用该函数,如果该函数返回true,则会继续重定向,否则不会重定向。其第一个参数为是否使用https协议,第二个参数为原始请求报文,第三个参数为原始响应报文 Example: ``` count = 3 poc.Get("https://pie.dev/redirect/5", poc.redirectHandler(func(https, req, rsp) { count-- return count >= 0 })) // 向 pie.edv 发起请求,使用自定义 redirectHandler 函数,使用count控制,进行最多3次重定向 ```
func WithRedirectTimes ¶
redirectTimes 是一个请求选项参数,用于指定最大重定向次数,默认为5次 Example: ``` poc.HTTP(poc.BasicRequest(), poc.redirectTimes(5)) // 向 example.com 发起请求,如果响应重定向到其他链接,则会自动跟踪重定向最多5次 ```
func WithReplaceAllHttpPacketPostParams ¶
replaceAllPostParams 是一个请求选项参数,用于改变请求报文,修改所有POST请求参数,如果不存在则会增加,其接收一个map[string]string类型的参数,其中key为POST请求参数名,value为POST请求参数值 Example: ``` poc.Post("https://pie.dev/post", poc.replaceAllPostParams({"a":"b", "c":"d"})) // 向 pie.dev 发起请求,添加POST请求参数a,值为b,POST请求参数c,值为d ```
func WithReplaceAllHttpPacketQueryParams ¶
replaceAllQueryParams 是一个请求选项参数,用于改变请求报文,修改所有GET请求参数,如果不存在则会增加,其接收一个map[string]string类型的参数,其中key为请求参数名,value为请求参数值 Example: ``` poc.Get("https://pie.dev/get", poc.replaceAllQueryParams({"a":"b", "c":"d"})) // 向 pie.dev 发起请求,添加GET请求参数a,值为b,添加GET请求参数c,值为d ```
func WithReplaceHttpPacketBasicAuth ¶
replaceBasicAuth 是一个请求选项参数,用于改变请求报文,修改Authorization请求头为基础认证的密文,如果不存在则会增加,实际上是replaceHeader("Authorization", codec.EncodeBase64(username + ":" + password))的简写 Example: ``` poc.Get("https://pie.dev/basic-auth/admin/password", poc.replaceBasicAuth("admin", "password")) // 向 pie.dev 发起请求进行基础认证,会得到200响应状态码 ```
func WithReplaceHttpPacketBody ¶
replaceBody 是一个请求选项参数,用于改变请求报文,修改请求体内容,第一个参数为修改后的请求体内容,第二个参数为是否分块传输 Example: ``` poc.Post("https://pie.dev/post", poc.replaceBody("a=b", false)) // 向 pie.dev 发起请求,修改请求体内容为a=b ```
func WithReplaceHttpPacketCookie ¶
replaceCookie 是一个请求选项参数,用于改变请求报文,修改Cookie请求头中的值,如果不存在则会增加 Example: ``` poc.Get("https://pie.dev/get", poc.replaceCookie("aaa", "bbb")) // 向 pie.dev 发起请求,这里没有aaa的cookie值,所以会增加 ```
func WithReplaceHttpPacketFirstLine ¶
replaceFirstLine 是一个请求选项参数,用于改变请求报文,修改第一行(即请求方法,请求路径,协议版本) Example: ``` poc.Get("https://exmaple.com", poc.replaceFirstLine("GET /test HTTP/1.1")) // 向 example.com 发起请求,修改请求报文的第一行,请求/test路径 ```
func WithReplaceHttpPacketHeader ¶
replaceHeader 是一个请求选项参数,用于改变请求报文,修改修改请求头,如果不存在则会增加 Example: ``` poc.Get("https://pie.dev/get", poc.replaceHeader("AAA", "BBB")) // 向 pie.dev 发起请求,修改AAA请求头的值为BBB,这里没有AAA请求头,所以会增加该请求头 ```
func WithReplaceHttpPacketHost ¶
replaceHost 是一个请求选项参数,用于改变请求报文,修改Host请求头,如果不存在则会增加,实际上是replaceHeader("Host", host)的简写 Example: ``` poc.Get("https://yaklang.com/", poc.replaceHost("www.yaklang.com")) // 向 yaklang.com 发起请求,修改Host请求头的值为 www.yaklang.com ```
func WithReplaceHttpPacketMethod ¶
replaceMethod 是一个请求选项参数,用于改变请求报文,修改请求方法 Example: ``` poc.Options("https://exmaple.com", poc.replaceMethod("GET")) // 向 example.com 发起请求,修改请求方法为GET ```
func WithReplaceHttpPacketPath ¶
replacePath 是一个请求选项参数,用于改变请求报文,修改请求路径 Example: ``` poc.Get("https://pie.dev/post", poc.replacePath("/get")) // 向 pie.dev 发起请求,实际上请求路径为/get ```
func WithReplaceHttpPacketPostParam ¶
replacePostParam 是一个请求选项参数,用于改变请求报文,修改POST请求参数,如果不存在则会增加 Example: ``` poc.Post("https://pie.dev/post", poc.replacePostParam("a", "b")) // 向 pie.dev 发起请求,添加POST请求参数a,值为b ```
func WithReplaceHttpPacketQueryParam ¶
replaceQueryParam 是一个请求选项参数,用于改变请求报文,修改GET请求参数,如果不存在则会增加 Example: ``` poc.Get("https://pie.dev/get", poc.replaceQueryParam("a", "b")) // 向 pie.dev 发起请求,添加GET请求参数a,值为b ```
func WithRetryInStatusCode ¶
retryInStatusCode 是一个请求选项参数,用于指定在某些响应状态码的情况下重试,需要搭配retryTimes使用 Example: ``` poc.HTTP(poc.BasicRequest(), poc.retryTimes(5), poc.retryInStatusCode(500, 502)) // 向 example.com 发起请求,如果响应状态码500或502则进行重试,最多进行5次重试 ```
func WithRetryMaxWaitTime ¶
retryMaxWaitTime 是一个请求选项参数,用于指定重试时最大等待时间,需要搭配retryTimes使用,默认为2秒 Example: ``` poc.HTTP(poc.BasicRequest(), poc.retryTimes(5), poc.retryNotInStatusCode(200), poc.retryWaitTime(2)) // 向 example.com 发起请求,如果响应状态码不等于200则进行重试,最多进行5次重试,重试时最多等待2秒 ```
func WithRetryNotInStausCode ¶
retryNotInStatusCode 是一个请求选项参数,用于指定非某些响应状态码的情况下重试,需要搭配retryTimes使用 Example: ``` poc.HTTP(poc.BasicRequest(), poc.retryTimes(5), poc.retryNotInStatusCode(200)) // 向 example.com 发起请求,如果响应状态码不等于200则进行重试,最多进行5次重试 ```
func WithRetryTimes ¶
retryTimes 是一个请求选项参数,用于指定请求失败时的重试次数,需要搭配retryInStatusCode或retryNotInStatusCode使用,来设置在什么响应码的情况下重试 Example: ``` poc.HTTP(poc.BasicRequest(), poc.retryTimes(5), poc.retryInStatusCode(500, 502)) // 向 example.com 发起请求,如果响应状态码500或502则进行重试,最多进行5次重试 ```
func WithRetryWaitTime ¶
retryWaitTime 是一个请求选项参数,用于指定重试时最小等待时间,需要搭配retryTimes使用,默认为0.1秒 Example: ``` poc.HTTP(poc.BasicRequest(), poc.retryTimes(5), poc.retryNotInStatusCode(200), poc.retryWaitTime(0.1)) // 向 example.com 发起请求,如果响应状态码不等于200则进行重试,最多进行5次重试,重试时最小等待0.1秒 ```
func WithRuntimeId ¶
func WithSave ¶
save 是一个请求选项参数,用于指定是否将此次请求的记录保存在数据库中,默认为true即会保存到数据库 Example: ``` poc.Get("https://exmaple.com", poc.save(true)) // 向 example.com 发起请求,会将此次请求保存到数据库中 ```
func WithSession ¶
func WithSession(i interface{}) PocConfig
session 是一个请求选项参数,用于指定请求的session,参数可以是任意类型的值,用此值做标识符从而找到唯一的session。使用session进行请求时会自动管理cookie,这在登录后操作的场景非常有用 Example: ``` poc.Get("https://pie.dev/cookies/set/AAA/BBB", poc.session("test")) // 向 pie.dev 发起第一次请求,这会设置一个名为AAA,值为BBB的cookie rsp, req, err = poc.Get("https://pie.dev/cookies", poc.session("test")) // 向 pie.dev 发起第二次请求,这个请求会输出所有的cookies,可以看到第一次请求设置的cookie已经存在了 ```
func WithSource ¶
source 是一个请求选项参数,用于在请求记录保存到数据库时标识此次请求的来源 Example: ``` poc.Get("https://exmaple.com", poc.save(true), poc.source("test")) // 向 example.com 发起请求,会将此次请求保存到数据库中,指示此次请求的来源为test ```
func WithTimeout ¶
timeout 是一个请求选项参数,用于指定读取超时时间,默认为15秒 Example: ``` poc.Get("https://www.example.com", poc.timeout(15)) // 向 www.baidu.com 发起请求,读取超时时间为15秒 ```
func WithWebsocket ¶
websocket 是一个请求选项参数,用于允许将链接升级为websocket,此时发送的请求应该为websocket握手请求 Example: ``` rsp, req, err = poc.HTTP(`GET / HTTP/1.1 Connection: Upgrade Upgrade: websocket Sec-Websocket-Version: 13 Sec-Websocket-Extensions: permessage-deflate; client_max_window_bits Host: echo.websocket.events Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-US;q=0.7 Sec-Websocket-Key: L31R1As+71fwuXqhwhABuA==`,
poc.proxy("http://127.0.0.1:7890"), poc.websocketFromServer(func(rsp, cancel) { dump(rsp) }), poc.websocketOnClient(func(c) { c.WriteText("123") }), poc.websocket(true),
) time.Sleep(100) ```
func WithWebsocketClientHandler ¶
func WithWebsocketClientHandler(w func(c *lowhttp.WebsocketClient)) PocConfig
websocketOnClient 是一个请求选项参数,它接收一个回调函数,这个函数有一个参数,是WebsocketClient结构体,通过该结构体可以向服务端发送数据 Example: ``` rsp, req, err = poc.HTTP(`GET / HTTP/1.1 Connection: Upgrade Upgrade: websocket Sec-Websocket-Version: 13 Sec-Websocket-Extensions: permessage-deflate; client_max_window_bits Host: echo.websocket.events Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-US;q=0.7 Sec-Websocket-Key: L31R1As+71fwuXqhwhABuA==`,
poc.proxy("http://127.0.0.1:7890"), poc.websocketFromServer(func(rsp, cancel) { dump(rsp) }), poc.websocketOnClient(func(c) { c.WriteText("123") }), poc.websocket(true),
) time.Sleep(100) ```
func WithWebsocketHandler ¶
websocketFromServer 是一个请求选项参数,它接收一个回调函数,这个函数有两个参数,其中第一个参数为服务端发送的数据,第二个参数为取消函数,调用将会强制断开 websocket Example: ``` rsp, req, err = poc.HTTP(`GET / HTTP/1.1 Connection: Upgrade Upgrade: websocket Sec-Websocket-Version: 13 Sec-Websocket-Extensions: permessage-deflate; client_max_window_bits Host: echo.websocket.events Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-US;q=0.7 Sec-Websocket-Key: L31R1As+71fwuXqhwhABuA==`,
poc.proxy("http://127.0.0.1:7890"), poc.websocketFromServer(func(rsp, cancel) { dump(rsp) }), poc.websocketOnClient(func(c) { c.WriteText("123") }), poc.websocket(true),
) time.Sleep(100) ```