【技术干货】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应用是怎么搭建的吗,那就期待下次的分享吧!可恶,又是下次分享啊!

时间: 2024-09-30 18:57:05

【技术干货】Python之模拟http请求测试的相关文章

php模拟post请求发送文件

由于项目需要,需要本地服务器接收数据后,再将数据转发到另外一台服务器上,故要用到模拟post请求发送数据,当然数据中也包含文件流. curl是php比较常用的方式之一,一般代码如下: $params1 = test; $params2 = @.$absolute_path;//如果是文件 则参数为@+绝对路径 $post_data = array( 'params1' => $params1, 'params2' => $params2, ); function postData($url,

技术 | 使用Python来学习数据科学的完整教程

我在SAS工作了5年多之后,决定走出舒适区.作为一名数据科学家,我在寻找其他好用的工具,幸运的是,没过多久,我发现了Python. 一直以来,我喜欢敲代码.事实证明,有了Python,敲代码变得更为容易. 我花了一周时间来学习Python的基础知识,从那时起,我不仅深入钻研Python,而且还帮助许多其他人学习这门语言.起初,Python是门通用语言,多年来,随着社区的大力支持,现在有了数据分析及预测建模库. 由于缺少Python数据科学资源,我决定创建本教程,旨在帮助大家快速入门.在本教程中,

即使自动驾驶前途未卜,Uber还是建了一座模拟城市进行测试

虽然Uber的自动驾驶饱受磨难,但整个项目仍在有序进行中 .雷锋网(公众号:雷锋网)消息,根据外媒报道,Uber在美国匹兹堡一座模拟城市中测试自动驾驶,以此来教会系统学习在现实世界中驾驶. 这一模拟场地名为ALMONO,是由一个旧钢厂改造而来.场地中有一个巨大的转盘,还有假的汽车和可以移动的人体模特,可以毫无征兆的出现在街道上.里面甚至还有一些容器一样的东西可以当作建筑物,模拟车辆的视线被遮挡时的行驶状况. ALMONO总面积有42英亩,不过据称Uber要求当地主管部门再批准扩建13000平方英

PHP模拟http请求的方法详解_php技巧

本文实例讲述了PHP模拟http请求的方法.分享给大家供大家参考,具体如下: 方法一:利用php的socket编程来直接给接口发送数据来模拟post的操作. 建立两个文件post.php,getpost.php post.php内容如下: <?php $flag = 0; $params = ''; $errno = ''; $errstr = ''; //要post的数据 $argv = array( 'var1'=>'abc', 'var2'=>'how are you , my f

轻松把玩HttpAsyncClient之模拟post请求示例

       如果看到过我前些天写过的<轻松把玩HttpClient之模拟post请求示例>这篇文章,你再看本文就是小菜一碟了,如果你顺便懂一些NIO,基本上是毫无压力了.因为HttpAsyncClient相对于HttpClient,就多了一个NIO,这也是为什么支持异步的原因.        不过我有一个疑问,虽说NIO是同步非阻塞IO,但是HttpAsyncClient提供了回调的机制,这点儿跟netty很像,所以可以模拟类似于AIO的效果.但是官网上的例子却基本上都是使用Future&l

技术干货|Oracle RAC上云怎么玩?

本文讲的是技术干货|Oracle RAC上云怎么玩?众所周知,Oracle数据库作为数据中心的核心业务系统,在企业.政府.金融.教育.医疗等行业被广泛应用.Oracle RAC(实时应用集群)是Oracle数据库完全高可用体系解决方案中的一个关键产品,也是Oracle数据库支持网格计算环境的核心技术.目前,大量大型企业的核心ERP.政府的重要业务.医院的HIS等系统都采用了Oracle RAC以保障其稳定运行. 科普:Oracle RAC是什么样的架构? 我们来了解下,Oracle RAC实时应

Python 爬虫模拟登陆知乎_python

在之前写过一篇使用python爬虫爬取电影天堂资源的文章,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了一下python模拟登陆,网上关于这部分的资料很多,很多demo都是登陆知乎的,原因是知乎的登陆比较简单,只需要post几个参数,保存cookie.而且还没有进行加密,很适合用来做教学.我也是是新手,一点点的摸索终于成功登陆上了知乎.就通过这篇文章分享一下学习这部分的心得,希望对那些和我一样的初学者

实例详解jQuery Mockjax 插件模拟 Ajax 请求_jquery

1. 原理 jquery-mockjax是用于mock 前台ajax向后台请求的返回数据. 原理很简单 在你js代码要发送ajax请求的地方断点一下,然后比较在[引入jquery-mockjax] 和 [没有引入jquery-mockjax]的情况下$.ajax.toString()的值情况. 很明显,引入jquery-mockjax时,这个mock库会对jquery提供的ajax函数做替换.这样就很容易能mock起来. 在实际的开发过程中,前端后台协商好了统一的接口,就各自开始自己的任务了.这

jQuery Mockjax插件模拟Ajax请求实例教程

在实际的开发过程中,前端后台协商好了统一的接口,就各自开始自己的任务了.这时候我有这么一个 Ajax 请求需要从后台获取数据:    代码如下 复制代码 $.ajax({   url: '/products/' }).done(function(res) {   $('#result').html(res); });     但是这个服务可能还没有创建,也许是后台开发那个小伙子(就是那些使用 PHP.Ruby..NET.GoldFusion 等等语言的帅哥们)开小差去了,也许是他忙于其它事情.总