如何用Python Requests模块实现Kerberos认证的Curl请求复现?
使用Python Requests实现Kerberos(Negotiate)认证
当然可以!Requests本身默认不支持Kerberos/GSS-Negotiate认证,但借助第三方扩展库requests_kerberos,我们完全能复现你给出的curl命令功能。下面是具体的实现步骤和代码:
第一步:安装依赖库
首先需要安装requests_kerberos,它是Requests的Kerberos认证扩展:
pip install requests_kerberos
第二步:编写Requests代码
下面的代码完全对应你的curl命令 curl -u : --negotiate -k https://example.com/authenticate:
import requests from requests_kerberos import HTTPKerberosAuth, OPTIONAL # 初始化Kerberos认证对象,对应curl的--negotiate和-u : auth = HTTPKerberosAuth(mutual_authentication=OPTIONAL) # 发送请求,verify=False对应curl的-k参数(跳过SSL证书验证) response = requests.get( 'https://example.com/authenticate', auth=auth, verify=False ) # 可以查看响应内容或状态码 print(response.status_code) print(response.text)
代码参数说明
HTTPKerberosAuth(mutual_authentication=OPTIONAL):对应curl的--negotiate和-u :,OPTIONAL表示不需要双向认证,和curl的默认行为一致;如果需要强制双向认证,可以改成REQUIRED。verify=False:完全对应curl的-k参数,用于跳过SSL证书的有效性校验。如果你有合法的证书需要验证,可以去掉这个参数或者传入证书路径。
和pycurl实现的对应关系
这段Requests代码和你之前的pycurl逻辑完全匹配:
pycurl.HTTPAUTH_GSSNEGOTIATE→HTTPKerberosAuthpycurl.USERPWD = ':'→ 由HTTPKerberosAuth自动处理Kerberos票据,无需手动传入空的用户密码pycurl.URL→ Requests的URL参数- 跳过证书验证 →
verify=False
内容的提问来源于stack exchange,提问作者abisko
相关产品推荐
相关产品推荐

