我目前正在尝试向服务器发出 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)
我的请求没有出错,但我从服务器得到“不支持”。我正在尝试向耐克公共登录后端端点提出请求,我知道他们有 akamai 等机器人检测。我的印象是它使用特殊证书,这些是我当时所做的步骤
- 去了chrome浏览器。
- 点击“Certificate” 证书 然后我点击“details” detailspage
然后我点击 export export 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