Я использую 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.
Вы имеете в виду, что мне нужно переписать логику завитка в Python, используя модули?
возможно, вы можете рассмотреть subprocess. docs.python.org/3/library/subprocess.html
Вы можете выполнять внешние команды в Python, используя subprocess. Однако использование библиотек, таких как запросы, имеет свои преимущества (скорость/отсутствие необходимости вручную анализировать ответ и т. д.).






Как сказал @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]>
Вам следует использовать response.text, я добавил его в ответ.
спасибо, сейчас он работает, но теперь он печатает полный ответ, такой же, как тот, который я упоминал в вопросе, используя Curl. Если бы я просто хотел сохранить значение access_token в переменной, это было бы невозможно? Потому что я хочу использовать это значение переменной в дальнейшей логике этого кода.
Понятно, я улучшил ответ.
Используйте библиотеку 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
Curl — это HTTP-клиент, предназначенный для использования в качестве CLI. Если вы хотите использовать ту же функциональность, в Python используйте такие библиотеки, как
requests.