requests.post处理Content-Type: multipart/form-data的请求
参考文章:
https://www.cnblogs.com/woaixuexi9999/p/9263951.html
抓包app后,相关api 是 post 的这个形式 multipart/form-data
需要用Python代码模拟请求
代码如下
点击查看代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from requests_toolbelt import MultipartEncoder
import requests
# url = 'https://mall.shopee.vn/api/v4/search/image_search/image_search'
url = 'http://127.0.0.1:8001'
headers = {
"x-api-source": "rn",
"referer": "https://mall.shopee.vn",
"x-csrftoken": "MF24Q8kO0Jkugn4JBEtJY7tw37WRuecK",
"x-search-entrance": "HOME",
"x-search-image-source": "gallery_panel",
"Referer": "https://mall.shopee.vn/",
"X-CSRFToken": "s6TeryKi4vdKXxbWYg4qtEJItUE4UVa9",
"X-Shopee-Client-Timezone": "Asia/Shanghai",
"Client-Request-Id": "fe5d0795-2cf5-4304-80fe-328120dc5938.896",
# "Content-Type": "multipart/form-data;", 这个请求头 不用加,加了反而有问题,可能是 post 里使用 files 就默认是这个?具体没有深究
"Content-Length": "57569",
"Host": "mall.shopee.vn",
"User-Agent": "Android app Shopee appver=32334 app_type=1 platform=native_android os=27 Cronet/102.0.5005.61",
"Connection": "Keep-Alive",
"Accept-Encoding": "gzip, deflate, br",
"af-ac-enc-dat": "",
"af-ac-enc-id": "",
"af-ac-enc-sz-token": "",
"Cookie": ""
}
data1 = {"a": "b", "c": "d"}
data = {
'athenaCameraParams': (None, '{}'),
'bounding_box': (None, '48,23,386,616'),
'cat_id': (None, '0'),
'cat_ids': (None, 'undefined'),
'category': (None, 'Tất cả'),
'is_cod': (None, 'undefined'),
'is_mall': (None, 'undefined'),
'item_id': (None, 'undefined'),
'label_ids': (None, 'undefined'),
'language': (None, '3'),
'limit': (None, '20'),
'md5': (None, 'imagesearch_'),
'offset': (None, '20'),
'result_type': (None, '0'),
'shop_id': (None, 'undefined'),
'sort_type': (None,'0'),
}
html = requests.post(url, headers=headers, verify=False, data=data1, files=data)
print(html.status_code)
print(html.text)
点击查看代码
import requests
url = "http://www.httpbin.org/post"
data = {
'age':28,
'city':'深圳',
}
# 折中方案,参数按如下方式组织,也是模拟multipart/form-data的核心
params = {"username": ('username.txt', open('1.txt','r')), "password": (None, "abcd1234"),"location":('location.txt','福田区'),"picture":('1.jpg',open(r'C:\\Users\\1.jpg','rb'))}
res = requests.post(url, data=data,files=params)
点击查看代码
--1617b70c8a3c4bc49a9a3ae659fb224fContent-Disposition: form-data; name="age"28--1617b70c8a3c4bc49a9a3ae659fb224fContent-Disposition: form-data; name="city"深圳--1617b70c8a3c4bc49a9a3ae659fb224fContent-Disposition: form-data; name="username"; filename="username.txt"hello world!--1617b70c8a3c4bc49a9a3ae659fb224fContent-Disposition: form-data; name="password"abcd1234--1617b70c8a3c4bc49a9a3ae659fb224fContent-Disposition: form-data; name="location"; filename="location.txt"福田区--1617b70c8a3c4bc49a9a3ae659fb224fContent-Disposition: form-data; name="picture"; filename="1.jpg**二进制数据就不显示了**
--1617b70c8a3c4bc49a9a3ae659fb224f

浙公网安备 33010602011771号