Команда Curl в Python

Я использую Python3.9. У меня есть команда Curl ниже:

curl -x proxy1.req:8080 --location --request POST 'https://auth.trst.com/2.0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'ct_id=33d3e1-4988-9a08-e7773634ba67' \
--data-urlencode 'ct_sec=56GgtoQA8.WIH9nFM3Eh3sT~cwH' \
--data-urlencode 'scope=https://auth.trst.com/settlement/.default' \
--data-urlencode 'grant_type=client_credentials'

Который возвращает ответ, как показано ниже:

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1355  100  1163  100   192   1340    221 --:--:-- --:--:-- --:--:--  1566{"access_token":"eyJhbGciOiJSUzI1NiIsImtpZCI6Ilg1ZVhrNHh5b2pORnVtMWtsMll0djhkbE5QNC1jNTdkTzZRR1RWQndhTmsiLCJ0eXAiOiJKV9SRSIsInNjcCI6ImRlZmF1bHQiLCJhenBhY3IiOiIxIiwic3ViIjoiZWI3OTU1OTktMzZhMy00SqQe5v9xuYRSfOb_gMgpt7Kez8B0dsnJ_SmT17Hbd7dXLS5p5xTva2iteHp80E2PBYy8jIdtDFcyyC3JSb_d1jzeRrtn5ILlR9eMiMMQa5k65rEXuWYlDpCCtyNS0vcbzA6raxuT1ux8-riCRnGe_TX-VP7FTzPxE7bN1N6N60Ahm7cvzmdDjtKgga0ltybKT2LKtT_hwIwYnuPOdYCGy5jYQ78kaZH86PVSXBuzHw","token_type":"Bearer","not_before":1696859605,"expires_in":3600,"expires_on":1696863205,"resource":"6f4cd1ba-556d-4cb3-ab69-12eac3243387"}

Я хочу выполнить эту команду curl в Python и сохранить значение токена в переменной, чтобы можно было использовать эту переменную для дальнейшей логики в Python, но не знаю, как выполнить эту команду curl в Python.

Curl — это HTTP-клиент, предназначенный для использования в качестве CLI. Если вы хотите использовать ту же функциональность, в Python используйте такие библиотеки, как requests.

Abdul Niyas P M 09.10.2023 16:18

Вы имеете в виду, что мне нужно переписать логику завитка в Python, используя модули?

Andrew 09.10.2023 16:19

возможно, вы можете рассмотреть subprocess. docs.python.org/3/library/subprocess.html

Amzar 09.10.2023 16:19

Вы можете выполнять внешние команды в Python, используя subprocess. Однако использование библиотек, таких как запросы, имеет свои преимущества (скорость/отсутствие необходимости вручную анализировать ответ и т. д.).

Abdul Niyas P M 09.10.2023 16:22
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
68
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Как сказал @AbdulNiyasPM:

Curl — это HTTP-клиент, предназначенный для использования в качестве CLI. Если вы хотите использовать ту же функциональность, в Python используйте такие библиотеки, как запросы.

Итак, вы можете сделать это следующим образом:

import requests

# Request URL
url = 'https://auth.trst.com/2.0'

# Headers
headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
}

# Payload
payload = {
    'ct_id': '33d3e1-4988-9a08-e7773634ba67',
    'ct_sec': '56GgtoQA8.WIH9nFM3Eh3sT~cwH',
    'scope': 'https://auth.trst.com/settlement/.default',
    'grant_type': 'client_credentials'
}

# Proxy URL
proxy_url = 'http://proxy1.baag:8080'

# Make the request with the proxy
response = requests.post(url, headers=headers, data=payload, proxies = {'http': proxy_url, 'https': proxy_url})

# Check if the request was successful (HTTP code 200)
if response.status_code == 200:
    # Parse the JSON response to get the access token
    response_data = response.json()
    access_token = response_data.get('access_token')
    
    # TODO: Use the access token as needed
else:
    # TODO: Handle the error

я только что попробовал и наконец добавил печать (ответ), но он не распечатал значение токена и не вернулся как <Response [200]>

Andrew 09.10.2023 16:34

Вам следует использовать response.text, я добавил его в ответ.

Diego Borba 09.10.2023 16:36

спасибо, сейчас он работает, но теперь он печатает полный ответ, такой же, как тот, который я упоминал в вопросе, используя Curl. Если бы я просто хотел сохранить значение access_token в переменной, это было бы невозможно? Потому что я хочу использовать это значение переменной в дальнейшей логике этого кода.

Andrew 09.10.2023 16:39

Понятно, я улучшил ответ.

Diego Borba 09.10.2023 16:41

Используйте библиотеку requests, чтобы сделать это напрямую, без завитка:

import requests

url = "https://auth.trst.com/2.0"

headers = {"Content-Type":"application/x-www-form-urlencoded"}

data = {"ct_id": "33d3e1-4988-9a08-e7773634ba67",
        "ct_sec": "56GgtoQA8.WIH9nFM3Eh3sT~cwH",
        "scope": "https://auth.trst.com/settlement/.default",
        "grant_type": "client_credentials"}

proxies = { "https" : "proxy1.baag:8080" }

r = requests.post(url, headers=headers, data=data proxies=proxies)

Если библиотека запросов еще не установлена, скачайте ее с помощью pip:

python -m pip install requests

Другие вопросы по теме