1

我想用我的远程服务器实现对蝗虫的负载测试,但我不想禁用 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})
4

3 回答 3

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

于 2017-03-17T19:06:44.300 回答
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
于 2017-03-18T00:22:41.737 回答
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 表单元素中获取令牌键。

于 2017-03-22T08:31:43.020 回答