poc

package
v1.2.9-sp7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 29, 2023 License: AGPL-3.0 Imports: 15 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	PoCOptWithSource       = WithSource
	PoCOptWithRuntimeId    = WithRuntimeId
	PoCOptWithFromPlugin   = WithFromPlugin
	PoCOptWithSaveHTTPFlow = WithSave
	PoCOptWithProxy        = WithProxy
)

for export

View Source
var PoCExports = map[string]interface{}{}/* 116 elements not displayed */

Functions

func BuildRequest

func BuildRequest(i interface{}, opts ...PocConfig) []byte

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

func DoWebSocket(raw interface{}, opts ...PocConfig) (rsp []byte, req []byte, err error)

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

func HTTP(i interface{}, opts ...PocConfig) (rsp []byte, req []byte, err error)

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

func WithAppendCookie(key, value string) PocConfig

appendCookie 是一个请求选项参数,用于改变请求报文,添加Cookie请求头中的值 Example: ``` poc.Get("https://pie.dev/get", poc.appendCookie("aaa", "bbb")) // 向 pie.dev 发起请求,添加cookie键值对aaa:bbb ```

func WithAppendHeader

func WithAppendHeader(key, value string) PocConfig

appendHeader 是一个请求选项参数,用于改变请求报文,添加请求头 Example: ``` poc.Post("https://pie.dev/post", poc.appendHeader("AAA", "BBB")) // 向 pie.dev 发起请求,添加AAA请求头的值为BBB ```

func WithAppendHeaderIfNotExist

func WithAppendHeaderIfNotExist(key, value string) PocConfig

func WithAppendHeaders

func WithAppendHeaders(headers map[string]string) PocConfig

appendHeaders 是一个请求选项参数,用于改变请求报文,添加请求头 Example: ``` poc.Post("https://pie.dev/post", poc.appendHeaders({"AAA": "BBB","CCC": "DDD"})) // 向 pie.dev 发起请求,添加AAA请求头的值为BBB ```

func WithAppendHttpPacketFormEncoded

func WithAppendHttpPacketFormEncoded(key, value string) PocConfig

appendFormEncoded 是一个请求选项参数,用于改变请求报文,添加请求体中的表单 Example: ``` poc.Post("https://pie.dev/post", poc.appendFormEncoded("aaa", "bbb")) // 向 pie.dev 发起请求,添加POST请求表单,其中aaa为键,bbb为值 ```

func WithAppendHttpPacketPath

func WithAppendHttpPacketPath(path string) PocConfig

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

func WithAppendPostParam(key, value string) PocConfig

appendPostParam 是一个请求选项参数,用于改变请求报文,添加POST请求参数 Example: ``` poc.Post("https://pie.dev/post", poc.appendPostParam("a", "b")) // 向 pie.dev 发起请求,添加POST请求参数a,值为b ```

func WithAppendQueryParam

func WithAppendQueryParam(key, value string) PocConfig

appendQueryParam 是一个请求选项参数,用于改变请求报文,添加GET请求参数 Example: ``` poc.Get("https://pie.dev/get", poc.appendQueryParam("a", "b")) // 向 pie.dev 发起请求,添加GET请求参数a,值为b ```

func WithDeleteCookie

func WithDeleteCookie(key string) PocConfig

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

func WithDeleteForm(key string) PocConfig

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

func WithDeleteHeader(key string) PocConfig

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

func WithDeletePostParam(key string) PocConfig

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

func WithDeleteQueryParam(key string) PocConfig

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

func WithForceHTTP2(isHttp2 bool) PocConfig

http2 是一个请求选项参数,用于指定是否使用http2协议,默认为false即使用http1协议 Example: ``` poc.Get("https://www.example.com", poc.http2(true), poc.https(true)) // 向 www.example.com 发起请求,使用 http2 协议 ```

func WithForceHTTPS

func WithForceHTTPS(isHttps bool) PocConfig

https 是一个请求选项参数,用于指定是否使用https协议,默认为false即使用http协议 Example: ``` poc.HTTP(poc.BasicRequest(), poc.https(true)) // 向 example.com 发起请求,使用 https 协议 ```

func WithFromPlugin

func WithFromPlugin(b string) PocConfig

func WithHost

func WithHost(h string) PocConfig

host 是一个请求选项参数,用于指定实际请求的 host,如果没有设置该请求选项,则会依据原始请求报文中的Host字段来确定实际请求的host Example: ``` poc.HTTP(poc.BasicRequest(), poc.host("yaklang.com")) // 实际上请求 yaklang.com ```

func WithJSRedirect

func WithJSRedirect(b bool) PocConfig

jsRedirect 是一个请求选项参数,用于指定是否跟踪JS重定向,默认为false即不会自动跟踪JS重定向 Example: ``` poc.HTTP(poc.BasicRequest(), poc.redirectTimes(5), poc.jsRedirect(true)) // 向 www.baidu.com 发起请求,如果响应重定向到其他链接也会自动跟踪JS重定向,最多进行5次重定向 ```

func WithNoFixContentLength

func WithNoFixContentLength(b bool) PocConfig

noFixContentLength 是一个请求选项参数,用于指定是否修复响应报文中的Content-Length字段,默认为false即会自动修复Content-Length字段 Example: ``` poc.HTTP(poc.BasicRequest(), poc.noFixContentLength()) // 向 example.com 发起请求,如果响应报文中的Content-Length字段不正确或不存在 也不会自动修复 ```

func WithNoRedirect

func WithNoRedirect(b bool) PocConfig

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

func WithPort(port int) PocConfig

port 是一个请求选项参数,用于指定实际请求的 port,如果没有设置该请求选项,则会依据原始请求报文中的Host字段来确定实际请求的port Example: ``` poc.HTTP(poc.BasicRequest(), poc.host("yaklang.com"), poc.port(443), poc.https(true)) // 实际上请求 yaklang.com 的443端口 ```

func WithProxy

func WithProxy(proxies ...string) PocConfig

proxy 是一个请求选项参数,用于指定请求使用的代理,可以指定多个代理,默认会使用系统代理 Example: ``` poc.HTTP(poc.BasicRequest(), poc.proxy("http://127.0.0.1:7890")) // 向 example.com 发起请求,使用 http://127.0.0.1:7890 代理 ```

func WithRedirectHandler

func WithRedirectHandler(i func(isHttps bool, req, rsp []byte) bool) PocConfig

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

func WithRedirectTimes(t int) PocConfig

redirectTimes 是一个请求选项参数,用于指定最大重定向次数,默认为5次 Example: ``` poc.HTTP(poc.BasicRequest(), poc.redirectTimes(5)) // 向 example.com 发起请求,如果响应重定向到其他链接,则会自动跟踪重定向最多5次 ```

func WithReplaceAllHttpPacketPostParams

func WithReplaceAllHttpPacketPostParams(values map[string]string) PocConfig

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

func WithReplaceAllHttpPacketQueryParams(values map[string]string) PocConfig

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

func WithReplaceHttpPacketBasicAuth(username, password string) PocConfig

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

func WithReplaceHttpPacketBody(body []byte, chunk bool) PocConfig

replaceBody 是一个请求选项参数,用于改变请求报文,修改请求体内容,第一个参数为修改后的请求体内容,第二个参数为是否分块传输 Example: ``` poc.Post("https://pie.dev/post", poc.replaceBody("a=b", false)) // 向 pie.dev 发起请求,修改请求体内容为a=b ```

func WithReplaceHttpPacketCookie

func WithReplaceHttpPacketCookie(key, value string) PocConfig

replaceCookie 是一个请求选项参数,用于改变请求报文,修改Cookie请求头中的值,如果不存在则会增加 Example: ``` poc.Get("https://pie.dev/get", poc.replaceCookie("aaa", "bbb")) // 向 pie.dev 发起请求,这里没有aaa的cookie值,所以会增加 ```

func WithReplaceHttpPacketFirstLine

func WithReplaceHttpPacketFirstLine(firstLine string) PocConfig

replaceFirstLine 是一个请求选项参数,用于改变请求报文,修改第一行(即请求方法,请求路径,协议版本) Example: ``` poc.Get("https://exmaple.com", poc.replaceFirstLine("GET /test HTTP/1.1")) // 向 example.com 发起请求,修改请求报文的第一行,请求/test路径 ```

func WithReplaceHttpPacketHeader

func WithReplaceHttpPacketHeader(key, value string) PocConfig

replaceHeader 是一个请求选项参数,用于改变请求报文,修改修改请求头,如果不存在则会增加 Example: ``` poc.Get("https://pie.dev/get", poc.replaceHeader("AAA", "BBB")) // 向 pie.dev 发起请求,修改AAA请求头的值为BBB,这里没有AAA请求头,所以会增加该请求头 ```

func WithReplaceHttpPacketHost

func WithReplaceHttpPacketHost(host string) PocConfig

replaceHost 是一个请求选项参数,用于改变请求报文,修改Host请求头,如果不存在则会增加,实际上是replaceHeader("Host", host)的简写 Example: ``` poc.Get("https://yaklang.com/", poc.replaceHost("www.yaklang.com")) // 向 yaklang.com 发起请求,修改Host请求头的值为 www.yaklang.com ```

func WithReplaceHttpPacketMethod

func WithReplaceHttpPacketMethod(method string) PocConfig

replaceMethod 是一个请求选项参数,用于改变请求报文,修改请求方法 Example: ``` poc.Options("https://exmaple.com", poc.replaceMethod("GET")) // 向 example.com 发起请求,修改请求方法为GET ```

func WithReplaceHttpPacketPath

func WithReplaceHttpPacketPath(path string) PocConfig

replacePath 是一个请求选项参数,用于改变请求报文,修改请求路径 Example: ``` poc.Get("https://pie.dev/post", poc.replacePath("/get")) // 向 pie.dev 发起请求,实际上请求路径为/get ```

func WithReplaceHttpPacketPostParam

func WithReplaceHttpPacketPostParam(key, value string) PocConfig

replacePostParam 是一个请求选项参数,用于改变请求报文,修改POST请求参数,如果不存在则会增加 Example: ``` poc.Post("https://pie.dev/post", poc.replacePostParam("a", "b")) // 向 pie.dev 发起请求,添加POST请求参数a,值为b ```

func WithReplaceHttpPacketQueryParam

func WithReplaceHttpPacketQueryParam(key, value string) PocConfig

replaceQueryParam 是一个请求选项参数,用于改变请求报文,修改GET请求参数,如果不存在则会增加 Example: ``` poc.Get("https://pie.dev/get", poc.replaceQueryParam("a", "b")) // 向 pie.dev 发起请求,添加GET请求参数a,值为b ```

func WithReplaceHttpPacketQueryParamRaw

func WithReplaceHttpPacketQueryParamRaw(rawQuery string) PocConfig

func WithRetryInStatusCode

func WithRetryInStatusCode(codes ...int) PocConfig

retryInStatusCode 是一个请求选项参数,用于指定在某些响应状态码的情况下重试,需要搭配retryTimes使用 Example: ``` poc.HTTP(poc.BasicRequest(), poc.retryTimes(5), poc.retryInStatusCode(500, 502)) // 向 example.com 发起请求,如果响应状态码500或502则进行重试,最多进行5次重试 ```

func WithRetryMaxWaitTime

func WithRetryMaxWaitTime(f float64) PocConfig

retryMaxWaitTime 是一个请求选项参数,用于指定重试时最大等待时间,需要搭配retryTimes使用,默认为2秒 Example: ``` poc.HTTP(poc.BasicRequest(), poc.retryTimes(5), poc.retryNotInStatusCode(200), poc.retryWaitTime(2)) // 向 example.com 发起请求,如果响应状态码不等于200则进行重试,最多进行5次重试,重试时最多等待2秒 ```

func WithRetryNotInStausCode

func WithRetryNotInStausCode(codes ...int) PocConfig

retryNotInStatusCode 是一个请求选项参数,用于指定非某些响应状态码的情况下重试,需要搭配retryTimes使用 Example: ``` poc.HTTP(poc.BasicRequest(), poc.retryTimes(5), poc.retryNotInStatusCode(200)) // 向 example.com 发起请求,如果响应状态码不等于200则进行重试,最多进行5次重试 ```

func WithRetryTimes

func WithRetryTimes(t int) PocConfig

retryTimes 是一个请求选项参数,用于指定请求失败时的重试次数,需要搭配retryInStatusCode或retryNotInStatusCode使用,来设置在什么响应码的情况下重试 Example: ``` poc.HTTP(poc.BasicRequest(), poc.retryTimes(5), poc.retryInStatusCode(500, 502)) // 向 example.com 发起请求,如果响应状态码500或502则进行重试,最多进行5次重试 ```

func WithRetryWaitTime

func WithRetryWaitTime(f float64) PocConfig

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 WithRuntimeId(r string) PocConfig

func WithSave

func WithSave(i bool) PocConfig

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

func WithSource(i string) PocConfig

source 是一个请求选项参数,用于在请求记录保存到数据库时标识此次请求的来源 Example: ``` poc.Get("https://exmaple.com", poc.save(true), poc.source("test")) // 向 example.com 发起请求,会将此次请求保存到数据库中,指示此次请求的来源为test ```

func WithTimeout

func WithTimeout(f float64) PocConfig

timeout 是一个请求选项参数,用于指定读取超时时间,默认为15秒 Example: ``` poc.Get("https://www.example.com", poc.timeout(15)) // 向 www.baidu.com 发起请求,读取超时时间为15秒 ```

func WithWebsocket

func WithWebsocket(w bool) PocConfig

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

func WithWebsocketHandler(w func(i []byte, cancel func())) PocConfig

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) ```

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL