我想用我的远程服务器实现用locust加载测试,但我不想禁用csrf功能,我怎样才能获得csrf_token或通过它
class UserBehavior(TaskSet):
@task(1)
def login(self):
self.client.get("/securities/login")
token = "how to get it"
self.client.post("/securities/login",{"username":"test",
"password":"123",
"csrf_token":token})
答案 0 :(得分:0)
result = self.client.get("/securities/login")
token = result.cookies['_csrf_token'] # i think this is the name anyway you could always print result.cookies to find out
至少我认为......我知道这在djanjo中起作用
用烧瓶可能需要多做一些工作......请参阅这个要点https://gist.github.com/singingwolfboy/2fca1de64950d5dfed72
答案 1 :(得分:0)
如果你使用Flask_WTF,你可以像这样获得csrf token
:
from flask import Flask
from flask_wtf import FlaskForm
app = Flask(__name__)
app.secret_key = 'random string'
class HelloForm(FlaskForm):
# ...
@app.route('/', methods=['GET', 'POST'])
def index():
form = HelloForm()
token = form.csrf_token.data
相反,您也可以自己生成令牌:
from hashlib import md5
def generate_csrf_token():
token = md5(app.secret_key).hexdigest()
return token
答案 2 :(得分:0)
我找到了一种找到令牌的方法
import re
class UserBehavior(TaskSet):
@task(1)
def login(self):
result = self.client.get("/securities/login")
token = re.search(r'[0-9]{10}##[a-z0-9]{40}',result.text).group(0)
print token
和re(RegularExpression)之外的另一种方法是使用PyQuery从html表单元素中获取令牌密钥。