Siege是一个HTTP/HTTPS负载测试和基准测试工具,可以模拟多个用户同时访问一个URL。
centos安装Siege
sudo yum install epel-release sudo yum install siege
使用siege模拟20个并发用户。
siege -c 20 -r 1 http://your_api_endpoint_here/
其中:
-c 20 表示20个并发用户。
-r 1 表示每个用户仅发送1次请求。
请请求内容封装到文本里调用
假设要测试如下请求:
curl --location 'https://api.abcd.org/api/old-style' \ --header 'api-key: quickstart-14dJIGlzIGNvbWluZy4uLi98' \ --form 'text="Draw a cartoon panda"'
要使用siege模拟上述的curl请求并使20个并发用户发起请求,可以使用以下命令:
首先,创建一个名为urls.txt的文件,并将以下内容添加到该文件中:
https://api.abcd.org/api/old-style POST api-key=quickstart-14dJIGlzIGNvbWluZy4uLi98 text=Draw+a+cartoon+panda
然后,使用siege运行测试:
siege -c 20 -r 1 -f urls.txt
其中:
-c 20 表示20个并发用户。
-r 1 表示每个用户只请求一次。
-f urls.txt 指示siege从urls.txt文件中读取要测试的URL。
JSON POST数据测试方式
下面的这个接口请求,转写成可以放到urls.txt里供siege使用的文本:
curl --location --request POST 'https://myendpoint.test.com/system/replace/io' \ --header 'token: bd66fc8b8380483da5bd4d6de96b357d' \ --header 'Content-Type: application/json' \ --data-raw '{ "requestIds": [ "20230709132535568E490BBEAB7AAD1D3F" ] }'
要在siege中模拟POST请求,需要将请求数据和HTTP方法包含在urls.txt文件中。
请按照以下步骤操作:
创建一个名为post_data.txt的文件,其中包含以下内容:
{ "requestIds": [ "20230709132535568E490BBEAB7AAD1D3F" ] }
在urls.txt文件中添加以下内容:
https://myendpoint.test.com/system/replace/io POST < post_data.txt
使用siege运行测试:
可以在siege命令行中引用urls.txt文件,并添加所需的HTTP头:
siege -c 20 -r 1 -f urls.txt -H "token: bd66fc8b8380483da5bd4d6de96b357d" -H "Content-Type: application/json"
这应该能够模拟POST请求,并使用提供的JSON数据和HTTP头。
如何配置siege通过代理发送请求?
要使siege
通过代理服务器发送请求,您需要在其配置文件中设置代理服务器的详细信息。以下是具体步骤:
-
找到
siege
的配置文件:siege
默认在多个位置查找其配置文件,其中之一是$HOME/.siegerc
(对于用户特定的配置)。 -
编辑配置文件:
使用您喜欢的文本编辑器打开
.siegerc
文件(如果该文件不存在,您可以创建一个)。 -
添加代理服务器设置:
在
.siegerc
文件中,您可以添加以下两行来指定代理服务器的主机和端口:http-proxy-host = proxy_server_host http-proxy-port = proxy_server_port
其中,
proxy_server_host
是您的代理服务器的主机名或IP地址,而proxy_server_port
是代理服务器的端口号。例如,如果您的代理服务器位于
192.168.1.100
,端口为8080
,则应该添加以下行:http-proxy-host = 192.168.1.100 http-proxy-port = 8080
-
保存并关闭文件:
保存您对
.siegerc
文件所做的更改,并关闭编辑器。
现在,当您使用 siege
运行测试时,它应该会通过指定的代理服务器发送请求。如果您只是暂时需要使用代理,而不希望修改配置文件,也可以使用环境变量 http_proxy
来指定代理,如:
export http_proxy=http://192.168.1.100:8080 siege -c 10 -r 1 http://www.example.com/
这将导致 siege
使用环境变量中指定的代理服务器,而不是配置文件中的设置。
从 JSON 文件中读取代理服务器的 IP 和端口,然后使用 siege
通过该代理发送请求
json数据
{ "code": "SUCCESS", "data": [{ "proxy_ip": "123.54.55.24", "server": "123.54.55.24:59419", "area": "河南省商丘市", "isp": "电信", "deadline": "2023-02-25 15:38:36" }], "request_id": "83158ebe-be6c-40f7-a158-688741083edc" }
要从 JSON 文件中读取代理服务器的 IP 和端口,然后使用 siege
通过该代理发送请求,可以使用以下步骤:
-
安装
jq
: 首先,您需要一个命令行 JSON 解析器。jq
是一个轻量级且强大的命令行 JSON 解析器,可用于从 JSON 文件或字符串中读取数据。安装
jq
的方法取决于您的操作系统。例如,在大多数 Linux 发行版上,您可以使用包管理器进行安装:sudo apt install jq # 对于 Debian/Ubuntu sudo yum install jq # 对于 CentOS
-
从 JSON 文件中读取代理服务器的信息:
使用
jq
,您可以从 JSON 文件中读取server
的值。例如,如果您的 JSON 文件名为proxy_info.json
:PROXY_INFO=$(jq -r '.data[0].server' proxy_info.json)
这会将代理服务器的 IP 和端口保存到
PROXY_INFO
变量中。 -
使用
siege
发送请求:有了代理信息后,您可以设置
http_proxy
环境变量并运行siege
:export http_proxy=http://$PROXY_INFO siege -c 10 -r 1 http://www.example.com/
从接口获取 JSON 数据
从一个接口获取 JSON 数据,可以使用 curl
或其他类似的工具获取数据,并结合 jq
从数据中提取所需信息。
以下是一个简单的示例,说明如何从远程接口获取 JSON 数据并提取代理信息,然后使用 siege
通过该代理发送请求:
-
获取 JSON 数据:
使用
curl
调用远程接口并保存输出。例如,如果远程接口的 URL 为https://api.example.com/getProxyInfo
,您可以执行:JSON_DATA=$(curl -s https://api.example.com/getProxyInfo)
这会将远程接口的输出保存到
JSON_DATA
变量中。 -
从 JSON 数据中提取代理服务器的信息:
使用
jq
从JSON_DATA
变量中提取server
的值:PROXY_INFO=$(echo $JSON_DATA | jq -r '.data[0].server')
这会将代理服务器的 IP 和端口保存到
PROXY_INFO
变量中。 -
使用
siege
发送请求:设置
http_proxy
环境变量并运行siege
:export http_proxy=http://$PROXY_INFO siege -c 10 -r 1 http://www.example.com/
整理成一个脚本
以下是一个简化的 bash 脚本,它从远程接口获取 JSON 数据、提取代理信息并使用siege
通过该代理发送请求:
#!/bin/bash # 获取 JSON 数据 JSON_DATA=$(curl -s https://api.example.com/getProxyInfo) # 从 JSON 数据中提取代理服务器的信息 PROXY_INFO=$(echo $JSON_DATA | jq -r '.data[0].server') # 设置 http_proxy 环境变量 export http_proxy=http://$PROXY_INFO # 使用 siege 发送请求 siege -c 10 -r 1 http://www.example.com/ # 如果您不想长时间设置 http_proxy 变量,您可以在脚本结束后取消它 unset http_proxy
为了使用这个脚本:
-
将上述内容保存到一个文件中,例如
siege_proxy_test.sh
。 -
为该文件设置执行权限:
chmod +x siege_proxy_test.sh
-
运行脚本:
./siege_proxy_test.sh
标签:http,请求,如何,Siege,siege,代理服务器,压测,JSON,proxy From: https://www.cnblogs.com/shamo89/p/17645901.html