前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用GoReplay实时捕捉和分析HTTP流量

如何使用GoReplay实时捕捉和分析HTTP流量

作者头像
FB客服
发布2023-03-30 19:19:30
1.5K0
发布2023-03-30 19:19:30
举报
文章被收录于专栏:FreeBufFreeBuf

 关于GoReplay 

GoReplay是一款功能强大的开源网络监控工具,该工具可以帮助广大研究人员捕捉、监控和记录实时HTTP流量,并将其重放到测试环境中,以便使用真实数据来进行实现分析系统的数据连贯性。除此之外,该工具还能够提升代码部署、配置修改和基础架构的数据完整性。

值得一提的是,该工具所采用的先进技术将允许我们在不影响应用程序流量的情况下分析和记录应用程序流量,这也消除了将第三方组件存在于业务关键路径中所带来的风险。

GoReplay不是代理,而是在后台侦听网络接口上的流量,不需要更改生产基础结构,只需在机器上运行GoReplay守护进程即可。

 工具运行机制 

 工具安装 

广大研究人员可以直接访问该项目的【Releases页面】获取最新版本的GoReplay已编译源码。

除此之外,我们也可以自行动手针对macOS和Linux来编译GoReplay源码。

GoReplay基于Go语言开发,因此我们首先需要在本地设备上安装并配置好Go语言环境。

接下来,安装好GoReplay所需的libpcap库,这个库将作为各种内核包捕捉机制的接口。以然后安装gopacket,即针对libpcap的Go封装器。

接下来,运行下列命令即可:

代码语言:javascript
复制
# Fetch libpcap dependencies. Depending on your OS, instead of `apt` you will use `yum` or `rpm`, or `brew` on Mac.
sudo apt-get install flex bison -y


# Download latest stable release, compile and install it
wget http://www.tcpdump.org/release/libpcap-1.7.4.tar.gz && tar xzf libpcap-1.7.4.tar.gz
cd libpcap-1.7.4
./configure && make install




# Lets fetch Gor source code
mkdir $HOME/gocode
# See more information about GOPATH https://github.com/golang/go/wiki/GOPATH
export GOPATH=$HOME/gocode
# Fetch code from the Github
go get github.com/buger/gor


# Compile from source
cd $HOME/gocode/src/github.com/buger/gor
go build LDFLAGS = -ldflags "-extldflags \"-static\""

 工具使用 

如果你已经搭建好了测试环境,那么直接运行下列命令便可执行GoReplay操作:

代码语言:javascript
复制
sudo ./gor --input-raw :8000 --output-http http://staging.env

捕捉Web流量

下列命令将监听端口8000的所有网络活动,并将其记录到stdout:

代码语言:javascript
复制
sudo ./gor --input-raw :8000 --output-stdout

接下来, 在浏览器中打开http://localhost:8000并发送一些请求,你将会在GoReplay中看到输出的所有HTTP请求,此时我们可以运行下列命令追踪请求的响应信息:

代码语言:javascript
复制
--output-http-track-response

流量重放

此时,我们就可以将捕捉到的原始流量重返到测试环境中了。下列命令可以开启另一台不同端口的文件Web服务器:

代码语言:javascript
复制
gor file-server :8001

使用“--output-http”选项并提供第二台服务器的URL:

代码语言:javascript
复制
sudo ./gor --input-raw :8000 --output-http="http://localhost:8001"

存储文件请求(以便之后重放)

某些情况下,你可能不需要立即重放捕捉到的流量,因此我们可以将其存储到文件中以备后续使用。

首先,使用“--output-file”选项存储捕捉到的流量:

代码语言:javascript
复制
sudo ./gor --input-raw :8000 --output-file=requests.gor

接下来,使用下列命令重放捕捉到的流量:

代码语言:javascript
复制
./gor --input-file requests.gor --output-http="http://localhost:8001"

工具演示视频

https://www.you*tube.com/watch?v=CxuKZcMKaW4

许可证协议

本项目的开发与发布遵循LGPLv3开源许可证协议。

项目地址

https://github.com/buger/goreplay

参考资料

https://goreplay.org/

http://github.com/buger/goreplay/wiki

https://github.com/the-tcpdump-group/libpcap

http://www.tcpdump.org/release/

精彩推荐

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •  关于GoReplay 
  •  工具运行机制 
  •  工具安装 
  •  工具使用 
    • 捕捉Web流量
      • 流量重放
        • 存储文件请求(以便之后重放)
        • 工具演示视频
        • 许可证协议
        • 项目地址
        • 参考资料
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档