@HardX

Python 3.10 requests как сформировать не стандартный post?

Обращаюсь с api портала, нужно сформировать необычный post следующего вида:

POST /api/v1/executions/140186100/images?question_component_id=28307 HTTP/1.1

access-token: wrOh7qBMw4KdUHn1v7xHWw

client: 7wj3UQrFyfQNoPuIMTZ7tg

uid: 5043023587_27@check.mo

X-APP-VERSION: 2.5.7044

X-APP-TYPE: knd_mo

X-APP-BUILD-NUMBER: 70440
X-PLATFORM: android
X-PLATFORM-VERSION: 29
X-DEVICE-NAME: Redmi K20
X-PUSH-TOKEN: fZOyd0fgdXc:APA91bFsHed6kfPCq7jeuW5NJohD2LCoaD-dRJCFYt4rOgD70CpaYcc_jMF3qEt0Hv7igv1w4Nn1AxPAb5WUzetX8PHO5-nshYLX-jkZVgnX2lilRrTIA-qS71cDfImnnvFiw1bCPkt9
X-UNIQUE-TOKEN: 6d84536c21a0f31a
X-MOCK-GPS-ENABLED: false
Content-Language: ru
Content-Type: multipart/form-data; boundary=e8a30023-286b-464b-b3af-4d1c050e5be3
Content-Length: 538200
Host: somehost #изменил в целях конфиденциальности
Connection: Keep-Alive
Accept-Encoding: gzip
Cookie: _top_control_session=0pYFbmV3kYtEU45UgNMsG5pcE29nFwqI%2F83ChAq0LQeViO3w2Dx8xEGPImk4Qsv7LTxdmwYwIGNqujLFEstDjjm6XLVP%2B0y%2FzQNOT8vbhF93%2F14h4DaQ8njA3Mm02Z%2Brj70qxnvYVr6O8k4OfbPdg%2Bdsig%3D%3D--ZWQU2xkZXTXPXOct--6qXZOvJChTnRgyPQqAUYDQ%3D%3D
User-Agent: okhttp/3.14.7

--e8a30023-286b-464b-b3af-4d1c050e5be3
Content-Disposition: form-data; name="type"
Content-Transfer-Encoding: binary
Content-Type: text/plain; charset=utf-8
Content-Length: 8

formData
--e8a30023-286b-464b-b3af-4d1c050e5be3
Content-Disposition: form-data; name="image"; filename="8049_8753_28307_0_1652345430908_.jpg"
Content-Type: multipart/form-data
Content-Length: 537768

����(ExifMM*... #фото

....
--e8a30023-286b-464b-b3af-4d1c050e5be3

#информация взята с перехваченного пакета pcap

6280b555f0ed2746226301.jpeg
  • Вопрос задан
  • 214 просмотров
Решения вопроса 1
@HardX Автор вопроса
Добился чего-то подобного:
код:
file={'type':(None,'formData','text/plain; charset=utf-8', {'Content-Transfer-Encoding': 'binary','Content-Length': len('formData')}),
'image':('image.jpg',open('noch-gory-priroda-dom_resize.jpg', 'rb'),'multipart/form-data',{'Content-Length': 'need size'})}

На выходе:

POST /post HTTP/1.1
User-Agent: okhttp/3.14.7
Accept-Encoding: gzip
Accept: */*
access-token: token
client: client
uid: login
X-APP-VERSION: 2.5.7044
X-APP-TYPE: knd_mo
X-APP-BUILD-NUMBER: 70440
X-PLATFORM: android
X-PLATFORM-VERSION: 29
X-DEVICE-NAME: Redmi K20
X-MOCK-GPS-ENABLED: false
Content-Language: ru
Host: knd.mosreg.ru
Content-Length: 111814
Content-Type: multipart/form-data; boundary=cf4a51af78e4c55b5a70893e3f5bfde6
Connection: keep-alive

--cf4a51af78e4c55b5a70893e3f5bfde6
Content-Disposition: form-data; name="type"
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: binary
Content-Length: 8

formData
--cf4a51af78e4c55b5a70893e3f5bfde6
Content-Disposition: form-data; name="image"; filename="image.jpg"
Content-Type: multipart/form-data
Content-Length: 111418

���� # тут image
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
gnifajio
@gnifajio
Совершенствуюсь каждый день
Это преобразуй в питоновский словарь:

X-APP-TYPE: knd_mo
X-APP-BUILD-NUMBER: 70440
X-PLATFORM: android
...
Content-Transfer-Encoding: binary
Content-Type: text/plain; charset=utf-8
Content-Length: 8

==>

data = {
    "X-APP-TYPE": "knd_mo",
    "X-APP-BUILD-NUMBER": "70440",
    "X-PLATFORM": "android",
    ...
    "Content-Transfer-Encoding": "binary",
    "Content-Type": "text/plain; charset=utf-8",
    "Content-Length": "8"
}


А потом передавай в requests.post
requests.post(url, data = data)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы