开发者社区> 问答> 正文

【技术干货】Python之模拟http请求测试



首先我们用django 建一个简单的web 应用, 然后启动并访问
1. 用python 模拟get 请求
在浏览器中访问该应用http://127.0.0.1:8000 ,并通过firebug 看下网络请求


一个get 请求, 状态码为200 ,然后响应了一些html

用python 来替代浏览器模拟试试吧


用python 模拟的get ,获取返回的状态与内容都是与浏览器一致的,只是html 没有渲染出界面来

2. 用python 模拟post

在浏览器中输入页面http://127.0.0.1:8000/index/, 然后在输入用户与密码,点击提交


看下网络请求,是在使用post 向http://127.0.0.1:8000/add/ 提交数据, 参数是user,password



看响应内容


现在我们用python 同样模拟下post 请求


看起来好好的样子,有没有感觉这个post 有问题, 看起来很容易被伪造啊,

嗯,存在跨站请求伪造漏洞,在cookies 里面加个token 看看


有了csrftoken 以后,我们再来试试提交,会发现post 提交内容中多了个参数,这样是不是安全了一点


再来用python 试试吧
用户和密码的值我知道,但是csrfmiddlewaretoken 的值我不知道啊,这怎么弄呢?
仔细观察就会发现,csrfmiddlewaretoken 的值其实就是cookies 里面的csrftoken 值

而csrftoken 这个值在访问http://127.0.0.1:8000/index 就会有了( 其实就是服务端返回这个值的)




总结:python 能够用request 库模拟http 协议请求,get,post, 加cookies.
假设上面的post 接口是一个登录接口,加上csrf 真的很安全吗,当然不是,这个例子中python 就能简单模拟,用jmeter 也能去并发请求( 下次分享) ,但如果加上图片验证码的话,嘿嘿,你看着办吧!

PS :想知道上文中演示的web 应用是怎么搭建的吗,那就期待下次的分享吧!

可恶, 又是下次分享啊!

展开
收起
驻云科技 2016-07-06 10:56:21 7916 0
1 条回答
写回答
取消 提交回答
  • 上海驻云信息科技有限公司成立于2013年,是一家领先的企业云计算架构咨询、实施、管理及运维技术服务提供商,致力于为企业客户提供卓越的云计算整体解决方案。
    2018-02-06 11:35:39
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载