h2csmuggler 项目教程
h2csmuggler项目地址:https://gitcode.com/gh_mirrors/h2/h2csmuggler
1. 项目的目录结构及介绍
h2csmuggler 项目的目录结构如下:
h2csmuggler/
├── cmd/
│ ├── h2csmuggler/
│ │ ├── check.go
│ │ ├── smuggle.go
│ │ └── demo.go
├── pkg/
│ ├── client/
│ │ ├── client.go
│ ├── http2/
│ │ ├── http2.go
├── .gitignore
├── LICENSE
├── README.md
├── go.mod
├── go.sum
目录介绍
cmd/
: 包含项目的命令行工具实现。h2csmuggler/
: 具体的命令行工具文件夹。check.go
: 用于检查 h2c 连接是否可以建立。smuggle.go
: 用于执行 h2c 请求。demo.go
: 用于创建一个接受非标准Connection: Upgrade
连接的 HTTP 服务器。
pkg/
: 包含项目的库代码。client/
: 客户端实现。client.go
: 客户端主要逻辑。
http2/
: HTTP/2 相关实现。http2.go
: HTTP/2 库的修改和扩展。
.gitignore
: Git 忽略文件配置。LICENSE
: 项目许可证。README.md
: 项目说明文档。go.mod
: Go 模块文件。go.sum
: Go 模块依赖校验文件。
2. 项目的启动文件介绍
项目的启动文件位于 cmd/h2csmuggler/
目录下:
check.go
: 用于检查 h2c 连接是否可以建立。smuggle.go
: 用于执行 h2c 请求。demo.go
: 用于创建一个接受非标准Connection: Upgrade
连接的 HTTP 服务器。
启动文件介绍
-
check.go
:- 功能:检查目标 URL 是否支持 h2c 连接。
- 使用方法:
go run cmd/h2csmuggler/check.go https://example.com/
-
smuggle.go
:- 功能:执行 h2c 请求,绕过代理的访问控制。
- 使用方法:
go run cmd/h2csmuggler/smuggle.go https://example.com/
-
demo.go
:- 功能:创建一个 HTTP 服务器,接受非标准的
Connection: Upgrade
连接,并升级为 h2c。 - 使用方法:
go run cmd/h2csmuggler/demo.go
- 功能:创建一个 HTTP 服务器,接受非标准的
3. 项目的配置文件介绍
h2csmuggler 项目没有显式的配置文件,其配置主要通过命令行参数进行传递。以下是一些常用的命令行参数:
--scan-list
: 指定要扫描的 URL 列表文件。--threads
: 指定并发线程数。--upgrade-only
: 仅进行升级测试。-x
: 指定代理地址。-i
: 指定字典文件。-X
: 指定请求方法。-d
: 指定请求数据。-H
: 指定请求头。-m
: 指定最大超时时间。-t
: 进行测试。-v
: 开启详细输出。
示例
# 使用 URL 列表文件进行扫描
go run cmd/h2csmuggler/smuggle.go --scan-list urls.txt --threads 5
# 对单个 URL 进行测试
go run cmd/h2csmuggler/smuggle.go -x https://example.com/api/ --test
通过这些命令行参数,可以灵活地配置和使用 h2csmuggler 工具。
h2csmuggler项目地址:https://gitcode.com/gh_mirrors/h2/h2csmuggler