Как я могу использовать библиотеку запросов Python для загрузки файла в форму ASP - PullRequest
0 голосов
/ 10 января 2020

Здравствуйте, мне нужно отправить запрос POST на сервер, но когда сделать это с помощью веб-формы работает, но когда я пытаюсь сделать это с помощью моего сценария не удается. Я захватил запрос веб-формы, и я обнаружил, что Есть несколько скрытых полей, мой вопрос необходимо заполнить поля по запросу, чтобы сервер получил файлы, а также как я знаю, что мой скрипт отправляет файл, потому что я не могу найти способ проанализировать поступающий запрос POST из моего скрипта

и это мой код:

import os
import requests
import pathlib
from datetime import datetime
from request_negotiate_sspi import HttpNegotiateAuth

partition = 'D:'
container_file = 'file'
current_day = datetime.now().strftime('%d-%m-%y')
file = 'test.pdf'

file_to_open = pathlib.Path(partition + os.sep, container_file, current_day) / file

print(file_to_open)
print(file_to_open.exists())

url = 'http://test/testfile/Escaneos.asp?Tabla=0&Norden=87655&Suministro=22002020'

headers_b = {
    'Accept': 'text/html, application/xhtml+xml, application/xml; q=0.9, */*; q=0.8',
    'Accept-Encoding': 'gzip, deflate',
    'Content-Type': 'multipart/form-data; boundary=---------------------------7e4228372205d8',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18363'
}

payload_b = {
    '__EVENTTARGET': '',
    '__EVENTARGUMENT': '',
    '__VIEWSTATE': '/wEPDwUKLTY1MDEyNzM2NA9kFgJmDw8WAh4HVXN1YXJpbwUWRElTVFJJTFVaXHUyMTJlbGVvdXQwNmQWAgIDDxYCHgdlbmN0eXBlBRNtdWx0aXBhcnQvZm9ybS1kYXRhFgQCAQ8PFgIeBFRleHQFFkRJU1RSSUxVWlx1MjEyZWxlb3V0MDZkZAIFD2QWBgIBDw8WAh8CBRNDYXJnYSBkZSBEb2N1bWVudG9zZGQCAw8PFgIfAgUIMjYwMzM5MDBkZAIFDw8WAh8CBQc5NjI5MTk3ZGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFDWN0bDAwJGltZ1JheW92tOMHAV95MC8/LkqO3Nz2vISjIW8nFEjJiIThN8uA0g==',
    '__VIEWSTATEGENERATOR': 'D6CF7AF4',
    '__PREVIOUSPAGE': 'cJKI_DRzuo4AsKkBtqHoqbXYDVyPvW4YwAeqppwlabjLjLWLIx8DQtvgaPxygyP4L-NsZHyYMkxLYC93l5-2-0sFIewOPOFHFnnLPgU1wOk1',
    '__EVENTVALIDATION': '/wEdAAllE0aL9+Euv23n4PZ2lgT9Qe8rlcNNVfMRU7f2BJ7GDOOZNeH5D0vCvytEd/fAyquBQWWA1TV65wf/VpowxSo+wlDMpoNzsp0wbz938lX5iz6m2VrnTMTJ5uHELpESweW2cyG2Iuwfd+ozggSR0jvF18AZjpcRCWqjF5UQ57USZJAezsXQQsd5ZahyAMFIPdXn5SYjThCv53g5Rom2wjSEjXvQpUqhsKdIt6ouuKiiuA==',
    'ctl00$ContentPlaceHolder$txtSuministro': '22002020',
    'ctl00$ContentPlaceHolder$txtRegistro': '87655',
}

files_b = {'ctl00$ContentPlaceHolder$fuEscaneo': open(file_to_open, 'rb').read()}

req = requests.post(url, files=files_b, headers=headers_b, data=payload_b, auth=HttpNegotiateAuth())

# Allways return 200 if nothing goes wrong
print(req.status_code)


и форма html выглядит примерно так:

<form name="aspnetform" method="post" action="Escaneos.asp?Tabla=0&Norden=87655&Suministro=22002020">
    <input type="file" name="ct100$ContentPlaceholder$fuEscaneo" id="ct100_ContentPlaceholder_fuEscanero">
</form>

Моя проблема в том, что когда Я отправляю форму, все кажется правильным, но ничего не идет вверх. Всегда возвращайте 200, но в списке файлов.

анализируя содержимое метода POST Я скопировал содержимое успешного заголовка, и проблема сохраняется.

Я создал форму с Django проверить, была ли проблема в том, как я размещал запрос, но в форме, которую я создаю, проблем нет.

Спасибо за ваше внимание

РЕДАКТИРОВАТЬ:

Вот запросы Post отправить его через браузер

-----------------------------7e427e2810f02cc
Content-Disposition: form-data; name="__EVENTTARGET"


-----------------------------7e427e2810f02cc
Content-Disposition: form-data; name="__EVENTARGUMENT"


-----------------------------7e427e2810f02cc
Content-Disposition: form-data; name="__VIEWSTATE"

/wEPDwUKLTY1MDEyNzM2NA9kFgJmDw8WAh4HVXN1YXJpbwUWRElTVFJJTFVaXHUyMTJlbGVvdXQwNmQWAgIDDxYCHgdlbmN0eXBlBRNtdWx0aXBhcnQvZm9ybS1kYXRhFgQCAQ8PFgIeBFRleHQFFkRJU1RSSUxVWlx1MjEyZWxlb3V0MDZkZAIFD2QWBgIBDw8WAh8CBRNDYXJnYSBkZSBEb2N1bWVudG9zZGQCAw8PFgIfAgUIMjYwMzM5MDBkZAIFDw8WAh8CBQc5NjI5MTkxZGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFDWN0bDAwJGltZ1JheW9tYXklhvK2ad/384cZ/lYrHmactJNE2ef4uOUS55s8zQ==
-----------------------------7e427e2810f02cc
Content-Disposition: form-data; name="__VIEWSTATEGENERATOR"

D6CF7AF4
-----------------------------7e427e2810f02cc
Content-Disposition: form-data; name="__PREVIOUSPAGE"

cJKI_DRzuo4AsKkBtqHoqbXYDVyPvW4YwAeqppwlabjLjLWLIx8DQtvgaPxygyP4L-NsZHyYMkxLYC93l5-2-0sFIewOPOFHFnnLPgU1wOk1
-----------------------------7e427e2810f02cc
Content-Disposition: form-data; name="__EVENTVALIDATION"

/wEdAAmvSTuzE6mgMlO0zJ8Kk9+RQe8rlcNNVfMRU7f2BJ7GDOOZNeH5D0vCvytEd/fAyquBQWWA1TV65wf/VpowxSo+wlDMpoNzsp0wbz938lX5iz6m2VrnTMTJ5uHELpESweW2cyG2Iuwfd+ozggSR0jvF18AZjpcRCWqjF5UQ57USZJAezsXQQsd5ZahyAMFIPdUr/jTS9khtVWUW16mWC3SuaS0ePPfooG0DNUysNISfBw==
-----------------------------7e427e2810f02cc
Content-Disposition: form-data; name="ctl00$ContentPlaceHolder$txtSuministro"

26033900
-----------------------------7e427e2810f02cc
Content-Disposition: form-data; name="ctl00$ContentPlaceHolder$txtRegistro"

9629191
-----------------------------7e427e2810f02cc
Content-Disposition: form-data; name="ctl00$ContentPlaceHolder$fuEscaneo"; filename="D:\26033900\69_extractPDFpages_Page002.pdf"
Content-Type: application/pdf

У меня 2 сомнения

как я могу отладить запрос, который я посылаю из сценария на сервер

и, если необходимо, в качестве параметров укажите все скрытые входные данные в форме

...