zdpgo_requests

package module
v0.6.2 Latest Latest
Warning

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

Go to latest
Published: Sep 28, 2022 License: MIT Imports: 17 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/14 新增:支持两次请求状态码校验
  • v0.4.8 2022/06/14 新增:自定义X-Author请求头
  • v0.4.9 2022/06/15 优化:优化日志和Author请求头
  • v0.5.3 2022/06/20 优化:优化日志
  • v0.5.4 2022/06/22 新增:请求限流
  • v0.5.5 2022/06/27 优化:请求和响应详情没有不报错
  • v0.5.6 2022/06/28 优化:移除日志组件
  • v0.5.7 2022/06/28 BUG修复:修复日志移除后的相关BUG
  • v0.5.8 2022/07/08 升级:升级password组件
  • v0.5.9 2022/09/01 优化:移除不必要的依赖
  • v0.6.0 2022/09/23 新增:解析Query查询参数
  • v0.6.1 2022/09/28 优化:客户端端口为可配置,默认不开启

使用示例

请查看 examples 目录

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"`
}

BasicAuth 基础权限校验类型

type Config added in v0.2.5

type Config struct {
	PoolSize                 int    `json:"pool_size" yaml:"pool_size"`                                     // 最多同时执行任务数量,默认333
	LimitSpeedMillionSeconds int    `json:"limit_speed_million_seconds" yaml:"limit_speed_million_seconds"` // 限制发送频率,默认333毫秒
	LimitSleepSeconds        int    `json:"limit_sleep_seconds" yaml:"limit_sleep_seconds"`                 // 达到限制后的休眠时间,默认3秒
	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"`                       // 目标地址
	IsRecordClientPort       bool   `yaml:"is_record_client_port" json:"is_record_client_port"` // 是否记录客户端端口
	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"`
}

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 Query added in v0.6.1

type Query 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                  // 配置对象
	Password   *zdpgo_password.Password // 加密对象
	TaskNum    int                      // 任务数量
}

func New

func New() *Requests

func NewWithConfig added in v0.2.9

func NewWithConfig(config *Config) *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, error)

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

func (*Requests) GetHttpRequest added in v0.2.9

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

func (*Requests) GetRandomUserAgent added in v0.4.7

func (r *Requests) GetRandomUserAgent() string

GetRandomUserAgent 获取随机的用户代理

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) 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字符串

func (*Response) ToMap added in v0.6.1

func (r *Response) ToMap() map[string]interface{}

ToMap 转换为map字典

func (*Response) ToObj added in v0.6.1

func (r *Response) ToObj(obj interface{})

ToObj 转换为指定的对象

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