我目前正在尝试向服务器发出HTTP/2请求。
我意识到当使用HTTP/2时,我的请求失败了。(从服务器获得“不受支持”)
python--请求不支持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等机器人检测。我的印象是它使用特殊的证书--这些是我当时做的步骤。
然后我点击了导出导出编码二进制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
发布于 2022-02-03 14:33:40
我想您早就解决了这个问题,但是对于其他类似的问题,服务器的响应表示不支持可能意味着服务器不支持HTTP2。
为了能够通过HTTP2提出请求,客户端不仅必须能够完成请求,而且服务器还必须积极支持HTTP2,否则您可能会得到上面的响应。
https://stackoverflow.com/questions/66203035
复制相似问题