Python POST 请求 发送 Form-data 类型数据的一个坑点
Python 的 POST请求的出现的问题:
"Content-Type": "multipart/form-data;boundary=----WebKitFormBoundaryTm8YXcJeyKDClbU7",
发送这样类型的数据时,会自动将发送的数据进行分割,但这个时候如果目标限制严格,那么在使用python直接发送Payload的过程中,需要将进行\r\n
的补充。
- 正确的情况
data = '''------WebKitFormBoundaryTm8YXcJeyKDClbU7\r\nContent-Disposition: form-data; name="method"\r\n\r\ngetupload\r\n------WebKitFormBoundaryTm8YXcJeyKDClbU7\r\nContent-Disposition: form-data; name="uploadID"\r\n\r\n1xxxxxxxxxx;--\r\n------WebKitFormBoundaryTm8YXcJeyKDClbU7--'''
- 错误的情况
data = '''------WebKitFormBoundaryTm8YXcJeyKDClbU7
Content-Disposition: form-data; name="method"
getupload
------WebKitFormBoundaryTm8YXcJeyKDClbU7\r\nContent-Disposition: form-data; name="uploadID"
1xxxxxxxxxx;--
------WebKitFormBoundaryTm8YXcJeyKDClbU7--'''
-
分析:
-
关键在于
form-data
在传输的过程中,需要\r\n来间隔, -
但外面直接在 字符串中
回车
形成的效果,看似和\r\n
的效果相同,但是实际的情况中会缺少这两个字符 -
所以在直接传输的过程中,我们需要用
\r\n
来使用,不能直接在字符串中回车。
-
看到这个老哥的文章,才想到可能是这样的错误情况:
https://blog.csdn.net/Chihwei_Hsu/article/details/81943008
2023/10/8
根据使用下来的情况,写了一个函数来直接配套:
def formdatacl(data):
temp = "\r\n".join(data.split("\n"))
return temp
保证输入的数据,按行来分列就可以直接划分成功。 目前使用都可以