产品动态
sudo gor--input-raw:8080--output-file requests.gor
# 从官方 GitHub 仓库下载最新的二进制文件curl -L https://github.com/buger/goreplay/releases/download/1.3.3/gor_1.3.3_x64.tar.gz | tar xz# 将二进制文件移动到你的PATH目录中,例如/usr/local/binmv gor /usr/local/bin/

sudo gor --input-raw :80 --output-file requests.gor

scheme | host | uri | method | jsonHeaders | base64Body |
http | mockhttpbin.pts.svc.cluster.local | /get?page=1 | get | {"name":"kk"} | - |
http | mockhttpbin.pts.svc.cluster.local | /post | post | {"Hello": 'world',} | dGhpcyBpcyBnb29kCg== |
scheme,host,uri,method,jsonHeaders,base64Bodyhttp,mockhttpbin.pts.svc.cluster.local,/get?page=1,get,{"name":"kk"},http,mockhttpbin.pts.svc.cluster.local,/post,post,{"hello":"world"},dGhpcyBpcyBnb29kCg==
package mainimport ("encoding/base64""encoding/csv""encoding/json""fmt""io/ioutil""log""net/http""os")func main() {http.HandleFunc("/", requestHandler) // 设置处理函数log.Println("Server starting on port 8080...")log.Fatal(http.ListenAndServe(":8080", nil))}func requestHandler(w http.ResponseWriter, r *http.Request) {// 获取请求信息scheme := "http" // 默认为http,因为Go的http包不支持直接获取schemeif r.TLS != nil {scheme = "https"}host := r.Hosturi := r.RequestURImethod := r.Method// 将headers转换为JSON格式headersJson, err := json.Marshal(r.Header)if err != nil {http.Error(w, "Error converting headers to JSON", http.StatusInternalServerError)return}// 读取请求体body, err := ioutil.ReadAll(r.Body)if err != nil {http.Error(w, "Error reading request body", http.StatusInternalServerError)return}defer r.Body.Close()// Base64编码请求体base64Body := base64.StdEncoding.EncodeToString(body)// 写入CSV文件record := []string{scheme, host, uri, method, string(headersJson), base64Body}err = writeToCSV(record)if err != nil {http.Error(w, "Error writing to CSV", http.StatusInternalServerError)return}// 发送响应fmt.Fprintf(w, "Request logged")}func writeToCSV(record []string) error {file, err := os.OpenFile("requests.csv", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)if err != nil {return err}defer file.Close()writer := csv.NewWriter(file)defer writer.Flush()return writer.Write(record)}
go run main.go
gor --input-file requests.gor --output-http "http://csv-server-address:8080" --http-original-host true


// Send a http get requestimport http from 'pts/http';import { check, sleep } from 'pts';import util from 'pts/util';import dataset from 'pts/dataset';export default function () {// 读取csv文件各个字段var method = dataset.get("method")var scheme = dataset.get("scheme")var host = dataset.get("host")var uri = dataset.get("uri")var jsonHeaders = dataset.get("jsonHeaders")var base64Body = dataset.get("base64Body")var headers = JSON.parse(jsonHeaders)var body = util.base64Decoding(base64Body, "std", "b")// 构造请求var req = {method: method,url: scheme + "://" + host + uri,headers: headers,body: body}// 发送请求var resp = http.do(req)// simple get requestconsole.log(resp.body);check('status is 200', () => resp.statusCode === 200, resp);// sleep 1 secondsleep(1);}


文档反馈