goreplay 是一个可以抓包和重放包的工具,好用的很.
首先下载 点我下载
抓包
- 抓取指定端口的包
./goreplay --input-raw :8000 --output-stdout
抓取8000的包, 并将请求打印到控制台
复制代码
- 抓取响应包
默认没有将响应包也一起抓取,可以使用--input-raw-track-response 抓取响应包
./goreplay --input-raw :8000 --input-raw-track-response--input-raw-track-response --output-stdout
复制代码
- 添加ip地址 经过goreplay重发之后, 服务器端就拿不到原来的ip地址,可以使用 --input-raw-realip-header 来添加ip地址
./goreplay --input-raw :8000 --input-raw-realip-header "X-Real-IP" ...
复制代码
- 请求过滤 抓取指定端口的包,可能内容比较多,这时候可以使用请求过滤功能
正则表达式过滤,只允许
goreplay --input-raw :8080 --output-http staging.com --http-allow-url /api
复制代码
正则表达式过滤,禁止
goreplay --input-raw :8080 --output-http staging.com --http-disallow-url /api
复制代码
基于header的正则表达式过滤
# only forward requests with an api version of 1.0x
goreplay --input-raw :8080 --output-http staging.com --http-allow-header api-version:^1\.0\d
# only forward requests NOT containing User-Agent header value "Replayed by Gor"
goreplay --input-raw :8080 --output-http staging.com --http-disallow-header "User-Agent: Replayed by Gor"
复制代码
基于http 方法的过滤
goreplay --input-raw :80 --output-http "http://staging.server" \
--http-allow-method GET \
--http-allow-method OPTIONS
复制代码