Как я могу преобразовать этот вызов Curl в Python 3? - PullRequest
0 голосов
/ 04 октября 2019

У меня есть следующий локон, который успешно регистрирует меня на веб-сайте. Он возвращает 302 и cookie:

curl \
--verbose \
--request POST \
--data '__EVENTTARGET=&body%3Ax%3AtxtLogin=kingkong%40mailinator.com&body%3Ax%3AbtnLogin=&crypted_pass=736015615f9e251692a6a4aa8a7baa14' \
"https://emma.maryland.gov/page.aspx/en/usr/login"

К сожалению, я должен ввести реальное имя пользователя и зашифрованный пароль учетной записи. иначе этот завиток не сработает. Тем не менее, это полностью фиктивная учетная запись, в которой НЕТ личных данных. Поэтому, пожалуйста, не сердитесь на меня.

Я хочу преобразовать ее вКод Python3 с использованием requests.post(). Поэтому я сделал этот код:

>>> requests.post(
...     url='https://emma.maryland.gov/page.aspx/en/usr/login',
...     data={
...         '__EVENTTARGET': '',
...         'body:x:txtLogin': 'kingkong@mailinator.com',
...         'body:x:btnLogin': '',
...         'crypted_pass': '736015615f9e251692a6a4aa8a7baa14'
...     }
... )
<Response [200]>

Но ответ, который я получаю из кода Python3 (200), не совпадает с ответом, который я получаю от Curl (302). Это означает, что целевой сервер обнаруживает разницу между двумя запросами.

Как я могу преобразовать curl в Python3, который отправляет точно такой же основной HTTP-запрос?

1 Ответ

2 голосов
/ 04 октября 2019

Ваш код requests на самом деле умнее, чем команда cURL.

HTTP 302 - это перенаправление, cURL не последовал за ним и дал вам первый полученный ответ. Вы можете заставить cURL следовать перенаправлению с помощью -L: Есть ли способ следовать перенаправлениям с помощью командной строки cURL?

Код requests, следующий за перенаправлением, дал вам окончательный ответ, который оказался HTTP 200.

Попробуйте команду curl с -L и посмотрите, получите ли вы HTTP 200 или нет.

Кроме того, вы можете попросить requests не следовать перенаправлениям с помощью опции allow_redirects=False: Существует ли простой способ запросить URL-адрес в python и НЕ следовать перенаправлениям?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...