zdpgo_requests

package module
v0.5.1 Latest Latest
Warning

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

Go to latest
Published: Jun 20, 2022 License: MIT Imports: 20 Imported by: 2

README

zdpgo_requests

Golang中用于发送HTTP请求的库

版本历史

  • v0.1.0 2022/04/09 新增GET和POST请求
  • v0.1.1 2022/04/11 POST的map默认当表单数据
  • v0.1.2 2022/04/11 添加忽略URL解析错误的请求方法
  • v0.1.3 2022/04/12 支持POST纯文本数据
  • v0.1.4 2022/04/12 代码重构
  • v0.1.5 2022/04/13 支持任意类型HTTP请求
  • v0.1.6 2022/04/13 支持设置代理
  • v0.1.7 2022/04/13 支持发送JSON数据
  • v0.1.8 2022/04/16 解决部分URL无法正常请求的BUG
  • v0.1.9 2022/04/18 BUG修复:header请求头重复
  • v0.2.0 2022/04/18 新增:获取请求和响应详情
  • v0.2.1 2022/04/20 新增:获取响应状态码
  • v0.2.2 2022/04/20 新增:下载文件
  • v0.2.3 2022/04/21 新增:文件上传
  • v0.2.4 2022/04/22 新增:支持上传FS文件系统文件
  • v0.2.5 2022/04/28 新增:检查重定向和请求消耗时间
  • v0.2.6 2022/05/06 新增:根据字节数组上传文件
  • v0.2.7 2022/05/08 新增:根据超时时间发送POST请求并携带JSON数据
  • v0.2.8 2022/05/09 BUG修复:修复POST超时单位不为秒的BUG
  • v0.2.9 2022/05/17 升级:日志组件升级
  • v0.3.1 2022/05/17 新增:忽略HTTPS证书校验
  • v0.3.2 2022/05/17 升级:升级random组件
  • v0.3.3 2022/05/18 优化:整体架构优化
  • v0.3.4 2022/05/18 新增:初始化数据的方法
  • v0.3.5 2022/05/19 BUG修复:修复UserAgent不正确
  • v0.3.6 2022/05/19 优化:整体架构优化
  • v0.3.7 2022/05/20 新增:设置请求超时时间
  • v0.3.8 2022/05/25 新增:根据字节数组上传文件
  • v0.3.9 2022/05/26 优化:优化字节数组上传方法
  • v0.4.0 2022/05/27 新增:任意方法的JSON请求
  • v0.4.1 2022/05/27 优化:精简代码
  • v0.4.2 2022/05/28 新增:任意方法的Text请求
  • v0.4.3 2022/06/01 新增:Response不为nil的方法
  • v0.4.4 2022/06/06 新增:POST提交ECC加密数据
  • v0.4.5 2022/06/11 新增:POST提交ECC加密文本数据
  • v0.4.6 2022/06/11 新增:POST提交AES加密数据
  • v0.4.7 2022/06/20 升级:日志组件升级

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	CAgents = []string{
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0",
		"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36",
		"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36",
		"Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0",
		"Mozilla/5.0 (X11; Linux x86_64; rv:100.0) Gecko/20100101 Firefox/100.0",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36",
		"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Safari/605.1.15",
		"Mozilla/5.0 (X11; Linux x86_64; rv:101.0) Gecko/20100101 Firefox/101.0",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36",
		"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15",
		"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36",
		"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:100.0) Gecko/20100101 Firefox/100.0",
		"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36",
		"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:100.0) Gecko/20100101 Firefox/100.0",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36",
		"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.62 Safari/537.36",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.47",
		"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36",
		"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:101.0) Gecko/20100101 Firefox/101.0",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.33",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36",
		"Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0",
		"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.3 Safari/605.1.15",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.115 Safari/537.36",
		"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36",
		"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36",
		"Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0",
		"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36 OPR/86.0.4363.59",
		"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0",
		"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.1 Safari/605.1.15",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36 Edg/101.0.1210.39",
		"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.39",
		"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36",
		"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36 OPR/85.0.4341.71",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.143 YaBrowser/22.5.0.1814 Yowser/2.5 Safari/537.36",
		"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36 OPR/86.0.4363.70",
		"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36",
		"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36 OPR/86.0.4363.64",
		"Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36",
		"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
		"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.41 Safari/537.36",
		"Mozilla/5.0 (X11; Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0",
		"Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0",
		"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Safari/605.1.15",
		"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15",
		"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.41 Safari/537.36",
		"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36",
		"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36",
		"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0",
	}
)

Functions

This section is empty.

Types

type BasicAuth added in v0.4.1

type BasicAuth struct {
	Username string `json:"username"`
	Password string `json:"password"`
}

BaseAuth 基础权限校验类型

type Config added in v0.2.5

type Config struct {
	Timeout                int       `json:"timeout" yaml:"timeout"`               // 请求超时时间(秒)
	ContentType            string    `yaml:"content_type" json:"content_type"`     // 内容类型,默认"application/json"
	UserAgent              string    `yaml:"user_agent" json:"user_agent"`         // 用户代理,默认"ZDP-Go-Requests"
	Author                 string    `yaml:"author" json:"author"`                 // 作者,自定义请求头
	TmpDir                 string    `yaml:"tmp_dir" json:"tmp_dir"`               // 文件上传临时目录
	IsCheckHttps           bool      `json:"is_check_https" yaml:"is_check_https"` // 是否检查HTTPS
	IsCheckRedirect        bool      `yaml:"is_check_redirect" json:"is_check_redirect"`
	TargetUrl              string    `yaml:"target_url" json:"target_url"` // 目标地址
	IsRecordRequestDetail  bool      `yaml:"is_record_request_detail" json:"is_record_request_detail"`
	IsRecordResponseDetail bool      `yaml:"is_record_response_detail" json:"is_record_response_detail"`
	IsKeepSession          bool      `yaml:"is_keep_session" json:"is_keep_session"`
	IsRandomUserAgent      bool      `yaml:"is_random_user_agent" json:"is_random_user_agent"` // 随机的用户代理
	ProxyUrl               string    `yaml:"is_json" json:"is_json"`
	Ecc                    EccConfig `yaml:"ecc" json:"ecc"`
}

type EccConfig added in v0.4.4

type EccConfig struct {
	PrivateKey []byte `yaml:"private_key" json:"private_key"`
	PublicKey  []byte `yaml:"public_key" json:"publicKey"`
}

type Files added in v0.2.5

type Files map[string]string // 文件列表:name ,filename

type Form added in v0.3.5

type Form map[string]string // POST提交的数据

type FormFileBytes added in v0.3.8

type FormFileBytes struct {
	FormName     string `json:"form_name"`     // 表单名称
	FileName     string `json:"file_name"`     // 文件名称
	ContentBytes []byte `json:"content_bytes"` // 文件内容
}

FormFileBytes 字节类型的表单文件

type Header map[string]string // 请求头类型

type JsonMap added in v0.3.6

type JsonMap map[string]interface{} // 提交JSON格式的数据

type JsonString added in v0.2.5

type JsonString string // 提交JSON格式的字符串

type Param added in v0.3.5

type Param map[string]string // Query查询参数类型

type Request added in v0.2.5

type Request struct {
	Method    string                 `json:"method"`
	Url       string                 `json:"url"`
	Header    map[string]string      `json:"header"`
	Body      *bytes.Buffer          `json:"body"` // 参考UploadByBytes的实现
	Query     map[string]string      `json:"query"`
	IsJson    bool                   `json:"is_json"`
	Json      map[string]interface{} `json:"json"`
	JsonText  string                 `json:"json_text"`
	IsForm    bool                   `json:"is_form"`
	Form      map[string]string      `json:"form"`
	FormText  string                 `json:"form_text"`
	IsText    bool                   `json:"is_text"`
	Text      string                 `json:"text"`
	BasicAuth BasicAuth              `json:"basic_auth"`
}

Request 请求对象

type Requests

type Requests struct {
	ClientPort int                      // 源端口
	Config     *Config                  // 配置对象
	Log        *zdpgo_log.Log           // 日志对象
	File       *zdpgo_file.File         // 文件对象
	Json       *zdpgo_json.Json         // json处理对象
	Random     *zdpgo_random.Random     // 随机数据生成
	Password   *zdpgo_password.Password // 加密对象
}

func New

func New(log *zdpgo_log.Log) *Requests

func NewWithConfig added in v0.2.9

func NewWithConfig(config *Config, log *zdpgo_log.Log) *Requests

NewWithConfig 通过配置创建Requests请求对象

func (*Requests) Any added in v0.3.3

func (r *Requests) Any(method, targetUrl string, args ...interface{}) (*Response, error)

Any 任意方法的请求

func (*Requests) AnyCompareStatusCode added in v0.4.7

func (r *Requests) AnyCompareStatusCode(method, target1Url, target2Url string, args ...interface{}) (*Response, error)

AnyCompareStatusCode 任意方法发送请求,会发送两次请求,比较前后的状态码

func (*Requests) Delete added in v0.1.5

func (r *Requests) Delete(targetUrl string, args ...interface{}) (*Response, error)

Delete 发送DELETE请求

func (*Requests) Get

func (r *Requests) Get(targetUrl string, args ...interface{}) (*Response, error)

Get 发送GET请求

func (*Requests) GetHttpClient added in v0.2.9

func (r *Requests) GetHttpClient() *http.Client

GetHttpClient 获取HTTP请求的客户端

func (*Requests) GetHttpPort added in v0.3.8

func (r *Requests) GetHttpPort() int

GetHttpPort 获取系统中可用的端口号

func (*Requests) GetHttpRequest added in v0.2.9

func (r *Requests) GetHttpRequest(request Request) *http.Request

func (*Requests) GetText added in v0.4.7

func (r *Requests) GetText(data string) Text

func (*Requests) Patch added in v0.1.5

func (r *Requests) Patch(targetUrl string, args ...interface{}) (*Response, error)

Patch 发送PATCH请求

func (*Requests) Post

func (r *Requests) Post(targetUrl string, args ...interface{}) (*Response, error)

Post 发送POST请求

func (*Requests) PostAes added in v0.4.6

func (r *Requests) PostAes(targetUrl, jsonStr string) (*Response, error)

func (*Requests) PostEcc added in v0.4.4

func (r *Requests) PostEcc(targetUrl, jsonStr string) (*Response, error)

PostEcc 发送POST请求的ECC加密数据 @param targetUrl 目标地址 @param jsonStr JSON格式的字符串

func (*Requests) PostEccText added in v0.4.5

func (r *Requests) PostEccText(targetUrl, data string) (*Response, error)

PostEccText POST提交ECC加密的纯文本

func (*Requests) Put added in v0.1.5

func (r *Requests) Put(targetUrl string, args ...interface{}) (*Response, error)

Put 发送PUT请求

func (*Requests) RemoveProxy added in v0.3.5

func (r *Requests) RemoveProxy(client *http.Client)

RemoveProxy 移除代理

func (*Requests) SetProxy added in v0.1.6

func (r *Requests) SetProxy(client *http.Client, proxyUrl string) error

SetProxy 设置代理

func (*Requests) SetResponse added in v0.3.8

func (r *Requests) SetResponse(resp *Response, response *http.Response)

SetResponse 设置响应结果

func (*Requests) SetTimeout added in v0.3.8

func (r *Requests) SetTimeout(client *http.Client, timeout int)

SetTimeout 设置请求超时时间

func (*Requests) Upload added in v0.2.3

func (r *Requests) Upload(urlPath, formName, filePath string) (*Response, error)

Upload 普通文件上传

func (*Requests) UploadByBytes added in v0.2.6

func (r *Requests) UploadByBytes(urlPath, formName, fileName string, fileContent []byte) (*Response, error)

UploadByBytes 上传字节数组

type Response added in v0.2.5

type Response struct {
	Content          []byte `json:"content"`            // 响应内容
	Text             string `json:"text"`               // 响应文本
	RawReqDetail     string `json:"raw_req_detail"`     // 请求详情字符串
	RawRespDetail    string `json:"raw_resp_detail"`    // 响应详情字符串
	StatusCode       int    `json:"status_code"`        // 状态码
	IsRedirect       bool   `json:"is_redirect"`        // 是否重定向了
	RedirectUrl      string `json:"redirect_url"`       // 重定向的的URL地址
	StartTime        int    `json:"start_time"`         // 请求开始时间(纳秒)
	EndTime          int    `json:"end_time"`           // 请求结束时间(纳秒)
	SpendTime        int    `json:"spend_time"`         // 请求消耗时间(纳秒)
	SpendTimeSeconds int    `json:"spend_time_seconds"` // 请求消耗时间(秒)
	ClientIp         string `json:"client_ip"`          // 客户端IP
	ClientPort       int    `json:"client_port"`        // 客户端端口号
	FirstStatusCode  int    `json:"first_status_code"`  // 第一次请求的状态码
}

Response 响应对象

func (*Response) ToJsonStr added in v0.4.7

func (r *Response) ToJsonStr() string

ToJsonStr 转换为JSON字符串

type Text added in v0.4.7

type Text string // 提交Text纯文本

Directories

Path Synopsis
examples
any
get

Jump to

Keyboard shortcuts

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