请求双重授权
Double auth with requests
我正在使用 Locust(它使用请求)进行页面加载测试。该页面有一个弹出窗口,要求访问该页面的用户名和密码,并且有一个标准的登录页面。
我第一次使用 client.auth
进行身份验证(在弹出窗口中)打开页面并在 POST 请求上发送数据以登录帐户。
问题是 Locust 从不显示失败,即使我跳过第二次身份验证也是如此。换句话说,如果我执行 client.auth 身份验证,我可以获取任何页面(甚至是需要身份验证的页面,并且我跳过第二次身份验证)并且 Locust 不会显示 401 错误。所以我在这里做错了什么。
这是我正在使用的代码:
class UserBehavior(TaskSet):
def on_start(self):
self.login()
def login(self):
# Set basic auth credentials
if BASIC_AUTH_CREDENTIALS:
self.client.auth = BASIC_AUTH_CREDENTIALS
headers = {
'referer': 'http://myreferer.com'
}
data = {
'username': 'John',
'password': 'Doe',
'csrfmiddlewaretoken': '123456712345671234567'
}
r = self.client.post('/login', data=data, headers=headers)
@task
def progress(self):
self.client.get("/needed/authorization")
我想要的是测量当许多用户尝试加载页面时加载页面所花费的时间。我在几个页面上进行了测量,一个加载速度快,另一个加载速度慢得多,但测试显示两者的值相同。我认为 Locust 的模拟用户每次都会被重定向到登录页面,因此他们具有相同的响应时间并且不会报告 401 或 404 或任何与此相关的错误。
请帮我正确地做到这一点。
为了测试需要登录的页面,您应该在 header 中发送 loged-in 用户信息 (cookie)。
class UserBehavior(TaskSet):
cookie = ""
def on_start(self):
self.cookie = self.get_user_cookie()
def get_user_cookie(self):
# Set basic auth credentials
if BASIC_AUTH_CREDENTIALS:
self.client.auth = BASIC_AUTH_CREDENTIALS
headers = {
'referer': 'http://myreferer.com'
}
data = {
'username': 'John',
'password': 'Doe',
'csrfmiddlewaretoken': '123456712345671234567'
}
r = self.client.post('/login', data=data, headers=headers)
if r.status_code == 200:
return r.request.headers['Cookie']
else:
print "User cannot login"
@task
def progress(self):
self.client.get("/needed/authorization", headers = {"Cookie": self.cookie})
我正在使用 Locust(它使用请求)进行页面加载测试。该页面有一个弹出窗口,要求访问该页面的用户名和密码,并且有一个标准的登录页面。
我第一次使用 client.auth
进行身份验证(在弹出窗口中)打开页面并在 POST 请求上发送数据以登录帐户。
问题是 Locust 从不显示失败,即使我跳过第二次身份验证也是如此。换句话说,如果我执行 client.auth 身份验证,我可以获取任何页面(甚至是需要身份验证的页面,并且我跳过第二次身份验证)并且 Locust 不会显示 401 错误。所以我在这里做错了什么。
这是我正在使用的代码:
class UserBehavior(TaskSet):
def on_start(self):
self.login()
def login(self):
# Set basic auth credentials
if BASIC_AUTH_CREDENTIALS:
self.client.auth = BASIC_AUTH_CREDENTIALS
headers = {
'referer': 'http://myreferer.com'
}
data = {
'username': 'John',
'password': 'Doe',
'csrfmiddlewaretoken': '123456712345671234567'
}
r = self.client.post('/login', data=data, headers=headers)
@task
def progress(self):
self.client.get("/needed/authorization")
我想要的是测量当许多用户尝试加载页面时加载页面所花费的时间。我在几个页面上进行了测量,一个加载速度快,另一个加载速度慢得多,但测试显示两者的值相同。我认为 Locust 的模拟用户每次都会被重定向到登录页面,因此他们具有相同的响应时间并且不会报告 401 或 404 或任何与此相关的错误。
请帮我正确地做到这一点。
为了测试需要登录的页面,您应该在 header 中发送 loged-in 用户信息 (cookie)。
class UserBehavior(TaskSet):
cookie = ""
def on_start(self):
self.cookie = self.get_user_cookie()
def get_user_cookie(self):
# Set basic auth credentials
if BASIC_AUTH_CREDENTIALS:
self.client.auth = BASIC_AUTH_CREDENTIALS
headers = {
'referer': 'http://myreferer.com'
}
data = {
'username': 'John',
'password': 'Doe',
'csrfmiddlewaretoken': '123456712345671234567'
}
r = self.client.post('/login', data=data, headers=headers)
if r.status_code == 200:
return r.request.headers['Cookie']
else:
print "User cannot login"
@task
def progress(self):
self.client.get("/needed/authorization", headers = {"Cookie": self.cookie})