Siege使用指南 携带身份认证Token信息 Post Json Data from body

2021-05-18  乐帮网

压力测试

Siege一直在维护,支持比较新的用法,下面就从简单的开发由简入难介绍几种常见情况。
首先一些基本的参数说明可以在这里查到:https://www.mankier.com/1/siege

(1)模拟10个客户端并发连续请求页面5次,所以一共是10*5=50次

siege -c10 -r5 https://lebang2020.cn/home.html

(2)一般情况下我们是需要测试多个网址,可以把地址写到一个文本文件中。

siege --c10 -r5  -f url.txt

url.txt中内容如下:

https://lebang2020.cn/home.html
https://lebang2020.cn/details/210518gbm55x4d.html
https://lebang2020.cn/details/210511ssm4x4d5.html
https://lebang2020.cn/details/210511c1kjaouk.html
https://lebang2020.cn/details/210511c1kjaouk.html
https://lebang2020.cn/details/210414foiitnwo.html

这个才是最常用的方式。

(3)携带cookie 身份信息等

siege --c10 -r1 -H 'Cookie: .AspNetCore.Antiforgery.6zNHCGLV2do=CfDJ8Kc2C9tkfqhAuAPYjE3D5eaWyTCfASIuuPep5D0lrW_ipEVSmCVSDvVPwp1nWqg4_uSX6pbaO0N8nWb_kUpC715INxYz9Ni8-jwmi4enQloutKtsqQxwRFI3FIT9qJ6diDY-f_xc0CIrYRb0NkONSD0; VKTCMS=CfDJ8Kc2C9tkfqhAuAPYjE3D5ebhF-hgME9WvpeUr4-7fCRHailIDWBVWVSPnyXQ52CyR0FfLbFUyPYAzumYzuZ2jWibywDh7W7wKgcjCXMQjDiw1wDX8pUjuV_Wy2B-eDkd10jV8fPnuTspUAvgYXtghv2A4l9B38NW9LxT7312OUC35NjFhy4JuvvIab5rbmscGfAiNV8O6_jDueQUVcXRGweAksMPCk3ovl07hudo2_hT9fvFQo3cudgUbdjW6ORLfbSA93hCT68nro4hyt8UNyoTzsgf1ZMiKJlIosIK9_5-uTGGn0ZWQWFY5ii5PdaZuls3zNyYGDBA7XP1Ml2MDdyj4vzG_gV8pS_IG4PJKJPQd9yV59E3je3GcNJo_E6QHA; __gads=ID=dc58d829b3a8fcf2-221e76316dc50084:T=1609572023:RT=1609572023:S=ALNI_MYovcIJaMtkTEn9d5osig7cVe90yA; __51cke__=; __tins__20923695=%7B%22sid%22%3A%201621263870596%2C%20%22vd%22%3A%203%2C%20%22expires%22%3A%201621265674994%7D; __51laig__=29'   https://lebang2020.cn/home.html

延申阅读,添加多个头部信息:

siege -c10 -r5   -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0'  https://lebang2020.cn/home.html

(4)发起一个带参数的Post请求

siege --concurrent=5 --content-type="text/plain" 'https://lebang2020.cn/home.html POST name=lebang2020&password=123456'

如果是携带Json格式的可以这样写

siege --concurrent=5 --content-type="application/json" 'https://lebang2020.cn/home.html POST {"name":"lebang2020","password":"123456"}'

参数比较大可以放到文件中

siege --concurrent=5 --content-type="application/json" 'https://lebang2020.cn/home.html POST < /home/hy/apifile.txt'

apifile.txt中参数是纯json格式

{"name":"lebang2020","password":"123456"}

(5)测试api携带Auth 的Token参数

siege --concurrent=10 --reps=5 --header="Authorization:Bearer u9lKvEDXLbsQpOAq4zvjUYaYENp-omCZJsOnmv_6Pfzi3M0qJP4qaKVgqb2iYNsI8JqtLJDZsG4TD_VaoCiCF5KgRdWKyLJrJzT4TV0UwrPmZrDGRbdM4IozKEnpXPp2ROfBhqHgBCSJx_k5xEzIXoruV-wWCwgLbvXOi0nSyKNPwGK-IhuzTwehpGxfCx9bA-XeAM7eV5nwKzViMsdc6mODdyo25c7CfQW6CC1YYAJwCo46HnpDOot4xMJQdprr" --content-type="application/json" 'http://lebang2020.cn/api/UploadData POST {"name":"lebang2020.cn"}'

注意:--header 和上面的-H是一样的效果可参见上方的使用手册。

(6)真正的高级应用来了 先看一下它的配置文件:https://github.com/JoeDog/siege/blob/master/doc/siegerc.in

看到以上内容后是不是有了更多的想法?

这里只简单的举例,做一个抛砖引玉。我可以同时测试网站许多页面和接口,有的需要token有的不需要,众多网页需要的参数也不一样,那么我们应该怎么启用测试呢?我们可以结合配置文件使用 连接命令。示例如下:

siege -f get_urls.txt & siege -H 'Content-Type: text/json' -f post_json_urls.txt

此时的get_url.txt内容

https://lebang2020.cn/home.html
https://lebang2020.cn/details/210511ssm4x4d5.html
https://lebang2020.cn/details/210511c1kjaouk.html
https://lebang2020.cn/details/210511c1kjaouk.html

post_json_urls.txt内容

'http://lebang2020.cn/api/UploadData POST {"name":"lebang2020.cn"}'
'http://lebang2020.cn/api/2 POST {"name":"lebang2020.cn"}'
'http://lebang2020.cn/api/3 POST {"name":"lebang2020.cn"}'

官网地址:https://www.joedog.org/

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:xinsiyu6@gmail.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力