HTTP/2 Python-запросы, HTTPX
В настоящее время я пытаюсь отправить запрос HTTP / 2 на сервер.
Я понимаю, что при использовании HTTP / 2 мой запрос не выполняется. (С сервера я получаю сообщение «Не поддерживается»)
python-requests не поддерживает HTTP / 2, поэтому я использовал сборку оболочки для запросов HTTPX, которая поддерживает HTTP / 2.
r = httpx.Client(http2=True)
data = '{"username":"'+username+'","password":"'+password+'","client_id":"someclientid","ux_id":"com.nike.commerce.snkrs.ios","grant_type":"password"}'
response = r.post('https://unite.nike.com/login', headers=self.login_header, params=params, data=data)
Мои запросы не выдают ошибок, но с сервера я получаю сообщение «Не поддерживается». Я пытаюсь сделать запрос к конечной точке общедоступного входа в систему Nike, я понимаю, что у них есть обнаружение ботов, таких как akamai и т. Д. У меня сложилось впечатление, что он использует специальный сертификат. Это шаги, которые я тогда сделал
- Зашел в браузер Chrome.
- Нажмите кнопку «Сертификат» сертификат Затем я нажимаю «данные» detailspage
Затем я нажимаю экспорт, экспорт, двоичный код в формате DER x.509 (CER)
Если я все делаю правильно, то конвертирую .cer в .pem
openssl x509 -inform der -in exported_certificate.cer -out certificate.pem
Затем я указываю
export SSL_CERT_FILE='certificate.pem'
Когда я снова делаю запрос, я получаю следующую ошибку:
httpx.ConnectError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123)
В конечном итоге это клиентский запрос, который я пытаюсь воспроизвести.
Запрос, который я пытаюсь выполнить
Согласно снимку экрана мое устройство iOS делает запрос с зашифрованным именем
TLS_AES_256_GCM_SH384
, использует
TLSv1.3
1 ответ
Я предполагаю, что вы давно решили эту проблему, но для других подобных проблем ответ сервера с сообщением «Не поддерживается» может означать, что сервер не поддерживает HTTP2.
Чтобы петиция могла быть отправлена через HTTP2, не только клиент должен иметь возможность сделать это, но и сервер должен также активно поддерживать HTTP2, иначе вы можете получить ответ, подобный приведенному выше.