今天遇到一种 Content-Type=multipart/form-data 的post请求,以下是Charles抓到的包
从上面的
multipart/form-data
格式发送的请求的样式来看,它包含了多个 Parts,每个 Part 都包含头信息部分,Part 头信息中必须包含一个Content-Disposition
头,其他的头信息则为可选项, 比如Content-Type
等。Content-Disposition
包含了type
和 一个名字为name
的parameter
,type
是form-data
,name
参数的值则为表单控件的名字,如果是文件,那么还有一个filename
参数,值就是文件名。
例如:Content-Disposition: form-data; name="mobile"; filename="***.txt"
boundary
每个部分使用--boundary
分割开来,最后一行使用--boundary--
结尾
接下来是python模拟post请求
-
headers
里一定不要加Content-Type
import requests
headers = {
'Cookie': '',
'User-Agent': 'YDT_ANDROID_CLIENT_V1.0.1',
'Host': '121.196.225.245:28443',
'Connection': 'Keep-Alive',
'Accept-Encoding': 'gzip',
}
url = 'https://121.196.225.245:28443/ydtservice/app/ssl/user/v1/exist'
files = {'mobile': (None, '18832903103')}
res = requests.post(url, files=files, headers=headers, verify=False)
print(res.text)
结果:
{"msg":"OK","code":0,"act":"/ydtservice/app/ssl/user/v1/exist","data":false}