Преобразование PHP curl_setopt () в запросы Python и в CLI curl

Я пытаюсь преобразовать следующее PHP curl_setopt () к эквиваленту в пределах питон Запросы а также для CLI curl. Для Python, если это невозможно в Запросы, Я прибегну к помощи pycurl.

curl_setopt($process, CURLOPT_RETURNTRANSFER, true);
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false);

Вот рабочая PHP завиток код:

$params = array(
'username' => $username,
'password' => $password
);

$params_string = json_encode($params);

$process = curl_init($url);
curl_setopt($process, CURLOPT_RETURNTRANSFER, true);
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($process, CURLOPT_POSTFIELDS, $params_string);

$headers = array();
$headers[] = 'Content-Type: application/json';
curl_setopt($process, CURLOPT_HTTPHEADER, $headers);

$data = curl_exec ($process);

curl_close ($process);

Я в недоумении, что мне нужно установить в Python Requests для тех двоих PHP curl_setopt (s).

И я попробовал следующее в CLI curl, но я получил Неверный запрос ошибка:

AUTHENTICATE_DATA="usename=${USERNAME}&password=${PASSWORD}"
AUTHENTICATE_RESPONSE=$(curl \
-X POST \
-H 'Content-Type: application/json' \
--data-urlencode "${AUTHENTICATE_DATA}" \
-v \
${AUTHENTICATE_URL})

echo ${AUTHENTICATE_RESPONSE}

Что мне нужно?

Спасибо, благодарю за помощь.

3

Решение

curl_setopt($process, CURLOPT_RETURNTRANSFER, true);

Эта опция просто говорит о том, что результат curl_exec() передается в возвращаемую переменную. В командной строке по умолчанию выводится стандартный вывод.

curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false);

Это очень плохая идея, и она сделает вас уязвимыми для атак «человек посередине». Там нет оправдания, чтобы использовать его. --insecure эквивалентный параметр командной строки

Также стоит отметить, что вы передаете строку JSON в качестве параметра для CURLOPT_POSTFIELDSи нет кодировки JSON, которая происходит с имеющимся у вас кодом CLI.

2

Другие решения

Используя запросы:

import requests

url = 'https://...'
username = 'username'
password = 'supersecret'

# curl_setopt($process, CURLOPT_RETURNTRANSFER, true);
# PHP bashing time: Who in their right minds would create a function
# that spews its return value to stdout by default, unless explicitly
# instructed not to do so.
resp = requests.post(

# $process = curl_init($url);
url,

# $params = array(
#    'username' => $username,
#    'password' => $password
# );
# $params_string = json_encode($params);
# curl_setopt($process, CURLOPT_POSTFIELDS, $params_string);
# $headers[] = 'Content-Type: application/json';
# curl_setopt($process, CURLOPT_HTTPHEADER, $headers);
json=dict(username=username, password=password),

# curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false);
# note: you shouldn't do this, really
verify=False,

)

data = resp.text
# or if you expect json response
data = resp.json()
3

По вопросам рекламы [email protected]