跳到主要内容

httpool

httpool 库提供 HTTP 请求池,对一批请求(可结合 fuzztag 变异)做高并发批量发送并流式返回结果,适合大规模探测、批量验证与字典爆破类场景。

典型使用场景:

  • 批量发包:httpool.Pool(i, opts...) 传入请求(或可变异的模板),返回 *HttpResult 的 channel。
  • 控制:httpool.size / httpool.perRequestTimeout 控制并发与超时,httpool.fuzz / httpool.fuzzParams 启用变异,httpool.https / httpool.host / httpool.proxy / httpool.rawMode 控制传输,httpool.noRedirect / httpool.redirectTimes 控制重定向。

与相邻库的关系:httpool 是发包引擎,常作为 fuzz/fuzzx 的底层批量执行层,也可直接用于大批量 URL 探测。

共 15 个函数

可变参数函数索引

函数参数返回值说明
httpool.Pooli any, opts ...HttpPoolConfigOptionchan *HttpResult, error以并发连接池的方式批量发送 HTTP 请求,输入可以是原始报文、请求列表或 fuzz 对象,返回结果管道

可变参数函数详情

Pool

Pool(i any, opts ...HttpPoolConfigOption) (chan *HttpResult, error)

以并发连接池的方式批量发送 HTTP 请求,输入可以是原始报文、请求列表或 fuzz 对象,返回结果管道

必填参数

参数名类型说明
iany待发送的请求源(原始报文 []byte/[][]byte、*http.Request、FuzzHTTPRequest 等)

可选参数

可作为可变参数 opts ...HttpPoolConfigOption 传入选项;共 14 个可用选项,详见 HttpPoolConfigOption 选项列表

返回值

序号类型说明
r1chan *HttpResultHTTP 结果管道,逐个产出每个请求的响应结果
r2error错误信息,初始化失败时返回非空

示例

// 并发批量发包,依赖网络,无法本地验证(仅作示意)
raw = `GET / HTTP/1.1
Host: www.example.com

`
ch = httpool.Pool(raw, httpool.https(false), httpool.size(10), httpool.perRequestTimeout(5))~
for res = range ch { println(res.Url) }

可变参数选项列表

以下按选项类型汇总全部可变参数选项(原先重复在各主函数下的选项表已收拢到此处):

1. 类型:HttpPoolConfigOption

涉及到的函数有:httpool.Pool

选项函数参数返回值说明
httpool.connPoolb boolHttpPoolConfigOption是一个 HTTP 连接池/批量请求配置选项,用于设置是否复用底层 TCP 连接池以提升性能
httpool.contextctx context.ContextHttpPoolConfigOption是一个 HTTP 连接池/批量请求配置选项,用于传入上下文以便外部取消批量任务
httpool.fuzzb boolHttpPoolConfigOption是一个 HTTP 连接池配置选项,用于设置是否对请求模板进行 fuzztag 渲染(变形)
httpool.fuzzParamsi anyHttpPoolConfigOption是一个 HTTP 连接池配置选项,用于为 fuzztag 渲染提供额外的参数表
httpool.hosth string, isHttps boolHttpPoolConfigOption是一个 HTTP 连接池/批量请求配置选项,用于强制指定请求实际连接的目标主机(覆盖报文中的 Host)
httpool.httpsf boolHttpPoolConfigOption是一个 HTTP 连接池/批量请求配置选项,用于设置是否以 HTTPS 协议发送请求
httpool.noFixContentLengthf boolHttpPoolConfigOption是一个 HTTP 连接池/批量请求配置选项,用于设置是否不自动修复 Content-Length 头
httpool.noRedirecti boolHttpPoolConfigOption是一个 HTTP 连接池配置选项,用于设置是否禁止跟随重定向
httpool.perRequestTimeoutf float64HttpPoolConfigOption是一个 HTTP 连接池/批量请求配置选项,用于设置单个请求的超时时间(单位:秒)
httpool.portport intHttpPoolConfigOption是一个 HTTP 连接池/批量请求配置选项,用于强制指定请求实际连接的目标端口
httpool.proxyproxies ...stringHttpPoolConfigOption是一个 HTTP 连接池/批量请求配置选项,用于设置请求所使用的代理(支持多个,依次尝试)
httpool.rawModeb boolHttpPoolConfigOption是一个 HTTP 连接池配置选项,用于设置是否以原始报文模式发送(不做额外解析处理)
httpool.redirectTimesf intHttpPoolConfigOption是一个 HTTP 连接池/批量请求配置选项,用于设置最大重定向跟随次数
httpool.sizei intHttpPoolConfigOption是一个 HTTP 连接池/批量请求配置选项,用于设置并发请求数量(并发上限)