问题
解决
结尾
问题
当我们想要验证某个 web 服务如何处理非法 URL 传参时,需要使用一定的方法,不可能一条测试用例一条测试用例的去手动尝试,这样既浪费时间,效率还低。有没有什么好方法吗?这就是我们今天想要讨论的问题。
解决
解决这个问题,其实就是使用一定的自动化手段来实现 Restful API 测试工作。说到自动化测试工具,我们可以想到 PostMan、APIPost、JMeter 等,学习工具的使用需要一定时间成本,有没有别的推荐的方法呢?答案是有的。如果你 shell 脚本写的非常溜的话,完全可以自己手撸一个自动化测试脚本。
首先,我们拆解一下这个问题,如果想要实现这个自动化测试脚本,我们需要做三件事儿。
其一、选择 http 请求的发送工具,我们这里选择 curl 工具。curl 是我们经常使用的网络测试工具之一,它的功能非常强大,命令行参数多达几十种。如果使用熟练的话,完全可以取代 Postman、APIPost 等图形界面工具。
其二、模拟 URL 非法参数,我们这里使用 /dev/urandom 和 head 工具。/dev/urandom 是 linux 系统中生成伪随机数的工具,head 是用来控制 URL 参数显示的。
其三、快速实现 API 接口测试,我们使用了大循环和低休眠的方案来控制请求发送。
按照上面提到的三部分内容,我们实现了非常简单的测试脚本,具体编码如下:
#!/bin/bash
step=1 # 增加步幅
wait=0.1 # 间隔的秒数
for((i=0;i<6000;i=(i+step)));do
ran=$(cat /dev/urandom | head -n 10 | head -c 10)
echo $ran
curl http://172.31.232.99:3000/$ran
sleep $wait
done;
exit 0
复制代码
为了直观的显示我们模拟的 URL 参数长成什么样子,我们在 console 中将它们打印出来,执行脚本,命令如下:
sh url_test.sh
测试运行结果:(由于内容太多,只列出一部分输出内容)
!???h? ?e?
curl: (3) URL using bad/illegal format or missing URL
?????H?m
curl: (3) URL using bad/illegal format or missing URL
=?????9
curl: (3) URL using bad/illegal format or missing URL
curl: (3) URL using bad/illegal format or missing URL
-@V??r:
curl: (3) URL using bad/illegal format or missing URL
L?%??'?Ӥ?
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"><meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1"><title></title><link rel="stylesheet" href="/layui/css/layui.css"><link rel="stylesheet" href="/stylesheets/style.css"></head><body class="gray"><div class="layui-header header"><div class="layui-main"><a href="/" class="logo">返回首页</a></div></div><div class="layui-container mt-20"><div class="layui-row layui-col-space20"><div class="layui-col-md12"><h1>Failed to decode param '/LÐ%´'Ó¤â'</h1><h2></h2><pre></pre></div></div></div><script src="/javascripts/jquery.min.js"></script><script src="/layui/layui.js"></script><script src="/javascripts/cms.js"></script></body></html>?q??6??
curl: (3) URL using bad/illegal format or missing URL
"?????? p
curl: (3) URL using bad/illegal format or missing URL
复制代码
其实,curl 工具本身也会自己过滤一部分非法的 URL 参数请求,并不是所有携带 URL 参数的请求都会发出去。
至此,我们的自动化测试脚本就搞定了,而且运行效果也非常满意,快速高效,还不需要人工干预。脚本执行完毕后,我们从服务器端查看报错日志即可。
如果有漏洞,我们根据日志内容进行修复就行啦,完美!
结尾
好了,今天关于模拟 URL 参数请求的自动化脚本就介绍完啦,是不是非常简单。我是 liuzhen007,中国邦德,中国一个会敲代码的邦德,欢迎大家关注我。
评论 (1 条评论)