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

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

7ff36fa6da1ab9e51aec79965d1d6a758c122b21


首先我们用django建一个简单的web应用,然后启动并访问

1.用python模拟get请求

在浏览器中访问该应用http://127.0.0.1:8000,并通过firebug看下网络请求


7a5cd201be32c9cb4aa00bbf6e12304b3a540ec6

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

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

85a9e7ff8459367cabdd8d7b42ad908bcdb64df8


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

 

2.用python模拟post

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


ea42208c56429b8358d2cea12ceca81479fdbc1e

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


31f4f0b28489c25e8b6fa662afee5b2a68804e2c


看响应内容


ecb03e47eefe0d273039915924f7d58764a9a769


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


b6f96a35232d49bddb302ad6df9e55805494c985


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

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


0f55bd26f2c156f0d2f70ba667e47973e93845e5


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


32e2a3e71164128206cf654154e43b5738ba7a4d


再来用python试试吧

用户和密码的值我知道,但是csrfmiddlewaretoken的值我不知道啊,这怎么弄呢?

仔细观察就会发现,csrfmiddlewaretoken的值其实就是cookies里面的csrftoken值

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


188229d34a8440806e251e7f234afa7ea49b0ac8


总结:python能够用request库模拟http协议请求,get,post,加cookies.

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

 

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

相关文章
|
1天前
|
安全 测试技术 持续交付
在Python Web开发中,测试是一个至关重要的环节
【5月更文挑战第12天】在Python Web开发中,测试至关重要,包括单元测试(unittest模块)、集成测试、功能测试、系统测试、验收测试、性能测试、安全测试和端到端测试。常用的测试工具有unittest、pytest、selenium、requests和coverage。遵循“测试先行”和“持续集成”原则,确保代码质量与稳定性。
8 3
|
1天前
|
Web App开发 测试技术 C++
Playwright安装与Python集成:探索跨浏览器测试的奇妙世界
Playwright是新兴的跨浏览器测试工具,相比Selenium,它支持Chrome、Firefox、WebKit,执行速度快,选择器更稳定。安装Playwright只需一条`pip install playwright`的命令,随后的`playwright install`会自动添加浏览器,无需处理浏览器驱动问题。这一优势免去了Selenium中匹配驱动的烦恼。文章适合寻求高效自动化测试解决方案的开发者。
10 2
|
4天前
|
API Apache Android开发
对于Android的http请求的容错管理
对于Android的http请求的容错管理
|
4天前
|
JSON 数据格式 Python
Python 的 requests 库是一个强大的 HTTP 客户端库,用于发送各种类型的 HTTP 请求
`requests` 库是 Python 中用于HTTP请求的强大工具。要开始使用,需通过 `pip install requests` 进行安装。发送GET请求可使用 `requests.get(url)`,而POST请求则需结合 `json.dumps(data)` 以JSON格式发送数据。PUT和DELETE请求类似,分别调用 `requests.put()` 和 `requests.delete()`。
14 2
|
5天前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
16 0
|
5天前
|
数据采集 JSON API
如何用Python Requests发送请求
如何用Python Requests发送请求
8 0
|
5天前
|
API
http代理ip请求并发数是什么?有什么用?
HTTP代理IP请求并发数指单个客户端对API或代理IP同时发起的请求数量,分为API链接请求并发和IP最大连接数。并发是瞬时同时请求,不同提供商限制不同。高并发请求的代理IP服务商能更好地应对程序压力。选择时应考虑这一因素。
|
5天前
|
Go
深度探讨 Golang 中并发发送 HTTP 请求的最佳技术
深度探讨 Golang 中并发发送 HTTP 请求的最佳技术
|
5天前
|
测试技术 开发者 Python
Python中的单元测试
【5月更文挑战第8天】在Python软件开发中,确保代码质量是关键,单元测试和测试驱动开发(TDD)是实现这一目标的有效方法。本文介绍了如何使用unittest和pytest进行单元测试,以及如何通过TDD编写可靠代码。首先,展示了单元测试的基本概念和示例,然后详细解释了TDD的"红-绿-重构"循环。此外,还讨论了pytest如何简化单元测试,并给出了使用TDD重构函数的例子。
6 1
|
7天前
|
API UED Python
使用Python进行异步HTTP请求的实践指南
使用Python进行异步HTTP请求的实践指南
19 4

热门文章

最新文章