python模拟浏览器文件上传,csrf放行

时间:2023-03-09 16:53:22
python模拟浏览器文件上传,csrf放行

服务器端视图函数

from django.shortcuts import render,HttpResponse
from django.views.decorators.csrf import csrf_exempt # Create your views here.
@csrf_exempt#这个可以对csrf进行放行
def up(request,):
file_list = request.FILES.getlist('save_data')
for i in file_list:
for x in i :
print(x)
return HttpResponse('ok')

客户端

import time
import datetime
import hashlib
import os
import random
import sys
import requests
import json from requests_toolbelt.multipart.encoder import MultipartEncoder
url = 'http://127.0.0.1:8000/up/'#文件上传的url headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0',
'Referer': url
} multipart_encoder = MultipartEncoder(
fields = {
'save_name': '论坛.txt',#文件名
'save_data': ('论坛.txt', open('论坛.txt', 'rb'), 'application/octet-stream')
},
boundary = '-----------------------------' + str(random.randint(1e28, 1e29 - 1))
) headers['Content-Type'] = multipart_encoder.content_type
#请求头必须包含一个特殊的头信息,类似于Content-Type: multipart/form-data; boundary=${bound} responseStr = requests.post(url, data=multipart_encoder, headers=headers)
print(responseStr.text)#服务器的响应